Пример #1
0
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 );
}
Пример #2
0
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); 
}