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

📄 scemfexplviewsttings.cpp

📁 Source code for EMFexplorer 1.0
💻 CPP
📖 第 1 页 / 共 2 页
字号:
/*
*	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 "EMFexplorer.h"
#include "EMFexplorerDoc.h"
#include "EMFexplorerView.h"
#include "SCEMFDlgOptions.h"

#include "SCGenInclude.h"
#include SC_INC_WINLIB(SCWinFile.h)
#include SC_INC_WINLIB(SCRegistry.h)
#include SC_INC_SHARED(SCPropStrLists.h)
#include SC_INC_EMFLIB(SCEMFViewHelpers.h)

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

/////////////////////////////////////////////////////////////////////////////
// Applying / Saving settings
//


// Default or last settings
void CEMFexplorerView::SCReadSettings(LPCTSTR lpszSubpath/*=NULL*/)
{
	CString strSection;
	if (lpszSubpath)
		strSection.Format(_T("%s\\%s"), s_szAppSection, lpszSubpath);
	else
	{
		strSection = s_szAppSection;
	}

	CWinApp* pApp = AfxGetApp();

	// Control border
	m_CtlImage.SCSetCtlBorder(pApp->GetProfileInt(strSection, SC_T_CtlBorder, SC_DFLT_CTLBORDER));
	// Control color style and color
	m_CtlImage.SCSetCtlColorStyle(
		pApp->GetProfileInt(strSection, SC_T_CtlColorStyle, SC_DFLT_CTLCOLORSTYLE),
		pApp->GetProfileInt(strSection, SC_T_CtlColor, SC_DFLT_CTLCOLOR), FALSE);

	// Paper border and shadow
	m_CtlImage.SCSetPageBorderVisible(pApp->GetProfileInt(strSection, SC_T_PageBorderVisible, SC_DFLT_PAGEBORDERVISIBLE), FALSE);
	m_CtlImage.SCSetPageShadowVisible(pApp->GetProfileInt(strSection, SC_T_PageShadowVisible, SC_DFLT_PAGESHADOWVISIBLE), FALSE);

	// Paper color style and color
	m_CtlImage.SCSetPaperColorStyle(
		pApp->GetProfileInt(strSection, SC_T_PaperColorStyle, SC_DFLT_PAPERCOLORSTYLE),
		pApp->GetProfileInt(strSection, SC_T_PaperColor, SC_DFLT_PAPERCOLOR), FALSE);

	// Fitmode and Scale
	int iFitMode = pApp->GetProfileInt(strSection, SC_T_FitMode, SC_DFLT_FITMODE);
	m_CtlImage.SCSetFitMode(iFitMode, FALSE);
	if (SC_FIT_NONE==iFitMode)
	{
		int iCurZoom = pApp->GetProfileInt(strSection, SC_T_Scale, SC_DFLT_SCALE);
		m_CtlImage.SCSetCurZoom(iCurZoom, FALSE);
	}

	// Margins
	CRect rcMargins(pApp->GetProfileInt(strSection, SC_T_MarginL, SC_DFLT_MARGINL),
					pApp->GetProfileInt(strSection, SC_T_MarginT, SC_DFLT_MARGINT),
					pApp->GetProfileInt(strSection, SC_T_MarginR, SC_DFLT_MARGINR),
					pApp->GetProfileInt(strSection, SC_T_MarginB, SC_DFLT_MARGINB));
	m_CtlImage.SCSetMargins(rcMargins, FALSE);

	// Orientation
	m_CtlImage.SCSetAngle(pApp->GetProfileInt(strSection, SC_T_PageOrientation, SC_DFLT_PAGEORIENTATION), FALSE);

	// Transparency mode
	m_CtlImage.SCSetTransparencyMode(pApp->GetProfileInt(strSection, SC_T_TransparencyMode, SC_DFLT_TRANSPARENCYMODE), FALSE);
	// Reverse video mode
	m_CtlImage.SCSetReverseVideoMode(pApp->GetProfileInt(strSection, SC_T_ReverseVideoMode, SC_DFLT_REVERSEVIDEOMODE), FALSE);

	// GDI+
	m_CtlImage.SCEnableGDIp(pApp->GetProfileInt(strSection, SC_T_GDIplusEnabled, SC_DFLT_GDIPLUSENABLED), FALSE);
	m_CtlImage.SCSetTextRenderingHint(pApp->GetProfileInt(strSection, SC_T_TextRenderingHint, SC_DFLT_TEXTRENDERINGHINT), FALSE);
	m_CtlImage.SCSetTextContrast(pApp->GetProfileInt(strSection, SC_T_TextContrast, SC_DFLT_TEXTCONTRAST), FALSE);
	m_CtlImage.SCSetSmoothingMode(pApp->GetProfileInt(strSection, SC_T_SmoothingMode, SC_DFLT_SMOOTHINGMODE), FALSE);
	m_CtlImage.SCSetInterpolationMode(pApp->GetProfileInt(strSection, SC_T_InterpolationMode, SC_DFLT_INTERPOLATIONMODE), FALSE);
	m_CtlImage.SCSetPixelOffsetMode(pApp->GetProfileInt(strSection, SC_T_PixelOffsetMode, SC_DFLT_PIXELOFFSETMODE), FALSE);

	// Refresh
	m_CtlImage.SCRefresh();
}

