⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 scemfdocprop.cpp

📁 Source code for EMFexplorer 1.0
💻 CPP
字号:
/*
*	This file is part of the EMFexplorer projet.
*	Copyright (C) 2004 Smith Charles.
*
*	This library is free software; you can redistribute it and/or
*	modify it under the terms of the GNU Lesser General Public
*	License as published by the Free Software Foundation; either
*	version 2.1 of the License, or (at your option) any later version.
*
*   This library is distributed in the hope that it will be useful,
*   but WITHOUT ANY WARRANTY; without even the implied warranty of
*   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
*   Lesser General Public License for more details.
*
*   You should have received a copy of the GNU Lesser General Public
*   License along with this library; if not, write to the Free Software
*   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA.
*
*	Extension: for commercial use, apply the Equity Public License, which
*	adds to the normal terms of the GLPL a condition of donation to the author.
*   If you are interested in support for this source code,
*   contact Smith Charles <smith.charles@free.fr> for more information.
*/


#include "stdafx.h"
#include "SCEMFDoc.h"

#include "SCGdiplusUtils.h"
#include "SCEMFViewDefs.h"
#include "SCGenInclude.h"
#include SC_INC_WINLIB(SCRegistry.h)
#include SC_INC_SHARED(SCPropStrLists.h)
#include SC_INC_WINLIB(SCWinFile.h)

#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

#define SC_SETDOC_PROP(member, value) \
	m_Properties.##member = value; \
	m_bDocModified = TRUE

/////////////////////////////////////////////////////////////////////
// Document Properties
//

// Getters
// CString SCGetPicture(); // N/A: call SCGetUniDocName			
	// Control-related
int SCEMFDoc::SCGetCtlBorder() const { return m_Properties.usCtlBorder; }
int SCEMFDoc::SCGetCtlColorStyle() const { return m_Properties.usCtlColorStyle; }
int SCEMFDoc::SCGetCtlColor() const { return m_Properties.crCtlColor; }
	// Page-related
int SCEMFDoc::SCGetPageBorderVisible() const { return m_Properties.bPageBorderVisible; }
int SCEMFDoc::SCGetPageShadowVisible() const { return m_Properties.bPageShadowVisible; }
int SCEMFDoc::SCGetPaperColorStyle() const { return m_Properties.usPaperColorStyle; }
int SCEMFDoc::SCGetPaperColor() const { return m_Properties.crPaperColor; }
int SCEMFDoc::SCGetFitMode() const { return m_Properties.usFitMode; }	
int SCEMFDoc::SCGetScale() const { return m_Properties.iScale; }	
int SCEMFDoc::SCGetMarginL() const { return m_Properties.lMarginL; }
int SCEMFDoc::SCGetMarginT() const { return m_Properties.lMarginT; }
int SCEMFDoc::SCGetMarginR() const { return m_Properties.lMarginR; }
int SCEMFDoc::SCGetMarginB() const { return m_Properties.lMarginB; }
int SCEMFDoc::SCGetPageOrientation() const { return m_Properties.usPageOrientation; }
int SCEMFDoc::SCGetTransparencyMode() const { return m_Properties.usTransparencyMode; }
int SCEMFDoc::SCGetReverseVideoMode() const { return m_Properties.usReverseVideoMode; }
	// GDI+-related
int SCEMFDoc::SCGetGDIplusEnabled() const { return m_Properties.bEnableGDIp; }
int SCEMFDoc::SCGetTextRenderingHint() const { return m_Properties.usTextRenderingHint; }
int SCEMFDoc::SCGetTextContrast() const { return m_Properties.usTextContrast; }
int SCEMFDoc::SCGetSmoothingMode() const { return m_Properties.usSmoothingMode; }
int SCEMFDoc::SCGetInterpolationMode() const { return m_Properties.usInterpolationMode; }
int SCEMFDoc::SCGetPixelOffsetMode() const { return m_Properties.usPixelOffsetMode; }


// Setters
//	void SCSetPicture(LPCTSTR lpszPath); // N/A: call SCSetUniDocName	
	// Control-related
void SCEMFDoc::SCSetCtlBorder(int iBorderType) { SC_SETDOC_PROP(usCtlBorder, iBorderType); }
void SCEMFDoc::SCSetCtlColorStyle(int iStyle) { SC_SETDOC_PROP(usCtlColorStyle, iStyle); }
void SCEMFDoc::SCSetCtlColor(int iColor) { SC_SETDOC_PROP(crCtlColor, iColor); }
	// Page-related
