void OptionList::DrawTo(void* pFrameBuffer, UINT32 ToScreen ) { EFI_STATUS Status; EFI_IMAGE_OUTPUT *pLocalFrameBuffer = (EFI_IMAGE_OUTPUT*) pFrameBuffer; UEFI_PIXEL *Bitmap = 0; if(ToScreen ==EFI_HII_DIRECT_TO_SCREEN){ }else{ Bitmap = pLocalFrameBuffer->Image.Bitmap; } if(gHiiFont ==NULL) { return; } if(GetFocusState() == GOT_FOCUS){ CopyFromFrameBuffer(Bitmap,pLocalFrameBuffer->Width,RestorBuffer, W(), X(), Y()+ H(), W(), H()*mOptionNum ); SetFocusState(ON_FOCUS); }else if (GetFocusState() == LOSE_FOCUS){ CopyToFrameBuffer(Bitmap,pLocalFrameBuffer->Width,RestorBuffer, W(), X(), Y()+ H(), W(), H()*mOptionNum ); SetFocusState(NO_FOCUS); } if (GetFocusState() == NO_FOCUS){ }else if (GetFocusState() == ON_FOCUS){ UINT16 StartX = X(); UINT16 StartY = Y(); for(UINT16 i =0; i< mOptionNum; i++){ StartY = StartY + gDefaultFontHeight; Status = gHiiFont->StringToImage ( gHiiFont, EFI_HII_IGNORE_IF_NO_GLYPH | EFI_HII_OUT_FLAG_CLIP | EFI_HII_OUT_FLAG_CLIP_CLEAN_X | EFI_HII_OUT_FLAG_CLIP_CLEAN_Y | EFI_HII_IGNORE_LINE_BREAK | ToScreen, (CHAR16*)L" ", (const EFI_FONT_DISPLAY_INFO*)( (i ==mCurOption)?NULL:&gDefaultFont), &pLocalFrameBuffer, (UINTN) StartX, (UINTN) StartY, NULL, NULL, NULL ); //!draw textbox password Status = gHiiFont->StringToImage ( gHiiFont, EFI_HII_IGNORE_IF_NO_GLYPH | EFI_HII_OUT_FLAG_CLIP | EFI_HII_OUT_FLAG_CLIP_CLEAN_X | EFI_HII_OUT_FLAG_CLIP_CLEAN_Y | EFI_HII_IGNORE_LINE_BREAK | ToScreen, (CHAR16*)Lists[i], (const EFI_FONT_DISPLAY_INFO*)((i ==mCurOption)?NULL:&gDefaultFont), &pLocalFrameBuffer, (UINTN) StartX, (UINTN) StartY, NULL, NULL, NULL ); } } StringBrick::DrawTo(pFrameBuffer, ToScreen ); }
int Project::Render() { GzToken nameListTriangle[2]; /* vertex attribute names */ GzPointer valueListTriangle[2]; /* vertex attribute pointers */ GzCoord vertexList[3]; /* vertex position coordinates */ GzCoord normalList[3]; /* vertex normals */ int status; objParser.getNumOfVertices(); /* Initialize Display */ status |= GzInitDisplay(m_pDisplay); /* * Tokens associated with triangle vertex values */ nameListTriangle[0] = GZ_POSITION; nameListTriangle[1] = GZ_NORMAL; // I/O File open FILE *outfile; if( (outfile = fopen( OUTFILE , "wb" )) == NULL ) { AfxMessageBox( "The output file was not opened\n" ); return GZ_FAILURE; } /* * Walk through the list of triangles, set color * and render each triangle */ for (int i = 0; i < objParser.getNumOfFaces(); ++i) { Face face = objParser.getFace(i + 1); vector<Face::FaceVertex> faceVertices = face.faceVertices; for (int j = 0; j < faceVertices.size(); ++j) { Face::FaceVertex faceVertex = faceVertices[j]; Vertex vertex = objParser.getVertex(faceVertex.v); VertexNormal vertexNormal = objParser.getVertexNormal(faceVertex.vn); vertexList[j][0] = vertex.x; vertexList[j][1] = vertex.y; vertexList[j][2] = vertex.z; normalList[j][0] = vertexNormal.x; normalList[j][1] = vertexNormal.y; normalList[j][2] = vertexNormal.z; } valueListTriangle[0] = (GzPointer)vertexList; valueListTriangle[1] = (GzPointer)normalList; GzPutTriangle(m_pRender, 2, nameListTriangle, valueListTriangle); } //GzFlushDisplay2File(outfile, m_pDisplay); /* write out or update display to file*/ GzFlushDisplay2FrameBuffer(m_pFrameBuffer, m_pDisplay); // write out or update display to frame buffer switch(currRenderFunc) { case 1: { CreateDepthMap(m_pDisplay, m_pDepthMap); BlurDepthMap(m_pDepthMap, m_pDepthMapBlurred); CopyToFrameBuffer(m_pFrameBuffer, m_pDepthMapBlurred); break; } case 2: { CreateDepthMap(m_pDisplay, m_pDepthMap); BlurDepthMap(m_pDepthMap, m_pDepthMapBlurred); GetEdgeMap(m_pDepthMapBlurred, m_pEdgeMap, m_pFF1_x, m_pFF1_y, m_pGradient); CopyToFrameBuffer(m_pFrameBuffer, m_pEdgeMap); break; } case 3: { ApplyGaussianBlur(m_pFrameBuffer, m_p3DImageBlurred, m_ifilterLength); CopyToFrameBuffer(m_pFrameBuffer, m_p3DImageBlurred); break; } case 4: { ApplyGaussianBlur(m_pFrameBuffer, m_p3DImageBlurred, m_ifilterLength); MultiplyImageWithTexture(m_p3DImageBlurred, m_pProceduralTexture, m_pTextureImageMult); CopyToFrameBuffer(m_pFrameBuffer, m_pTextureImageMult); break; } case 5: { ApplyGaussianBlur(m_pFrameBuffer, m_p3DImageBlurred, m_ifilterLength); MultiplyImageWithTexture(m_p3DImageBlurred, m_pImageTexture, m_pTextureImageMult); CopyToFrameBuffer(m_pFrameBuffer, m_pTextureImageMult); break; } case 6: { CreateDepthMap(m_pDisplay, m_pDepthMap); BlurDepthMap(m_pDepthMap, m_pDepthMapBlurred); GetEdgeMap(m_pDepthMapBlurred, m_pEdgeMap, m_pFF1_x, m_pFF1_y, m_pGradient); FindForceField(m_pFF1_x, m_pFF1_y, m_pGradient, m_pFF_x, m_pFF_y); unsigned char* output; GzNewFrameBuffer(&output, m_nWidth, m_nHeight); DrawLooseStrokes(m_pEdgeMap, m_pFF_x, m_pFF_y, output); CopyToFrameBuffer(m_pFrameBuffer, output); break; } case 7: { CreateDepthMap(m_pDisplay, m_pDepthMap); BlurDepthMap(m_pDepthMap, m_pDepthMapBlurred); GetEdgeMap(m_pDepthMapBlurred, m_pEdgeMap, m_pFF1_x, m_pFF1_y, m_pGradient); ApplyGaussianBlur(m_pFrameBuffer, m_p3DImageBlurred, m_ifilterLength); if (lastTexture == 1) CopyToFrameBuffer(m_pTexture, m_pImageTexture); else CopyToFrameBuffer(m_pTexture, m_pProceduralTexture); MultiplyImageWithTexture(m_p3DImageBlurred, m_pTexture, m_pTextureImageMult); FindForceField(m_pFF1_x, m_pFF1_y, m_pGradient, m_pFF_x, m_pFF_y); DrawLooseStrokes(m_pEdgeMap, m_pFF_x, m_pFF_y, m_pTextureImageMult); CopyToFrameBuffer(m_pFrameBuffer, m_pTextureImageMult); break; } default: break; } //CreateDepthMap(m_pDisplay, m_pDepthMap); //BlurDepthMap(m_pDepthMap, m_pDepthMapBlurred); //GetEdgeMap(m_pDepthMapBlurred, m_pEdgeMap, m_pFF1_x, m_pFF1_y, m_pGradient); //ApplyGaussianBlur(m_pFrameBuffer, m_p3DImageBlurred, 9); //MultiplyImageWithTexture(m_p3DImageBlurred, m_pPaperTexture, m_pTextureImageMult); // //FindForceField(m_pFF1_x, m_pFF1_y, m_pGradient, m_pFF_x, m_pFF_y); //unsigned char* output; //GzNewFrameBuffer(&output, m_nWidth, m_nHeight); ////DrawLine(line, 1, 230, 200, 210, 0, 0, 0); ////DrawForceField(m_pDepthMap, m_pFF_x, m_pFF_y); //DrawLooseStrokes(m_pEdgeMap, m_pFF_x, m_pFF_y, m_pTextureImageMult); //CopyToFrameBuffer(m_pFrameBuffer, m_pTextureImageMult); /* * Close file */ if( fclose( outfile ) ) AfxMessageBox( "The output file was not closed\n" ); if (status) return(GZ_FAILURE); else return(GZ_SUCCESS); }