// Settings from the current doc
BOOL CEMFexplorerView::SCReadDocSettings()
{
	if (!m_pEMFDoc || !m_pEMFDoc->SCHasSettings())
		return FALSE;

	// Control border
	m_CtlImage.SCSetCtlBorder(m_pEMFDoc->SCGetCtlBorder());
	// Control color style and color
	m_CtlImage.SCSetCtlColorStyle(m_pEMFDoc->SCGetCtlColorStyle(),
								  m_pEMFDoc->SCGetCtlColor(), FALSE);

	// Paper border and shadow
	m_CtlImage.SCSetPageBorderVisible(m_pEMFDoc->SCGetPageBorderVisible(), FALSE);
	m_CtlImage.SCSetPageShadowVisible(m_pEMFDoc->SCGetPageShadowVisible(), FALSE);

	// Paper color style and color
	m_CtlImage.SCSetPaperColorStyle(m_pEMFDoc->SCGetPaperColorStyle(),
									m_pEMFDoc->SCGetPaperColor(), FALSE);

	// Fitmode and Scale
	int iFitMode = m_pEMFDoc->SCGetFitMode();
	m_CtlImage.SCSetFitMode(iFitMode, FALSE);
	if (SC_FIT_NONE==iFitMode)
	{
		int iCurZoom = m_pEMFDoc->SCGetScale();
		m_CtlImage.SCSetCurZoom(iCurZoom, FALSE);
	}

	// Margins
	CRect rcMargins(m_pEMFDoc->SCGetMarginL(),
					m_pEMFDoc->SCGetMarginT(),
					m_pEMFDoc->SCGetMarginR(),
					m_pEMFDoc->SCGetMarginB());
	m_CtlImage.SCSetMargins(rcMargins, FALSE);

	// Orientation
	m_CtlImage.SCSetAngle(m_pEMFDoc->SCGetPageOrientation(), FALSE);

	// Transparency mode
	m_CtlImage.SCSetTransparencyMode(m_pEMFDoc->SCGetTransparencyMode(), FALSE);
	// Reverse video mode
	m_CtlImage.SCSetReverseVideoMode(m_pEMFDoc->SCGetReverseVideoMode(), FALSE);

	// GDI+
	m_CtlImage.SCEnableGDIp(m_pEMFDoc->SCGetGDIplusEnabled(), FALSE);
	m_CtlImage.SCSetTextRenderingHint(m_pEMFDoc->SCGetTextRenderingHint(), FALSE);
	m_CtlImage.SCSetTextContrast(m_pEMFDoc->SCGetTextContrast(), FALSE);
	m_CtlImage.SCSetSmoothingMode(m_pEMFDoc->SCGetSmoothingMode(), FALSE);
	m_CtlImage.SCSetInterpolationMode(m_pEMFDoc->SCGetInterpolationMode(), FALSE);
	m_CtlImage.SCSetPixelOffsetMode(m_pEMFDoc->SCGetPixelOffsetMode(), FALSE);

	// Refresh
	m_CtlImage.SCRefresh();
	return TRUE;
}