void SCEMFDoc::SCSetPageBorderVisible(int bVisible) { SC_SETDOC_PROP(bPageBorderVisible, bVisible); }
void SCEMFDoc::SCSetPageShadowVisible(int bVisible) { SC_SETDOC_PROP(bPageShadowVisible, bVisible); }
void SCEMFDoc::SCSetPaperColorStyle(int iStyle) { SC_SETDOC_PROP(usPaperColorStyle, iStyle); }
void SCEMFDoc::SCSetPaperColor(int iColor) { SC_SETDOC_PROP(crPaperColor, iColor); }
void SCEMFDoc::SCSetFitMode(int iMode) { SC_SETDOC_PROP(usFitMode, iMode); }
void SCEMFDoc::SCSetScale(int iScale) { SC_SETDOC_PROP(iScale, iScale); }
void SCEMFDoc::SCSetMarginL(int iLeft) { SC_SETDOC_PROP(lMarginL, iLeft); }
void SCEMFDoc::SCSetMarginT(int iTop) { SC_SETDOC_PROP(lMarginT, iTop); }
void SCEMFDoc::SCSetMarginR(int iRight) { SC_SETDOC_PROP(lMarginR, iRight); }
void SCEMFDoc::SCSetMarginB(int iBottom) { SC_SETDOC_PROP(lMarginB, iBottom); }
void SCEMFDoc::SCSetPageOrientation(int iAngle) { SC_SETDOC_PROP(usPageOrientation, iAngle); }
void SCEMFDoc::SCSetTransparencyMode(int iMode) { SC_SETDOC_PROP(usTransparencyMode, iMode); }
void SCEMFDoc::SCSetReverseVideoMode(int iMode) { SC_SETDOC_PROP(usReverseVideoMode, iMode); }
	// GDI+-related
void SCEMFDoc::SCSetGDIplusEnabled(int bEnabled) { SC_SETDOC_PROP(bEnableGDIp, bEnabled); }
void SCEMFDoc::SCSetTextRenderingHint(int iHint) { SC_SETDOC_PROP(usTextRenderingHint, iHint); }
void SCEMFDoc::SCSetTextContrast(int iLevel) { SC_SETDOC_PROP(usTextContrast, iLevel); }
void SCEMFDoc::SCSetSmoothingMode(int iMode) { SC_SETDOC_PROP(usSmoothingMode, iMode); }
void SCEMFDoc::SCSetInterpolationMode(int iMode) { SC_SETDOC_PROP(usInterpolationMode, iMode); }
void SCEMFDoc::SCSetPixelOffsetMode(int iMode) { SC_SETDOC_PROP(usPixelOffsetMode, iMode); }


/////////////////////////////////////////////////////////////////////
// Save/Load Properties
//
// Note: using cheap save/load in this implementation.
// Implementation may change in the future.

BOOL SCEMFDoc::SCHasSettings()
{
	if (m_strUniDocName.IsEmpty() ||
		!SCExistFile(m_strUniDocName))
		return FALSE;

	// check one ore more keys in settings section
	if (-1!=GetPrivateProfileInt(SC_DOC_SETTINGS_SECTION, SC_T_CtlBorder, -1, m_strUniDocName))
		return TRUE;

	return FALSE;
}

