Example #1
0
//Alterar
int Fill(object * ob, window * win, bufferdevice * dev, int color) {

  	bufferdevice * temp = CreateBuffer(dev->MaxX,dev->MaxY);  
  	DrawObject(ob,win,temp);  
  	FillObject(temp,color);
  	CopyBuffer2Device(temp,dev);
  
  	return 0;
}
Example #2
0
void DrawIMGHDR_2(IMGHDR *img, int x, int y, int x2, int y2, int bleed_x, int bleed_y)
{
	RECT rc;
	DRWOBJ drwobj;
	StoreXYXYtoRECT(&rc, x, y, x2, y2);
	SetProp2ImageOrCanvas(&drwobj, &rc, 0, img, bleed_x, bleed_y);
	SetColor(&drwobj, NULL, NULL);
	DrawObject(&drwobj);
}
Example #3
0
void DrawIMGHDR(IMGHDR *img, int x, int y, int w, int h)
{
	RECT rc;
	DRWOBJ drwobj;
	StoreXYWHtoRECT(&rc, x, y, w, h);
	SetPropTo_Obj5(&drwobj, &rc, 0, img);
	SetColor(&drwobj, NULL, NULL);
	DrawObject(&drwobj);
}
Example #4
0
void RenderFrameDX9(void)
{
	LPDIRECT3DDEVICE9 device = GutGetGraphicsDeviceDX9();
	
	device->BeginScene(); 

	AddImpulse();
	WaterSimulation();
	HeightmapToNormal();

	device->SetRenderTarget(0, g_pMainFramebuffer);
	device->SetDepthStencilSurface(g_pMainDepthbuffer);
	device->Clear(0, NULL, D3DCLEAR_ZBUFFER, 0x0, 1.0f, 0);

	RenderWater();
	DrawObject();

	SwapHeightmaps();

	float x = -1.0f;
	float y = -1.0f;
	float w = 0.4f;
	float h = 0.4f;

	if ( g_iMode & 0x01 )
	{
		DrawImage(g_pTextures[TEX_HEIGHT2], x, y, w, h, &g_ImageInfo);
		x+=w;
	}

	if ( g_iMode & 0x02 )
	{
		D3DXHANDLE shader = g_pWaterEffect->GetTechniqueByName("Heightmap");
		D3DXHANDLE heightmap_var = g_pWaterEffect->GetTechniqueByName("heightmap_current");

		g_pWaterEffect->SetTechnique(shader);
		g_pWaterEffect->SetTexture(heightmap_var, g_pTextures[TEX_HEIGHT2]);

		g_pWaterEffect->Begin(NULL, 0);
		g_pWaterEffect->BeginPass(0);
			GutDrawScreenQuad_DX9(x, y, w, h, &g_ImageInfo);
		g_pWaterEffect->EndPass();
		g_pWaterEffect->End();

		x+=w;
	}

	if ( g_iMode & 0x04 )
	{
		DrawImage(g_pTextures[TEX_NORMAL], x, y, w, h, &g_ImageInfo);
		x+=w;
	}

	device->EndScene(); 
    device->Present( NULL, NULL, NULL, NULL );
}
Example #5
0
/*=========================================================================================
  Name     : LRFShow
  Argument : IplImage* img : 表示に使うIplImage構造体
             char* window_name  : ウィンドウ名
             long* lrf_data : LRF取得データ関数でコピーして使う
                 (オリジナルはそのまま)
             int lrf_data_max : LRF取得データ数
             int window_x : ウィンドウ表示位置x座標
             int window_y : ウィンドウ表示位置y座標
  Return   : no return
  About    : LRFより取得したデータをOpenCVを用いて表示する
  Author   : Ryodo Tanaka
=========================================================================================*/
int LRFShow(const int id, const long lrf_data_max, const long *lrf_data, const long max_dist, const char* lrf_window_name)
{

  cvZero(img[id]);
  DrawObject(img[id], lrf_data_max, lrf_data, max_dist);
  DrawFundamental(img[id]);
  cvShowImage(lrf_window_name,img[id]);
  
  return cvWaitKey(1);

}
Example #6
0
void ProgressBar::drawInternal(Graphics* const Graphics, Real32 Opacity) const
{

	//Draw The ProgressBar
    UIDrawObjectCanvasRefPtr DrawObject(getDrawnDrawObject());
    if(DrawObject != NULL)
    {
        if(DrawObject->getPosition() != _ProgressBarPosition)
        {
            DrawObject->setPosition(_ProgressBarPosition);
        }
        if(DrawObject->getSize() != _ProgressBarSize)
        {
            DrawObject->setSize(_ProgressBarSize);
        }
        DrawObject->draw(Graphics,getOpacity()*Opacity);
    }
	
	//Draw The Progress String
	if(getEnableProgressString() && getFont() != NULL)
	{
		Pnt2f TopLeft, BottomRight;
		getInsideBorderBounds(TopLeft, BottomRight);

		//Draw the progress String
		std::string StringToDraw;
		if(getProgressString().compare("") == 0)
		{
            if(!getIndeterminate())
            {
			    UInt32 Percent(static_cast<Int32>( osgFloor(getPercentComplete() * 100.0f) ));

			    std::stringstream TempSStream;
			    TempSStream << Percent;

			    StringToDraw = TempSStream.str() + std::string("%");
            }
		}
		else
		{
			StringToDraw = getProgressString();
		}

		//Calculate Alignment
		Pnt2f AlignedPosition;
		Pnt2f TextTopLeft, TextBottomRight;
		getFont()->getBounds(StringToDraw, TextTopLeft, TextBottomRight);

		AlignedPosition = calculateAlignment(TopLeft, (BottomRight-TopLeft), (TextBottomRight - TextTopLeft),getAlignment().y(), getAlignment().x());

		//Draw the Text
		Graphics->drawText(AlignedPosition, StringToDraw, getFont(), getDrawnTextColor(), getOpacity()*Opacity);
	}
}
Example #7
0
static void
toggle_pin_selected (LibraryEntryType *entry)
{
  ConnectionType conn;

  if (!SeekPad (entry, &conn, false))
    return;

  AddObjectToFlagUndoList (conn.type, conn.ptr1, conn.ptr2, conn.ptr2);
  TOGGLE_FLAG (SELECTEDFLAG, (AnyObjectType *)conn.ptr2);
  DrawObject (conn.type, conn.ptr1, conn.ptr2);
}
int DrawGLScene(GLvoid)									// Here's Where We Do All The Drawing|绘制过程:后台
{
	glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);	// Clear The Screen And The Depth Buffer|设置颜色为InitGL()中设置的背景色
	glLoadIdentity();									// Reset The View|重置模型观察矩阵
	
	if(RZ - (-15.0f) > 1e-1)							// 加入一个入场动画
	{
		RZ -= 0.05f;
	}
	else
	{
		if(RX - (-5.5f) > 1e-1)
		{
			RX -= 0.01f;
		}
		if(3.2f - RY > 1e-1)
		{
			RY += 0.01f;
		}
	}
	glTranslatef(0.0f,0.0f,RZ);							// 移入屏幕深处15 单位

	glTranslatef(RX,0.0f,0.0f);							// 依据目前的全局X坐标重置Cube位置
    glTranslatef(0.0,RY,0.0);							// 依据目前的全局Y坐标重置Cube位置

   	glRotatef(xrot,1.0f,0.0f,0.0f);						// 绕方向向量(1.0f, 0.0f, 0.0f)即X轴旋转xrot度
    glRotatef(yrot,0.0f,1.0f,0.0f);
    glRotatef(zrot,0.0f,0.0f,1.0f);

    //glColor3f(1.0f, 1.0f, 1.0f);						// 把当前颜色设为白色,否则颜色也与文字一起变化

	// 每次锁定一个2D纹理并对一个Cube进行贴图
	srand(0);
	for(int i = 0; i < M3; i++)
	{
		int r = rand() % CTexture;						// 纹理数量与待贴图四边形数量不一致,随机贴图
		glBindTexture(GL_TEXTURE_2D, texture[r]); 
		DrawObject(i);
	}

    //设置每次沿3个轴转过的角度(整体旋转程序自动控制,全局坐标手动控制)
	xrot += 0.05f;
 	yrot += 0.05f;
  	zrot += 0.05f;

	glColor3f(0.85f-0.15f*float(cos(cnt1)),0.45f-0.05f*float(sin(cnt2)),0.85f-0.15f*float(cos(cnt1+cnt2)));
	// Position The Text On The Screen
	glRasterPos2f(0.5f+0.05f*float(cos(cnt1)), -0.7f+0.32f*float(sin(cnt2)));
 	glPrint("                   Enjoy your online lifestyle - %7.2f", cnt1);
	cnt1 += 0.051f;											// Increase The First Counter
	cnt2 += 0.005f;											// Increase The First Counter
	return TRUE;											// Keep Going
}
Example #9
0
static void scr_Display( void )
{
   glClear( GL_COLOR_BUFFER_BIT );

   glPushMatrix();
      glRotatef(Xrot, 1.0, 0.0, 0.0);
      glRotatef(Yrot, 0.0, 1.0, 0.0);
      glRotatef(Zrot, 0.0, 0.0, 1.0);
      DrawObject();
   glPopMatrix();

}
void ShadowVolume::ProcessModel(const PolygonalModel& model, const MatrixHomogeneous& mTotal, const std::vector<Normals::PolygonNormalData>& normals, bool clip, const ClippingPlane& cp, const PolygonAdjacencyGraph& polygonAdj)
{
	std::pair<PolygonalObject, std::vector<Normals::PolygonNormalData>> shadowObj = GenerateShadowVolume(model, normals, polygonAdj);
	shadowObj.first = mTotal * shadowObj.first;
	for (auto i = shadowObj.second.begin(); i != shadowObj.second.end(); ++i)
		*i = mTotal * *i;

	_shadowSurfaces.push_back(shadowObj.first.polygons);
	_shadowSurfaceNormals.push_back(shadowObj.second);

	for (auto p = shadowObj.first.polygons.begin(); p != shadowObj.first.polygons.end(); ++p)
	{
		p->color = _currPolyId;
		p->colorValid = true;
		++_currPolyId;
	}

	ModelAttr attr2;
	attr2.removeBackFace = BACKFACE_REMOVE_BACK;
	attr2.Shading = SHADING_NONE;
	attr2.forceColor = true;
	attr2.color = _currModelId++;
	DrawingObject img;
	img.shadowVolume = this;
	img.active = DrawingObject::DRAWING_OBJECT_SV;

	_currShadowMode = ShadowExit;
	DrawObject(img, shadowObj.first, mTotal, attr2, shadowObj.second, 0, true, clip, cp);
	_currShadowMode = ShadowEnter;
	size_t normalsOffset = 0;
	for (auto obj = model.begin(); obj != model.end(); ++obj)
	{
		DrawObject(img, *obj, mTotal, attr2, normals, normalsOffset, true, clip, cp);
		normalsOffset += obj->polygons.size();
	}

	attr2.removeBackFace = BACKFACE_REMOVE_FRONT;
	_currShadowMode = ShadowEnter;
	DrawObject(img, shadowObj.first, mTotal, attr2, shadowObj.second, 0, true, clip, cp);
}
void CPaintDlg::DrawRobots()
{
	Invalidate();
	AfxGetApp()->PumpMessage();
	OnPaint();
	if (cameraLock > -1)
	{
		upperleftCellCoords[0] = robots[cameraLock]->x-fieldSide/2;
		upperleftCellCoords[1] = robots[cameraLock]->y-fieldSide/2;

		if (upperleftCellCoords[0]<0)
			upperleftCellCoords[0]+=FieldParameters.fieldWidth;
		if (upperleftCellCoords[0]>=FieldParameters.fieldWidth)
			upperleftCellCoords[0]-=FieldParameters.fieldWidth;

		if (upperleftCellCoords[1]<0)
			upperleftCellCoords[1]+=FieldParameters.fieldHeight;
		if (upperleftCellCoords[1]>=FieldParameters.fieldHeight)
			upperleftCellCoords[1]-=FieldParameters.fieldHeight;
	}
	int xlocal = 0;
	int ylocal = 0;
	int xreal, yreal;
	for (int x = upperleftCellCoords[0]; x < upperleftCellCoords[0]+n; x++)
	{
		xreal = x;
		if (xreal<0)
			xreal+=FieldParameters.fieldWidth;
		if (xreal>=FieldParameters.fieldWidth)
			xreal-=FieldParameters.fieldWidth;
		for (int y = upperleftCellCoords[1]; y < upperleftCellCoords[1]+n; y++)
		{
			yreal = y;
			if (yreal<0)
				yreal+=FieldParameters.fieldHeight;
			if (yreal>=FieldParameters.fieldHeight)
				yreal-=FieldParameters.fieldHeight;
			if (matrix[xreal][yreal] > -1)
				DrawRobot(xlocal,ylocal,robots[matrix[xreal][yreal]]->color);
			else if (matrix[xreal][yreal] == SEVERAL)
				DrawRobot(xlocal,ylocal,Black);
			else if (matrix[xreal][yreal] == OBJ_DEAD)
				DrawRobot(xlocal,ylocal,White);
			else if (matrix[xreal][yreal] < -1)
				DrawObject(xlocal,ylocal,matrix[xreal][yreal]);
			ylocal++;
		}
		xlocal++;
		ylocal = 0;
	}
}
Example #12
0
void ZObjectManager::Draw()
{
	m_nRenderedCnt = 0;
	m_nOnDrawCnt = 0;

	ZObject* pMyCharacter = (ZObject*)g_pGame->m_pMyCharacter;

	for (iterator itor = begin(); itor != end(); ++itor) 
	{
		ZObject* pObject = (*itor).second;
		if (pObject == NULL)			continue;
		if (pObject == pMyCharacter)	continue;

		DrawObject(pObject);

	}

	if( pMyCharacter ) 
	{ 
		RVisualMesh* pVMesh = pMyCharacter->GetVisualMesh();

		if(pVMesh) {
		
			if(pVMesh->GetVisibility() != 1.f) {

				pVMesh->SetSpRenderMode(1);

				DrawObject( pMyCharacter );

				pVMesh->SetSpRenderMode(2);
			}

			pMyCharacter->m_bRendered = DrawObject( pMyCharacter );

			pVMesh->SetSpRenderMode(0);
		}
	}
}
Example #13
0
//-------------------------------- Render -------------------------------------
// 렌더함수
//-----------------------------------------------------------------------------
void Snake_Game::Render()
{
    //UI를 그린다.
    this->DrawUI();

    //뱀의 흔적을 받아온다.
    Snake::SNAKE_TRACE dummy = snake_->GetTrace();

    //흔적대로 뱀을 그린다.
    for(Snake::SNAKE_TRACE::iterator it = dummy.begin(); it != dummy.end(); it++)
    {
        DrawObject((*it),'#');
    }

    //맨뒤는 ' '로 지워준다.
    //이작업을 안한다면 흔적에는 없으나 화면에는 계속 뱀의 흔적이 보인다.
    //만약 전체 화면을 지우고 다시 그리는 작업을 하면
    //화면이 깜빡이는 현상이 일어난다.
    DrawObject(dummy.back(),' ');

    //현재위치에는 뱀의 머리를 그려준다.
    DrawObject(snake_->GetPosition(),'S');
}
Example #14
0
static void Display( void )
{
   glClear( GL_COLOR_BUFFER_BIT );

   glPushMatrix();
      glRotatef(Xrot, 1.0, 0.0, 0.0);
      glRotatef(Yrot, 0.0, 1.0, 0.0);
      glRotatef(Zrot, 0.0, 0.0, 1.0);
      glScalef(5.0, 5.0, 5.0);
      DrawObject();
   glPopMatrix();

   glutSwapBuffers();
}
Example #15
0
static void Display( void )
{
   glClear( GL_COLOR_BUFFER_BIT );

   glPushMatrix();
      glTranslatef( -1.1, 0.0, -15.0 );
      glRotatef(Xrot, 1.0, 0.0, 0.0);
      glRotatef(Yrot, 0.0, 1.0, 0.0);
      glRotatef(Zrot, 0.0, 0.0, 1.0);
      glBindTexture(GL_TEXTURE_2D, yuvObj);
      DrawObject();
   glPopMatrix();

   glPushMatrix();
      glTranslatef(  1.1, 0.0, -15.0 );
      glRotatef(Xrot, 1.0, 0.0, 0.0);
      glRotatef(Yrot, 0.0, 1.0, 0.0);
      glRotatef(Zrot, 0.0, 0.0, 1.0);
      glBindTexture(GL_TEXTURE_2D, rgbObj);
      DrawObject();
   glPopMatrix();

   glutSwapBuffers();
}
void Draw ( ESContext *esContext )
{
	glViewport(0, 0, 1024, 1024);
	glBindFramebuffer(GL_FRAMEBUFFER, fboId);

	glClearColor ( 0.0f, 0.0f, 1.0f, 0.0f );
	glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT);

	//draw terrain and sphere to FBO to make shadow map
	//...

	//draw scene's objects
	DrawObject(objectList[0], mainCamera);	//ligh buld
	glBindFramebuffer(GL_FRAMEBUFFER, 0);
	glViewport(0, 0, 1024, 1024);
	glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT);

	DrawObject(objectList[1], mainCamera);	//terrain
	DrawObject(objectList[2], mainCamera);	//sphere

	

	eglSwapBuffers ( esContext->eglDisplay, esContext->eglSurface );
}
Example #17
0
//Draws the player to the screen
void DrawTortoise(SDL_Surface *screen)
{
  DrawObject(screen, &player);
  
  Uint32 color = SDL_MapRGB(screen->format, 255,255,255);

  int left = player.location.x * TILE_WIDTH;
  int right = left + 31;
  int top = (14 - player.location.y) * TILE_HEIGHT;
  int bottom = top + 31;

  DrawPixel(screen, left, top, color);
  DrawPixel(screen, left, bottom, color);
  DrawPixel(screen, right, top, color);
  DrawPixel(screen, right, bottom, color);
}
unsigned int Render_3DObject(unsigned int objnum)
{
  char * iffed_label=0;
  if ( objects[objnum].has_label!= 0 ) { iffed_label = objects[objnum].label; }

  DrawObject(
             objects[objnum].position.x,
             objects[objnum].position.y,
             objects[objnum].position.z,
             objects[objnum].roll,
             objects[objnum].width,
             objects[objnum].height,
             objects[objnum].hardcoded_shape,
             iffed_label
           );
  return 1;
}
Example #19
0
//--------------------------------------------------------------------------------------
// Name: DrawScene()
// Desc: 
//--------------------------------------------------------------------------------------
VOID CSample42::DrawScene()
{
    m_SharpRT.SetFramebuffer();

    glClearColor( 0.04f, 0.04f, 0.04f, 1.0f );
    glClearDepthf( 1.0f );
    glClear( GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT );

    glEnable( GL_CULL_FACE );
    glCullFace( GL_BACK );
    glEnable( GL_DEPTH_TEST );
    glDisable( GL_BLEND );
    glFrontFace( GL_CW );

    DrawObject( &m_Object );
    
	m_SharpRT.DetachFramebuffer();                 
}
Example #20
0
void MainLoop(void)
{
	ARUint8 *image;
	ARMarkerInfo *marker_info;
	int marker_num;
	int j, k;

	if ((image = (ARUint8 *)arVideoGetImage()) == NULL) {
		arUtilSleep(2);
		return;

	}

	argDrawMode2D();
	argDispImage(image, 0, 0);

	if (arDetectMarker(image, thresh, &marker_info, &marker_num) < 0) {
		Cleanup();
		exit(0);

	}

	arVideoCapNext();

	k = -1;
	for (j = 0; j < marker_num; j++) {
		if (patt_id == marker_info[j].id) {
			if (k == -1) k = j;
			else if (marker_info[k].cf < marker_info[j].cf) k = j;

		}

	}

	if (k != -1) {
		arGetTransMat(&marker_info[k], patt_center, patt_width, patt_trans);
		DrawObject();
	}

	argSwapBuffers();
}
Example #21
0
void
RoomContainer::_DrawActors()
{
	std::list<Reference<Object> >::const_iterator a;
	std::list<Reference<Object> > actorsList;
	Core::Get()->GetObjectList(actorsList);
	
	for (a = actorsList.begin();
			a != actorsList.end(); a++) {
		if (Actor* actor = dynamic_cast<Actor*>(a->Target())) {
			try {
				DrawObject(*actor);
			} catch (const char* string) {
				//std::cerr << "_DrawActors: exception: " << string << std::endl;
				continue;
			} catch (...) {
				std::cerr << "Caught exception on actor " << actor->Name() << std::endl;
				continue;
			}
		}
	}
}
Example #22
0
bool SSvgWnd::OnPaint(SBaseDC *pDC)
{
//	pDC->TextOutA(10,10,"My QT SVG!");
	SSvgObject *pFirstObj = m_Document.GetRootObject();
	if(pFirstObj != NULL)
		pFirstObj = pFirstObj->GetChild();
//	if(pFirstObj != NULL)
//		pFirstObj = pFirstObj->GetNext();
	if( pFirstObj != NULL)
	{
		YSRECT r = GetClientRect();

		m_ViewRect.left =GetSvgCoord((double)-m_iOffsetX);
		m_ViewRect.top = GetSvgCoord((double)-m_iOffsetY );
		m_ViewRect.right = m_ViewRect.left + GetSvgCoord((double)(r.right-r.left/*-m_iOffsetX*/));
		m_ViewRect.bottom = m_ViewRect.top + GetSvgCoord((double)(r.bottom-r.top/*-m_iOffsetY*/));

		pDC->FillRect(0,0,r.right-r.left,r.bottom-r.top,
			GetColorByString(pFirstObj->GetAttribute("fill")));
		DrawObject(pDC,pFirstObj,m_iOffsetX,m_iOffsetY);
	}
	return true;
}
Example #23
0
void
RoomContainer::_DrawAnimations(bool advanceFrame)
{
	if (fAnimations.size() == 0)
		return;

	std::vector<Animation*>::const_iterator i;
	for (i = fAnimations.begin(); i != fAnimations.end(); i++) {
		try {
			Animation* animation = *i;
			if (animation->IsShown()) {
				if (advanceFrame)
					animation->Next();
				const Bitmap* frame = animation->Bitmap();
				DrawObject(frame, animation->Position(), false);
			}
		} catch (const char* string) {
			std::cerr << string << std::endl;
			continue;
		} catch (...) {
			continue;
		}
	}
}
Example #24
0
void AI::GlutDisplay()
{
	glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);

	glColor3f(1, 1, 1);

	for (std::vector<GameObject *>::iterator it = m_goList.begin(); it != m_goList.end(); ++it)
	{
		GameObject *go = (GameObject *)*it;
		if (go->active)
		{
			DrawObject(go);
		}
	}

	//glColor3f(1.0, 1.0, 1.0);
	char temp[64];
	sprintf_s(temp, "Police Position: %.2f %.2f %.2f", m_goList.at(0)->pos.x, m_goList.at(0)->pos.y, m_goList.at(0)->pos.z);
	//Testing for position

	RenderStringOnScreen(0, 94, temp);
	//sprintf_s(temp, "Alarm : %.1b", Alarm);

	RenderStringOnScreen(0, 90, BooltoString(Alarm));
	//sprintf_s(temp, "Mass: %.1f", m_ship->mass);
	//RenderStringOnScreen(0, 86, temp);

	////Exercise 4: Render m_lives and m_score
	//sprintf_s(temp, "Lives: %d", m_lives);
	//RenderStringOnScreen(100, 94, temp);
	//sprintf_s(temp, "Score: %d", m_score);
	//RenderStringOnScreen(100, 90, temp);

	glutSwapBuffers();
	glutPostRedisplay();
}
Example #25
0
//------------------------------- InitGame ------------------------------------
// 게임을 초기화한다.
//-----------------------------------------------------------------------------
bool Snake_Game::InitGame()
{
    SetCursorType(NOCURSOR);

    this->LoadGame();

    srand(time(NULL));

    //남은 아이템만큼 아이템을 그려준다.
    for (int i=item_num_; i<goal_item_num_; i++)
    {
        while(true)
        {
            Position dummy(rand()%kMaxItemPosWidth,rand()%kMaxItemPosHeigh);
            if(Getchon(dummy) == ' ')
            {
                DrawObject(dummy,rand()%9+1);
                break;
            }
        }
    }

    return true;
}
Example #26
0
//--------------------------------------------------------------------------------------
// Name: Render()
// Desc: 
//--------------------------------------------------------------------------------------
VOID CSample22::Render()
{
    glViewport( 0, 0, m_nWidth, m_nHeight );
    glBindFramebuffer( GL_FRAMEBUFFER, 0 );

    glClearColor( 0.04f, 0.04f, 0.04f, 1.0f );
    glClear( GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT );

    glEnable( GL_CULL_FACE );
    glCullFace( GL_BACK );
    glEnable( GL_DEPTH_TEST );

    DrawObject( &m_Object );

    // Update the timer
    m_Timer.MarkFrame();

    // Render the user interface
    m_UserInterface.Render( m_Timer.GetFrameRate() );

    // Put the state back
    glDisable( GL_CULL_FACE );
    glDisable( GL_DEPTH_TEST );
}
Example #27
0
/*
 * InventoryDrawSingleItem:  Draw given inventory item, at given row and col
 *   in relative coordinates.
 */