// Save settings in app section
void CEMFexplorerView::SCSaveLastSettings()
{
	CWinApp* pApp = AfxGetApp();

	CString strSection;
	strSection.Format(_T("%s\\Last"), s_szAppSection);

	// Control
	pApp->WriteProfileInt(strSection, SC_T_CtlBorder, m_CtlImage.SCGetCtlBorderType());
	pApp->WriteProfileInt(strSection, SC_T_CtlColorStyle, m_CtlImage.SCGetCtlColorStyle());
	pApp->WriteProfileInt(strSection, SC_T_CtlColor, (int)m_CtlImage.SCGetCtlColor());

	// Scale, fit mode
	pApp->WriteProfileInt(strSection, SC_T_FitMode, m_CtlImage.SCGetFitMode());
	pApp->WriteProfileInt(strSection, SC_T_Scale, m_CtlImage.SCGetCurZoom());

	// Margins
	CRect rcMargins;
	m_CtlImage.SCGetMargins(rcMargins);
	pApp->WriteProfileInt(strSection, SC_T_MarginL, rcMargins.left);
	pApp->WriteProfileInt(strSection, SC_T_MarginT, rcMargins.top);
	pApp->WriteProfileInt(strSection, SC_T_MarginR, rcMargins.right);
	pApp->WriteProfileInt(strSection, SC_T_MarginB, rcMargins.bottom);

	// Page border
	pApp->WriteProfileInt(strSection, SC_T_PageBorderVisible, m_CtlImage.SCGetPageBorderVisible());
	pApp->WriteProfileInt(strSection, SC_T_PageShadowVisible, m_CtlImage.SCGetPageShadowVisible());
	// Orientation	
	pApp->WriteProfileInt(strSection, SC_T_PageOrientation, m_CtlImage.SCGetCurAngle());
	// Paper color
	pApp->WriteProfileInt(strSection, SC_T_PaperColorStyle, m_CtlImage.SCGetPaperColorStyle());
	pApp->WriteProfileInt(strSection, SC_T_PaperColor, m_CtlImage.SCGetPaperColor());
	// Transparency, reverse video	
	pApp->WriteProfileInt(strSection, SC_T_TransparencyMode, m_CtlImage.SCGetTransparencyMode());
	pApp->WriteProfileInt(strSection, SC_T_ReverseVideoMode, m_CtlImage.SCGetReverseVideoMode());

	// GDI+
	pApp->WriteProfileInt(strSection, SC_T_GDIplusEnabled, (int)m_CtlImage.SCGetGDIplusEnabled());
	pApp->WriteProfileInt(strSection, SC_T_TextRenderingHint, (int)m_CtlImage.SCGetTextRenderingHint());
	pApp->WriteProfileInt(strSection, SC_T_TextContrast, (int)m_CtlImage.SCGetTextContrast());
	pApp->WriteProfileInt(strSection, SC_T_SmoothingMode, (int)m_CtlImage.SCGetSmoothingMode());
	pApp->WriteProfileInt(strSection, SC_T_InterpolationMode, (int)m_CtlImage.SCGetInterpolationMode());
	pApp->WriteProfileInt(strSection, SC_T_PixelOffsetMode, (int)m_CtlImage.SCGetPixelOffsetMode());
}