void SCEMFDoc::SCLoadSettings()
{
	//-- Document --
	{
		TCHAR szTxtBuff[SC_PGCOMMENT_MAXSIZE];
		
		::GetPrivateProfileString(SC_DOC_GEN_SECTION, SC_DOC_URL_KEY, _T(""),
			szTxtBuff, SC_PGCOMMENT_MAXSIZE, m_strUniDocName);
		m_Properties.strCreditURL = szTxtBuff;
		
		::GetPrivateProfileString(SC_DOC_GEN_SECTION, SC_DOC_CREDIT_KEY, _T(""),
			szTxtBuff, SC_PGCOMMENT_MAXSIZE, m_strUniDocName);
		m_Properties.strCredit = szTxtBuff;
	}

	//-- Pages --
	// Control-related
	m_Properties.usCtlBorder = GetPrivateProfileInt(SC_DOC_SETTINGS_SECTION, SC_T_CtlBorder, SC_DFLT_CTLBORDER, m_strUniDocName);
	m_Properties.usCtlColorStyle = GetPrivateProfileInt(SC_DOC_SETTINGS_SECTION, SC_T_CtlColorStyle, SC_DFLT_CTLCOLORSTYLE, m_strUniDocName);
	m_Properties.crCtlColor = GetPrivateProfileInt(SC_DOC_SETTINGS_SECTION, SC_T_CtlColor, SC_DFLT_CTLCOLOR, m_strUniDocName);

	// Page-related
	m_Properties.bPageBorderVisible = GetPrivateProfileInt(SC_DOC_SETTINGS_SECTION, SC_T_PageBorderVisible, SC_DFLT_PAGEBORDERVISIBLE, m_strUniDocName);
	m_Properties.bPageShadowVisible = GetPrivateProfileInt(SC_DOC_SETTINGS_SECTION, SC_T_PageShadowVisible, SC_DFLT_PAGESHADOWVISIBLE, m_strUniDocName);
	m_Properties.usPaperColorStyle = GetPrivateProfileInt(SC_DOC_SETTINGS_SECTION, SC_T_PaperColorStyle, SC_DFLT_PAPERCOLORSTYLE, m_strUniDocName);
	m_Properties.crPaperColor = GetPrivateProfileInt(SC_DOC_SETTINGS_SECTION, SC_T_PaperColor, SC_DFLT_PAPERCOLOR, m_strUniDocName);
	m_Properties.usFitMode = GetPrivateProfileInt(SC_DOC_SETTINGS_SECTION, SC_T_FitMode, SC_DFLT_FITMODE, m_strUniDocName);
	m_Properties.iScale = GetPrivateProfileInt(SC_DOC_SETTINGS_SECTION, SC_T_Scale, SC_DFLT_SCALE, m_strUniDocName);
	m_Properties.lMarginL = GetPrivateProfileInt(SC_DOC_SETTINGS_SECTION, SC_T_MarginL, SC_DFLT_MARGINL, m_strUniDocName);
	m_Properties.lMarginT = GetPrivateProfileInt(SC_DOC_SETTINGS_SECTION, SC_T_MarginT, SC_DFLT_MARGINT, m_strUniDocName);
	m_Properties.lMarginR = GetPrivateProfileInt(SC_DOC_SETTINGS_SECTION, SC_T_MarginR, SC_DFLT_MARGINR, m_strUniDocName);
	m_Properties.lMarginB = GetPrivateProfileInt(SC_DOC_SETTINGS_SECTION, SC_T_MarginB, SC_DFLT_MARGINB, m_strUniDocName);
	m_Properties.usPageOrientation = GetPrivateProfileInt(SC_DOC_SETTINGS_SECTION, SC_T_PageOrientation, SC_DFLT_PAGEORIENTATION, m_strUniDocName);
	m_Properties.usTransparencyMode = GetPrivateProfileInt(SC_DOC_SETTINGS_SECTION, SC_T_TransparencyMode, SC_DFLT_TRANSPARENCYMODE, m_strUniDocName);
	m_Properties.usReverseVideoMode = GetPrivateProfileInt(SC_DOC_SETTINGS_SECTION, SC_T_ReverseVideoMode, SC_DFLT_REVERSEVIDEOMODE, m_strUniDocName);

	// GDI+-related
	m_Properties.bEnableGDIp = GetPrivateProfileInt(SC_DOC_SETTINGS_SECTION, SC_T_GDIplusEnabled, SC_DFLT_GDIPLUSENABLED, m_strUniDocName);
	m_Properties.usTextRenderingHint = GetPrivateProfileInt(SC_DOC_SETTINGS_SECTION, SC_T_TextRenderingHint, SC_DFLT_TEXTRENDERINGHINT, m_strUniDocName);
	m_Properties.usTextContrast = GetPrivateProfileInt(SC_DOC_SETTINGS_SECTION, SC_T_TextContrast, SC_DFLT_TEXTCONTRAST, m_strUniDocName);
	m_Properties.usSmoothingMode = GetPrivateProfileInt(SC_DOC_SETTINGS_SECTION, SC_T_SmoothingMode, SC_DFLT_SMOOTHINGMODE, m_strUniDocName);
	m_Properties.usInterpolationMode = GetPrivateProfileInt(SC_DOC_SETTINGS_SECTION, SC_T_InterpolationMode, SC_DFLT_INTERPOLATIONMODE, m_strUniDocName);
	m_Properties.usPixelOffsetMode = GetPrivateProfileInt(SC_DOC_SETTINGS_SECTION, SC_T_PixelOffsetMode, SC_DFLT_PIXELOFFSETMODE, m_strUniDocName);
}