void InventoryDrawSingleItem(InvItem *item, int row, int col)
{
    HDC hdc;
    AREA area, obj_area;
    char temp[MAXAMOUNT + 1];
    Bool draw_cursor;

    area.x = col * INVENTORY_BOX_WIDTH;
    area.y =  row * INVENTORY_BOX_HEIGHT;
    area.cx = INVENTORY_BOX_WIDTH;
    area.cy = INVENTORY_BOX_HEIGHT;

    obj_area.x  = area.x + INVENTORY_OBJECT_BORDER;
    obj_area.y  = area.y + INVENTORY_OBJECT_BORDER;
    obj_area.cx = INVENTORY_OBJECT_WIDTH - 1;
    obj_area.cy = INVENTORY_OBJECT_HEIGHT - 1;

    hdc = GetDC(hwndInv);

    // See if we should draw cursor here
    draw_cursor = (GetFocus() == hwndInv && row == cursor_row - top_row && col == cursor_col);
    if (draw_cursor)
        OffscreenBitBlt(hdc, 0, 0, INVENTORY_BOX_WIDTH, INVENTORY_BOX_HEIGHT,
                        cursor_bits, 0, 0, INVENTORY_BOX_WIDTH, OBB_FLIP);
    else OffscreenWindowBackground(&inventory_bkgnd,
                                       inventory_area.x + area.x, inventory_area.y + area.y,
                                       INVENTORY_BOX_WIDTH, INVENTORY_BOX_HEIGHT);

    if (item->is_using)
        OffscreenBitBlt(hdc, INVENTORY_OBJECT_BORDER, INVENTORY_OBJECT_BORDER,
                        INVENTORY_OBJECT_WIDTH, INVENTORY_OBJECT_HEIGHT,
                        inuse_bits, 0, 0, INVENTORY_OBJECT_WIDTH, OBB_FLIP | OBB_TRANSPARENT);

    DrawObject(hdc, item->obj, item->obj->animate->group, True, &obj_area, NULL,
               INVENTORY_OBJECT_BORDER, INVENTORY_OBJECT_BORDER, 0, False);

    OffscreenCopy(hdc, area.x, area.y, INVENTORY_BOX_WIDTH, INVENTORY_BOX_HEIGHT, 0, 0);

    // Draw numbers for number items
    if (IsNumberObj(item->obj->id) && cinfo->config->inventory_num)
    {
        sprintf(temp, "%d", item->obj->amount);

        SetBkMode(hdc, TRANSPARENT);
        SelectObject(hdc, GetFont(FONT_STATNUM));

        SetTextColor(hdc, GetColor(COLOR_INVNUMBGD));
        TextOut(hdc, obj_area.x + 1, obj_area.y + 1, temp, strlen(temp));
        SetTextColor(hdc, GetColor(COLOR_INVNUMFGD));
        TextOut(hdc, obj_area.x, obj_area.y, temp, strlen(temp));
    }

    // Draw border around area to clear previous cursor (if any)
    if (!draw_cursor)
    {
        DrawWindowBackgroundBorder(&inventory_bkgnd, hdc, &obj_area, INVENTORY_OBJECT_BORDER,
                                   inventory_area.x + obj_area.x, inventory_area.y + obj_area.y, -1, NULL);
    }

    ReleaseDC(hwndInv, hdc);
}
Example #28
0
void CImageView::ShowImage(QString &strPathName)
{
	const CString &Path = strPathName;
	Jpeg jpeg;
	ZeroMemory(&jpeg, sizeof(jpeg));

	if (!m_JpegCodec.GetJpegInformation((LPCTSTR) Path, &jpeg)) return;
	if (m_dwBufferLength < jpeg.dwLength) {
		if (m_pBuffer) _aligned_free(m_pBuffer);
		m_pBuffer = (BYTE *) _aligned_malloc(jpeg.dwLength, 16);
		m_dwBufferLength = jpeg.dwLength;
	}

	jpeg.pBuffer = (BYTE *) m_pBuffer;
	if (!m_JpegCodec.Decode((LPCTSTR) Path, &jpeg)) {
		return;
	}

	int width = (jpeg.bm.biWidth<= 360)?(2*jpeg.bm.biWidth):(jpeg.bm.biWidth);
	int height = (jpeg.bm.biHeight<= 288)?(2*jpeg.bm.biHeight):(jpeg.bm.biHeight);

	DWORD dwEngId = _ttoi(m_strEngId.GetBuffer());

	CRect	rcVCAROI;
	VCA5_RECT	rcROIEng = CAPPConfigure::Instance()->GetAPPEngineInfo( dwEngId )->tSourceData.rcROI;

	rcVCAROI.left	= rcROIEng.x;
	rcVCAROI.top	= rcROIEng.y;
	rcVCAROI.right	= rcROIEng.x + rcROIEng.w;
	rcVCAROI.bottom	= rcROIEng.y + rcROIEng.h;

	if( rcVCAROI.Size() == CSize(0, 0) ) {
		rcVCAROI.CopyRect(&m_ClientRect);
	} else {
		rcVCAROI.right = min(rcVCAROI.right-1, width);
		rcVCAROI.bottom = min(rcVCAROI.bottom-1, height);
		PIXELTOPERCENT(rcVCAROI.left, rcVCAROI.left, width);
		PIXELTOPERCENT(rcVCAROI.top, rcVCAROI.top, height);
		PIXELTOPERCENT(rcVCAROI.right, rcVCAROI.right, width);
		PIXELTOPERCENT(rcVCAROI.bottom, rcVCAROI.bottom, height);

		PERCENTTOPIXEL(rcVCAROI.left, rcVCAROI.left, m_ClientRect.right);
		PERCENTTOPIXEL(rcVCAROI.top, rcVCAROI.top, m_ClientRect.bottom);
		PERCENTTOPIXEL(rcVCAROI.right, rcVCAROI.right, m_ClientRect.right);
		PERCENTTOPIXEL(rcVCAROI.bottom, rcVCAROI.bottom, m_ClientRect.bottom);
	}

	m_ClientRect.left = 0;
	m_ClientRect.top = 0;
	m_ClientRect.right = width;
	m_ClientRect.bottom = height;

	AdjustDlgRect(width, height);
	RelocateControls(width, height);
	
	
	DrawImage(jpeg.bm.biWidth, jpeg.bm.biHeight, jpeg.pImage, jpeg.bm);
	DrawSingleZone(rcVCAROI, jpeg.pZone);
	DrawObject(rcVCAROI, jpeg.bm.biWidth, jpeg.bm.biHeight, jpeg.pObject);
	if(jpeg.pRule) DrawTimeStampAndRuleType(jpeg.bm.biWidth, jpeg.bm.biHeight, jpeg.i64TimeStamp, jpeg.pRule->usRuleType);

	
	RECT	ScreenRect;
	ScreenRect = m_ClientRect;

	ClientToScreen((POINT*)&ScreenRect.left );
	ClientToScreen((POINT*)&ScreenRect.right );

	m_pD3d->PrimaryPresentation(&ScreenRect, &m_ClientRect);
}
Example #29
0
void FormView::Paint(Draw& w)
{
	if (!IsLayout())
	{
		w.DrawRect(GetRect(), White());
		return;
	}

	Rect r = Zoom(GetPageRect());

	DrawGrid(w);
	DrawRect(w, r, 1, LtBlue());

	w.DrawRect(0, 0, r.left, 3000, White());
	w.DrawRect(r.right + 1, 0, 3000, 3000, White());
	w.DrawRect(r.left, 0, 5000, r.top, White());
	w.DrawRect(r.left, r.bottom + 1, 3000, 3000, White());

//	if (_showInfo)
//	{
//		r.SetSize( Zoom(Size(804, 604)) );
//		DrawRect(w, r.Offseted( Zoom(Size(-2, -2)) ), 1, LtMagenta());
//		r = Zoom(GetPageRect());
//	}

	if (GetObjectCount() > 0 && _showInfo == 2)
	{
		Rect b = Zoom(GetObjectsRect()).Offseted(1, 1);
		b.SetSize( b.GetSize() + Size(-2, -2) );
		DrawRect(w, b, 1, Yellow());
	}

	Vector<int> sel = GetSelected();

	bool coloring = GetBool("View.Coloring");
	int ci = 0;
	if (sel.GetCount() > 0)
	{
		if (sel.GetCount() == 1)
		{
			for (int i = 0; i < GetObjectCount(); ++i)
			{
				if (ci++ == _colors.GetCount() - 1) ci = 0;

				if (coloring && i != sel[0])
					DrawObject(w, i, _colors[ci], false);
				else
					DrawObject(w, i, (!coloring && (i == sel[0])) ? _colors[ci] : LtGray(),
						i == sel[0]);
			}
		}
		else
		{
			for (int i = 0; i < GetObjectCount(); ++i)
			{
				if (ci++ == _colors.GetCount() - 1) ci = 0;

				bool found = false;
				for (int j = 0; j < sel.GetCount(); ++j)
					if ( i == sel[j])
					{
						found = true;
						break;
					}
				if (coloring && !found)
					DrawObject(w, i, _colors[ci], false);
				else
					DrawObject(w, i, (!coloring && found) ? _colors[ci] : LtGray(), false);
			}

			Size g = GetGridSize();
			Rect s = GetSelectionRect().Offseted(-g.cx / 2, -g.cy / 2);
			s.SetSize(s.GetSize() + Size(g.cx, g.cy));

			Vector<int> sel = GetSelected();

			bool a1 = true;	// allow horz align
			bool a2 = true;	// allow vert align
			dword f1;		// first horz align
			dword f2;		// first vert align
	
			for (int i = 0; i < sel.GetCount(); ++i)
			{
				FormObject *pI = GetObject(sel[i]);
				if (!pI) continue;

				if (i == 0) { f1 = pI->GetHAlign(); f2 = pI->GetVAlign(); }

				if (f1 != pI->GetHAlign()) { a1 = false; }
				if (f2 != pI->GetVAlign()) { a2 = false; }
			}

			DrawSprings(w, Zoom(s), f1, f2, a1, a2, a1, a2, false);
			DrawRect(w, Zoom(s), 1, LtRed());

			s = GetSelectionRect().Offseted(-g.cx, -g.cy);
			s.SetSize(s.GetSize() + Size(g.cx * 2, g.cy * 2));

			DrawGroupTools(w, Zoom(s));
		}
		return;
	}

	for (int i = 0; i < GetObjectCount(); ++i)
	{
		if (ci++ == _colors.GetCount() - 1) ci = 0;
		DrawObject(w, i, coloring ? _colors[ci] : LtGray());
	}

	if (sel.GetCount() == 0)
		w.DrawImage(r.right, r.bottom, FormViewImg::SizerBR());
}
Example #30
0
void Scene::Draw( glutil::MatrixStack &modelMatrix, int materialBlockIndex, float alphaTetra )
{
	//Render the ground plane.
	{
		glutil::PushStack push(modelMatrix);
		modelMatrix.RotateX(-90);

		DrawObject(m_pTerrainMesh.get(), GetProgram(LP_VERT_COLOR_DIFFUSE), materialBlockIndex, 0,
			modelMatrix);
	}

	//Render the tetrahedron object.
	{
		glutil::PushStack push(modelMatrix);
		modelMatrix.Translate(75.0f, 5.0f, 75.0f);
		modelMatrix.RotateY(360.0f * alphaTetra);
		modelMatrix.Scale(10.0f, 10.0f, 10.0f);
		modelMatrix.Translate(0.0f, sqrtf(2.0f), 0.0f);
		modelMatrix.Rotate(glm::vec3(-0.707f, 0.0f, -0.707f), 54.735f);

		DrawObject(m_pTetraMesh.get(), "lit-color", GetProgram(LP_VERT_COLOR_DIFFUSE_SPECULAR),
			materialBlockIndex, 1, modelMatrix);
	}

	//Render the monolith object.
	{
		glutil::PushStack push(modelMatrix);
		modelMatrix.Translate(88.0f, 5.0f, -80.0f);
		modelMatrix.Scale(4.0f, 4.0f, 4.0f);
		modelMatrix.Scale(4.0f, 9.0f, 1.0f);
		modelMatrix.Translate(0.0f, 0.5f, 0.0f);

		DrawObject(m_pCubeMesh.get(), "lit", GetProgram(LP_MTL_COLOR_DIFFUSE_SPECULAR),
			materialBlockIndex, 2, modelMatrix);
	}

	//Render the cube object.
	{
		glutil::PushStack push(modelMatrix);
		modelMatrix.Translate(-52.5f, 14.0f, 65.0f);
		modelMatrix.RotateZ(50.0f);
		modelMatrix.RotateY(-10.0f);
		modelMatrix.Scale(20.0f, 20.0f, 20.0f);

		DrawObject(m_pCubeMesh.get(), "lit-color", GetProgram(LP_VERT_COLOR_DIFFUSE_SPECULAR),
			materialBlockIndex, 3, modelMatrix);
	}

	//Render the cylinder.
	{
		glutil::PushStack push(modelMatrix);
		modelMatrix.Translate(-7.0f, 30.0f, -14.0f);
		modelMatrix.Scale(15.0f, 55.0f, 15.0f);
		modelMatrix.Translate(0.0f, 0.5f, 0.0f);

		DrawObject(m_pCylMesh.get(), "lit-color", GetProgram(LP_VERT_COLOR_DIFFUSE_SPECULAR),
			materialBlockIndex, 4, modelMatrix);
	}

	//Render the sphere.
	{
		glutil::PushStack push(modelMatrix);
		modelMatrix.Translate(-83.0f, 14.0f, -77.0f);
		modelMatrix.Scale(20.0f, 20.0f, 20.0f);

		DrawObject(m_pSphereMesh.get(), "lit", GetProgram(LP_MTL_COLOR_DIFFUSE_SPECULAR),
			materialBlockIndex, 5, modelMatrix);
	}
}