// Transfer control settings to document
void CEMFexplorerView::SCSaveDocSettings()
{
	ASSERT(m_pEMFDoc);
	if (!m_pEMFDoc)
		return;

	// Control
	m_pEMFDoc->SCSetCtlBorder(m_CtlImage.SCGetCtlBorderType());
	m_pEMFDoc->SCSetCtlColorStyle(m_CtlImage.SCGetCtlColorStyle());
	m_pEMFDoc->SCSetCtlColor((int)m_CtlImage.SCGetCtlColor());

	// Scale, fit mode
	m_pEMFDoc->SCSetFitMode(m_CtlImage.SCGetFitMode());
	m_pEMFDoc->SCSetScale(m_CtlImage.SCGetCurZoom());

	// Margins
	CRect rcMargins;
	m_CtlImage.SCGetMargins(rcMargins);
	m_pEMFDoc->SCSetMarginL(rcMargins.left);
	m_pEMFDoc->SCSetMarginT(rcMargins.top);
	m_pEMFDoc->SCSetMarginR(rcMargins.right);
	m_pEMFDoc->SCSetMarginB(rcMargins.bottom);

	// Page border
	m_pEMFDoc->SCSetPageBorderVisible(m_CtlImage.SCGetPageBorderVisible());
	m_pEMFDoc->SCSetPageShadowVisible(m_CtlImage.SCGetPageShadowVisible());
	// Orientation	
	m_pEMFDoc->SCSetPageOrientation(m_CtlImage.SCGetCurAngle());
	// Paper color
	m_pEMFDoc->SCSetPaperColorStyle(m_CtlImage.SCGetPaperColorStyle());
	m_pEMFDoc->SCSetPaperColor(m_CtlImage.SCGetPaperColor());
	// Transparency, reverse video	
	m_pEMFDoc->SCSetTransparencyMode(m_CtlImage.SCGetTransparencyMode());
	m_pEMFDoc->SCSetReverseVideoMode(m_CtlImage.SCGetReverseVideoMode());

	// GDI+
	m_pEMFDoc->SCSetGDIplusEnabled((int)m_CtlImage.SCGetGDIplusEnabled());
	m_pEMFDoc->SCSetTextRenderingHint((int)m_CtlImage.SCGetTextRenderingHint());
	m_pEMFDoc->SCSetTextContrast((int)m_CtlImage.SCGetTextContrast());
	m_pEMFDoc->SCSetSmoothingMode((int)m_CtlImage.SCGetSmoothingMode());
	m_pEMFDoc->SCSetInterpolationMode((int)m_CtlImage.SCGetInterpolationMode());
	m_pEMFDoc->SCSetPixelOffsetMode((int)m_CtlImage.SCGetPixelOffsetMode());
}

/////////////////////////////////////////////////////////////////////////////
// I_SCPropExchange
//
// Editing settings
//

#define SC_RETURN_DWORDPROP(prop, dflt) \
ASSERT(eSettingsDefault==(enumSettingsPage)iSender); \
return (DWORD)AfxGetApp()->GetProfileInt(s_szAppSection, prop, (int)dflt)

#define SC_STORE_DWORDPROP(prop, iValue) \
ASSERT(eSettingsDefault==(enumSettingsPage)iSender); \
AfxGetApp()->WriteProfileInt(s_szAppSection, prop, (int)iValue)


// Filter
BOOL CEMFexplorerView::SCWantSettings(int iSender)
{
	ASSERT(eSettingsBadID!=(enumSettingsPage)iSender);
	if (eSettingsDoc==(enumSettingsPage)iSender)
	{
		return (m_pEMFDoc && m_pEMFDoc->SCGetNbPages()!=0);
	}
	return (eSettingsDefault==(enumSettingsPage)iSender);
}

// Getters
DWORD CEMFexplorerView::SCGetSettings_CtlBorder(int iSender)
{
	ASSERT(eSettingsDefault==(enumSettingsPage)iSender || eSettingsDoc==(enumSettingsPage)iSender);
	if (eSettingsDoc==(enumSettingsPage)iSender) 
		return (DWORD)m_CtlImage.SCGetCtlBorderType();

	SC_RETURN_DWORDPROP(SC_T_CtlBorder, 0);
}

void CEMFexplorerView::SCGetSettings_CtlColor(int iSender, int& iStyle, COLORREF& crColor)
{
	if (eSettingsDoc==(enumSettingsPage)iSender)
	{
		iStyle = m_CtlImage.SCGetCtlColorStyle();
		crColor = m_CtlImage.SCGetCtlColor();
	} else
	{
		ASSERT(eSettingsDefault==(enumSettingsPage)iSender);
		
		CWinApp* pApp = AfxGetApp();
		iStyle = pApp->GetProfileInt(s_szAppSection, SC_T_CtlColorStyle, (int)SC_COLOR_SYSINDEX);
		crColor = (COLORREF)pApp->GetProfileInt(s_szAppSection, SC_T_CtlColor, (int)COLOR_WINDOW);
	}
}

void CEMFexplorerView::SCGetSettings_PageBorder(int iSender, BOOL& bBorder, BOOL& bShadow)
{
	if (eSettingsDoc==(enumSettingsPage)iSender)
	{
		bBorder = m_CtlImage.SCGetPageBorderVisible();
		bShadow = m_CtlImage.SCGetPageShadowVisible();
	} else
	{
		ASSERT(eSettingsDefault==(enumSettingsPage)iSender);

⌨️ 快捷键说明

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