|
|
//========= Copyright � 1996-2005, Valve Corporation, All rights reserved. ============//
//
// Purpose:
//
// $NoKeywords: $
//=============================================================================//
#include "stdafx.h"
#include "Render2D.h"
#include "RenderUtils.h"
#include "mapview2d.h"
#include "toolinterface.h"
//-----------------------------------------------------------------------------
// Purpose: Draws the measurements of a brush in the 2D view.
// Input : pRender -
// Mins -
// Maxs -
// nFlags -
//-----------------------------------------------------------------------------
void DrawBoundsText(CRender2D *pRender, const Vector &Mins, const Vector &Maxs, int nFlags) { CMapView2D *pView = (CMapView2D*) pRender->GetView();
// Calculate the solid's extents along our 2D view axes.
Vector Extents = Maxs - Mins; Vector Center = (Mins + Maxs ) * 0.5f;
for ( int i=0; i<3;i++ ) Extents[i] = fabs(Extents[i]); // Transform the solids mins and maxs to 2D view space. These are used
// for placing the text in the view.
Vector2D projMins, projMaxs, projCenter; pRender->TransformPoint( projMins, Mins ); pRender->TransformPoint( projMaxs, Maxs ); pRender->TransformPoint( projCenter, Center );
if( projMins.x > projMaxs.x ) { V_swap( projMins.x, projMaxs.x ); }
if( projMins.y > projMaxs.y ) { V_swap( projMins.y, projMaxs.y ); }
//
// display the extents of this brush
//
char extentText[30]; int nTextX, nTextY; int nTextFlags;
pRender->SetTextColor( 255, 255, 255 );
// horz
sprintf( extentText, "%.1f", Extents[pView->axHorz] ); nTextFlags = CRender2D::TEXT_JUSTIFY_HORZ_CENTER; nTextX = projCenter.x;
if ( nFlags & DBT_TOP ) { nTextY = projMins.y - (HANDLE_RADIUS*3); nTextFlags |= CRender2D::TEXT_JUSTIFY_TOP; } else { nTextY = projMaxs.y + (HANDLE_RADIUS*3); nTextFlags |= CRender2D::TEXT_JUSTIFY_BOTTOM; }
pRender->DrawText( extentText, nTextX, nTextY, nTextFlags );
// vert
sprintf( extentText, "%.1f", Extents[pView->axVert] ); nTextFlags = CRender2D::TEXT_JUSTIFY_VERT_CENTER; nTextY = projCenter.y; if ( nFlags & DBT_LEFT ) { nTextX = projMins.x - (HANDLE_RADIUS*3); nTextFlags |= CRender2D::TEXT_JUSTIFY_LEFT; } else { nTextX = projMaxs.x + (HANDLE_RADIUS*3); nTextFlags |= CRender2D::TEXT_JUSTIFY_RIGHT; } pRender->DrawText( extentText, nTextX, nTextY, nTextFlags ); }
|