bool MFDisplay_IsWidescreen() { MFRect rect; MFDisplay_GetDisplayRect(&rect); return rect.width / rect.height >= 1.6f; }
float MFDisplay_GetNativeAspectRatio() { MFRect rect; MFDisplay_GetDisplayRect(&rect); return rect.width / rect.height; }
void HKUserInterface::ResizeCallback() { HKUserInterface &ui = HKUserInterface::Get(); if(&ui) { MFRect rect; MFDisplay_GetDisplayRect(&rect); ui.pRoot->SetPosition(MakeVector(rect.x, rect.y)); ui.pRoot->SetSize(MakeVector(rect.width, rect.height)); } if(pChainResizeCallback) pChainResizeCallback(); }
HKUserInterface::HKUserInterface() { MFZeroMemory(pFocusList, sizeof(pFocusList)); MFZeroMemory(pHoverList, sizeof(pHoverList)); pRoot = CreateWidget<HKWidgetLayoutFrame>(); MFRect rect; // MFView_GetOrthoRect(&rect); MFDisplay_GetDisplayRect(&rect); pRoot->SetPosition(MakeVector(rect.x, rect.y)); pRoot->SetSize(MakeVector(rect.width, rect.height)); pInputManager = new HKInputManager(); pInputManager->OnInputEvent += fastdelegate::MakeDelegate(this, &HKUserInterface::OnInputEvent); }
//--------------------------------------------------------------------------------------------------------------------- MF_API void MFPrimitive_BeginBlitter(int numBlits) { MFView_Push(); MFRect rect; MFDisplay_GetDisplayRect(&rect); MFView_SetOrtho(&rect); MFMaterial *pMat = MFMaterial_GetCurrent(); MFTexture *pTex = MFMaterial_GetParameterT(pMat, MFMatStandard_Texture, MFMatStandard_Tex_DifuseMap); MFTexture_GetTextureDimensions(pTex, &textureWidth, &textureHeight); uScale = 1.0f / (float)textureWidth; vScale = 1.0f / (float)textureHeight; halfTexelU = uScale * 0.5f; halfTexelV = vScale * 0.5f; MFPrimitive(PT_QuadList); MFBegin(numBlits * 2); }
void Game_Draw() { MFCALLSTACK; MFRenderer_SetClearColour(0.f, 0.f, 0.2f, 1.f); MFRenderer_ClearScreen(); // Set identity camera (no camera) MFView_Push(); MFView_SetAspectRatio(MFDisplay_GetNativeAspectRatio()); MFView_SetProjection(); MFMaterial_SetMaterial(MFMaterial_GetStockMaterial(MFMat_White)); // set the world matrix to identity MFMatrix world = MFMatrix::identity; // move the box into the scene (along the z axis) world.Translate(MakeVector(0, 0, 5)); // increment rotation static float rotation = 0.0f; rotation += MFSystem_TimeDelta(); // rotate the box world.RotateYPR(rotation, rotation * 2.0f, rotation * 0.5f); // begin rendering the box MFPrimitive(PT_TriList); MFSetMatrix(world); // begin rendering 12 triangles (12 * 3 vertices) MFBegin(3 * 12); // draw a bunch of triangles MFSetColour(1,0,0,1); MFSetPosition(-1,-1, -1); MFSetPosition(-1, 1, -1); MFSetPosition( 1, 1, -1); MFSetPosition(-1,-1, -1); MFSetPosition( 1, 1, -1); MFSetPosition( 1,-1, -1); MFSetColour(0,1,0,1); MFSetPosition(-1,-1,1); MFSetPosition( 1,-1,1); MFSetPosition( 1, 1,1); MFSetPosition(-1,-1,1); MFSetPosition( 1, 1,1); MFSetPosition(-1, 1,1); MFSetColour(0,0,1,1); MFSetPosition( 1,-1,1); MFSetPosition( 1,-1,-1); MFSetPosition( 1, 1,-1); MFSetPosition( 1,-1,1); MFSetPosition( 1, 1,-1); MFSetPosition( 1, 1,1); MFSetColour(1,0,1,1); MFSetPosition(-1,-1,1); MFSetPosition(-1, 1,1); MFSetPosition(-1, 1,-1); MFSetPosition(-1,-1,1); MFSetPosition(-1, 1,-1); MFSetPosition(-1,-1,-1); MFSetColour(1,1,0,1); MFSetPosition(-1, 1,1); MFSetPosition( 1, 1,1); MFSetPosition( 1, 1,-1); MFSetPosition(-1, 1,1); MFSetPosition( 1, 1,-1); MFSetPosition(-1, 1,-1); MFSetColour(0,1,1,1); MFSetPosition(-1,-1,1); MFSetPosition(-1,-1,-1); MFSetPosition( 1,-1,-1); MFSetPosition(-1,-1,1); MFSetPosition( 1,-1,-1); MFSetPosition( 1,-1,1); MFEnd(); MFRect disp; MFDisplay_GetDisplayRect(&disp); MFView_SetOrtho(&disp); pUI->Draw(); MFView_Pop(); }