#include "stdafx.h" #include "pbrush.h" #include "settings.h" #include #ifdef _DEBUG #undef THIS_FILE static CHAR BASED_CODE THIS_FILE[] = __FILE__; #endif #include "memtrace.h" extern BOOL NEAR g_bDriverCanStretch; extern BOOL NEAR g_bShowAllFiles; /***************************************************************************/ static TCHAR NEAR mszView[] = TEXT("View"); static TCHAR NEAR mszNoStretching[] = TEXT("NoStretching"); static TCHAR NEAR mszShowAllFiles[] = TEXT("ShowAllFiles"); static TCHAR NEAR mszShowThumbnail[] = TEXT("ShowThumbnail"); static TCHAR NEAR mszShowText[] = TEXT("ShowTextTool"); static TCHAR NEAR mszSnapToGrid[] = TEXT("SnapToGrid"); static TCHAR NEAR mszGridExtent[] = TEXT("GridExtent"); static TCHAR NEAR mszBMPWidth[] = TEXT("BMPWidth"); static TCHAR NEAR mszBMPHeight[] = TEXT("BMPHeight"); static TCHAR NEAR mszThumbXPos[] = TEXT("ThumbXPos"); static TCHAR NEAR mszThumbYPos[] = TEXT("ThumbYPos"); static TCHAR NEAR mszThumbWidth[] = TEXT("ThumbWidth"); static TCHAR NEAR mszThumbHeight[] = TEXT("ThumbHeight"); static TCHAR NEAR mszCurrentUnits[] = TEXT("UnitSetting"); static TCHAR NEAR mszText[] = TEXT("Text"); static TCHAR NEAR mszFaceName[] = TEXT("TypeFaceName"); static TCHAR NEAR mszPointSize[] = TEXT("PointSize"); static TCHAR NEAR mszCharSet[] = TEXT("CharSet"); static TCHAR NEAR mszBold[] = TEXT("Bold"); static TCHAR NEAR mszUnderline[] = TEXT("Underline"); static TCHAR NEAR mszItalic[] = TEXT("Italic"); static TCHAR NEAR mszVertEdit[] = TEXT("VerticalEdit"); static TCHAR NEAR mszPositionX[] = TEXT("PositionX"); static TCHAR NEAR mszPositionY[] = TEXT("PositionY"); static TCHAR NEAR mszTextPen[] = TEXT("TextPen"); static TCHAR NEAR mszColors[] = TEXT("Colors"); static TCHAR NEAR mszNumberOfColors[] = TEXT("NumberOfColors"); static TCHAR NEAR mszSoftware[] = TEXT("Software"); static TCHAR NEAR mszWindowPlacement[] = TEXT("WindowPlacement"); /***************************************************************************/ void OpenAppKey(LPCTSTR pszKeyName, HKEY *phk) { *phk = NULL; CRegKey rkSoftware; if (rkSoftware.Create(HKEY_CURRENT_USER, mszSoftware) != ERROR_SUCCESS) { return; } CString cszSubKey; if (!cszSubKey.LoadString(IDS_REGISTRY_PATH)) { return; } CRegKey rkSubKey; if (rkSubKey.Create(rkSoftware, cszSubKey) != ERROR_SUCCESS) { return; } // // use the app's profile name instead of the // localizable app name // CRegKey rkAppKey; if (rkAppKey.Create(rkSubKey, theApp.m_pszProfileName) != ERROR_SUCCESS) { return; } if (RegOpenKey(rkAppKey, pszKeyName, phk) != ERROR_SUCCESS) { return; } } void CPBApp::LoadProfileSettings() { CWinApp::LoadStdProfileSettings( ); BOOL bNoStretch = (BOOL)GetProfileInt( mszView, mszNoStretching, FALSE ); g_bDriverCanStretch = ! bNoStretch; m_bShowThumbnail = (BOOL)GetProfileInt( mszView, mszShowThumbnail , FALSE ); g_bShowAllFiles = (BOOL)GetProfileInt( mszView, mszShowAllFiles, FALSE ); int iX = GetProfileInt( mszView, mszBMPWidth , 0 ); int iY = GetProfileInt( mszView, mszBMPHeight, 0 ); if (! iX || ! iY) { iX = 0; iY = 0; } m_sizeBitmap = CSize( iX, iY ); HKEY hkView; OpenAppKey(mszView, &hkView); if (hkView) { DWORD dwType = REG_BINARY; DWORD dwSize = sizeof(m_wpPlacement);; if (RegQueryValueEx(hkView, mszWindowPlacement, 0, &dwType, (LPBYTE)&m_wpPlacement, &dwSize)!= ERROR_SUCCESS || dwType!=REG_BINARY || dwSize!=sizeof(m_wpPlacement)) { memset((LPVOID)&m_wpPlacement, 0, sizeof(m_wpPlacement)); } RegCloseKey(hkView); } int iW; int iH; CPoint ptPos; CSize size; iX = GetProfileInt( mszView, mszThumbXPos , 0 ); iY = GetProfileInt( mszView, mszThumbYPos , 0 ); iW = GetProfileInt( mszView, mszThumbWidth , 0 ); iH = GetProfileInt( mszView, mszThumbHeight, 0 ); if (iX && iY && iW && iH) { size = CSize( iW, iH ); ptPos = CheckWindowPosition( CPoint( iX, iY ), size ); m_rectFloatThumbnail = CRect( ptPos, size ); } m_iCurrentUnits = GetProfileInt( mszView, mszCurrentUnits, 0 ); m_bShowTextToolbar = (BOOL)GetProfileInt ( mszText, mszShowText , TRUE ); m_iPointSize = GetProfileInt ( mszText, mszPointSize, 0 ); m_iBoldText = GetProfileInt ( mszText, mszBold , 0 ); m_iUnderlineText = GetProfileInt ( mszText, mszUnderline, 0 ); m_iItalicText = GetProfileInt ( mszText, mszItalic , 0 ); m_iVertEditText = GetProfileInt ( mszText, mszVertEdit, -1 ); m_iPosTextX = GetProfileInt ( mszText, mszPositionX, 0 ); m_iPosTextY = GetProfileInt ( mszText, mszPositionY, 0 ); m_strTypeFaceName = GetProfileString( mszText, mszFaceName , NULL); m_iCharSet = GetProfileInt ( mszText, mszCharSet , -1 ); if (m_iCharSet == -1) { CHARSETINFO csi; if (!TranslateCharsetInfo((DWORD*)UIntToPtr(GetACP()), &csi, TCI_SRCCODEPAGE)) csi.ciCharset=ANSI_CHARSET; m_iCharSet = csi.ciCharset; } m_iPenText = GetProfileInt ( mszText, mszTextPen , 0 ); m_iSnapToGrid = GetProfileInt( mszView, mszSnapToGrid, 0 ); m_iGridExtent = GetProfileInt( mszView, mszGridExtent, 1 ); m_pColors = new COLORREF[16]; if (m_pColors != NULL) { TCHAR szNumber[8]; int iColors = GetProfileInt( mszColors, mszNumberOfColors, 0 ); for (int i = 0; i < iColors; i++) { _Itoa( i, szNumber, 10 ); m_pColors[i] = (COLORREF)GetProfileInt( mszColors, szNumber, 0 ); } m_iColors = i; } } /***************************************************************************/ void CPBApp::SaveProfileSettings() { HKEY hkView; OpenAppKey(mszView, &hkView); if (hkView) { RegSetValueEx(hkView, mszWindowPlacement, 0, REG_BINARY, (LPBYTE)&m_wpPlacement, sizeof(m_wpPlacement)); RegCloseKey(hkView); } WriteProfileInt( mszView, mszShowThumbnail , m_bShowThumbnail ); WriteProfileInt( mszView, mszBMPWidth , m_sizeBitmap.cx ); WriteProfileInt( mszView, mszBMPHeight , m_sizeBitmap.cy ); WriteProfileInt( mszView, mszThumbXPos , m_rectFloatThumbnail.left ); WriteProfileInt( mszView, mszThumbYPos , m_rectFloatThumbnail.top ); WriteProfileInt( mszView, mszThumbWidth , m_rectFloatThumbnail.Width() ); WriteProfileInt( mszView, mszThumbHeight , m_rectFloatThumbnail.Height() ); WriteProfileInt( mszView, mszCurrentUnits , m_iCurrentUnits ); WriteProfileInt( mszView, mszNoStretching , ! g_bDriverCanStretch ); WriteProfileInt( mszText, mszShowText , m_bShowTextToolbar ); WriteProfileInt( mszText, mszPointSize , m_iPointSize ); WriteProfileInt( mszText, mszPositionX , m_iPosTextX ); WriteProfileInt( mszText, mszPositionY , m_iPosTextY ); WriteProfileInt( mszText, mszBold , m_iBoldText ); WriteProfileInt( mszText, mszUnderline , m_iUnderlineText ); WriteProfileInt( mszText, mszItalic , m_iItalicText ); WriteProfileInt( mszText, mszVertEdit , m_iVertEditText ); WriteProfileInt( mszText, mszTextPen , m_iPenText ); WriteProfileString( mszText, mszFaceName, m_strTypeFaceName ); WriteProfileInt( mszText, mszCharSet , m_iCharSet ); WriteProfileInt( mszView, mszSnapToGrid, m_iSnapToGrid); WriteProfileInt( mszView, mszGridExtent, m_iGridExtent); if (m_pColors != NULL) { TCHAR szNumber[8]; int iColor; WriteProfileInt( mszColors, mszNumberOfColors, m_iColors ); for (int i = 0; i < m_iColors; i++) { iColor = (int)(m_pColors[i] & (COLORREF)0x00FFFFFF); _Itoa( i, szNumber, 10 ); WriteProfileInt( mszColors, szNumber, iColor ); } delete [] m_pColors; } } /***************************************************************************/