//========= Copyright 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 ); }