rotate.cpp

来自「VoyagerGX display driver for Windows CE 」· C++ 代码 · 共 81 行

CPP
81
字号
#include "precomp.h"

int SMI::GetRotateModeFromReg()
{
	
#ifdef ROTATION_ENABLE
	switch (m_SMISettings.m_nRotateAngle)
	{
	case 90: 
		return DMDO_90;
	case 180:
		return DMDO_180;
	case 270:
		return DMDO_270;
	case 0:
	default:
		return DMDO_0;
	}
#endif // ROTATION_ENABLE

    return 0;
}

void SMI::SetRotateParams()
{

#ifdef ROTATION_ENABLE
    switch(m_iRotate)
    {
	case DMDO_90:
	case DMDO_270:
		m_pMode->height = m_nScreenWidthSave;
		m_pMode->width = m_nScreenHeightSave;
		break;

    case DMDO_0:
    case DMDO_180:
	default:
		m_pMode->width = m_nScreenWidthSave;
		m_pMode->height = m_nScreenHeightSave;
		break;
    }
#endif // ROTATION_ENABLE

}


LONG SMI::DynRotate(int angle)
{

#ifdef ROTATION_ENABLE
	int curRot, oldAngle;
	int ang2idxArr[5]={0,1,2,2,3};
	int angArr[4]={0,1,2,4};

	//if (angle == m_iRotate)
	//	return DISP_CHANGE_SUCCESSFUL;

	oldAngle = m_iRotate;
	m_iRotate = angle;

	curRot = ang2idxArr[angle] - ang2idxArr[oldAngle];
	if(curRot < 0)
		curRot += 4;

	RotateCursorShape(angArr[curRot]);

	SetRotateParams();

	m_nScreenWidth = m_pMode->width;
	m_nScreenHeight = m_pMode->height;
	((GPESurfRotate *)m_pPrimarySurface)->SetRotation(m_nScreenWidth, m_nScreenHeight, angle);

	return DISP_CHANGE_SUCCESSFUL;
#else // ! ROTATION_ENABLE
	return FALSE;
#endif // ROTATION_ENABLE

}

⌨️ 快捷键说明

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