void SCEMFDoc::SCSaveSettings(LPCTSTR lpszFName)
{
	//-- Document --
	::WritePrivateProfileString(SC_DOC_GEN_SECTION, SC_DOC_URL_KEY, m_Properties.strCreditURL, lpszFName);
	::WritePrivateProfileString(SC_DOC_GEN_SECTION, SC_DOC_CREDIT_KEY, m_Properties.strCredit, lpszFName);

	//-- Pages --
	// Control-related
	SCWritePrivateProfileInt(SC_DOC_SETTINGS_SECTION, SC_T_CtlBorder, m_Properties.usCtlBorder, lpszFName);
	SCWritePrivateProfileInt(SC_DOC_SETTINGS_SECTION, SC_T_CtlColorStyle, m_Properties.usCtlColorStyle, lpszFName);
	SCWritePrivateProfileInt(SC_DOC_SETTINGS_SECTION, SC_T_CtlColor, m_Properties.crCtlColor, lpszFName);

	// Page-related
	SCWritePrivateProfileInt(SC_DOC_SETTINGS_SECTION, SC_T_PageBorderVisible, m_Properties.bPageBorderVisible, lpszFName);
	SCWritePrivateProfileInt(SC_DOC_SETTINGS_SECTION, SC_T_PageShadowVisible, m_Properties.bPageShadowVisible, lpszFName);
	SCWritePrivateProfileInt(SC_DOC_SETTINGS_SECTION, SC_T_PaperColorStyle, m_Properties.usPaperColorStyle, lpszFName);
	SCWritePrivateProfileInt(SC_DOC_SETTINGS_SECTION, SC_T_PaperColor, m_Properties.crPaperColor, lpszFName);
	SCWritePrivateProfileInt(SC_DOC_SETTINGS_SECTION, SC_T_FitMode, m_Properties.usFitMode, lpszFName);
	SCWritePrivateProfileInt(SC_DOC_SETTINGS_SECTION, SC_T_Scale, m_Properties.iScale, lpszFName);
	SCWritePrivateProfileInt(SC_DOC_SETTINGS_SECTION, SC_T_MarginL, m_Properties.lMarginL, lpszFName);
	SCWritePrivateProfileInt(SC_DOC_SETTINGS_SECTION, SC_T_MarginT, m_Properties.lMarginT, lpszFName);
	SCWritePrivateProfileInt(SC_DOC_SETTINGS_SECTION, SC_T_MarginR, m_Properties.lMarginR, lpszFName);
	SCWritePrivateProfileInt(SC_DOC_SETTINGS_SECTION, SC_T_MarginB, m_Properties.lMarginB, lpszFName);
	SCWritePrivateProfileInt(SC_DOC_SETTINGS_SECTION, SC_T_PageOrientation, m_Properties.usPageOrientation, lpszFName);
	SCWritePrivateProfileInt(SC_DOC_SETTINGS_SECTION, SC_T_TransparencyMode, m_Properties.usTransparencyMode, lpszFName);
	SCWritePrivateProfileInt(SC_DOC_SETTINGS_SECTION, SC_T_ReverseVideoMode, m_Properties.usReverseVideoMode, lpszFName);

	// GDI+-related
	SCWritePrivateProfileInt(SC_DOC_SETTINGS_SECTION, SC_T_GDIplusEnabled, m_Properties.bEnableGDIp, lpszFName);
	SCWritePrivateProfileInt(SC_DOC_SETTINGS_SECTION, SC_T_TextRenderingHint, m_Properties.usTextRenderingHint, lpszFName);
	SCWritePrivateProfileInt(SC_DOC_SETTINGS_SECTION, SC_T_TextContrast, m_Properties.usTextContrast, lpszFName);
	SCWritePrivateProfileInt(SC_DOC_SETTINGS_SECTION, SC_T_SmoothingMode, m_Properties.usSmoothingMode, lpszFName);
	SCWritePrivateProfileInt(SC_DOC_SETTINGS_SECTION, SC_T_InterpolationMode, m_Properties.usInterpolationMode, lpszFName);
	SCWritePrivateProfileInt(SC_DOC_SETTINGS_SECTION, SC_T_PixelOffsetMode, m_Properties.usPixelOffsetMode, lpszFName);
}
//////////////////////////////////////////

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -