void DrawGraphicHaloText( EDA_RECT* aClipBox, wxDC * aDC, const wxPoint &aPos, const COLOR4D aBgColor, COLOR4D aColor1, COLOR4D aColor2, const wxString &aText, double aOrient, const wxSize &aSize, enum EDA_TEXT_HJUSTIFY_T aH_justify, enum EDA_TEXT_VJUSTIFY_T aV_justify, int aWidth, bool aItalic, bool aBold, void (*aCallback)( int x0, int y0, int xf, int yf ), PLOTTER * aPlotter ) { // Swap color if contrast would be better // TODO: Maybe calculate contrast some way other than brightness if( aBgColor.GetBrightness() > 0.5 ) { COLOR4D c = aColor1; aColor1 = aColor2; aColor2 = c; } // Draw the background DrawGraphicText( aClipBox, aDC, aPos, aColor1, aText, aOrient, aSize, aH_justify, aV_justify, aWidth, aItalic, aBold, aCallback, aPlotter ); // Draw the text DrawGraphicText( aClipBox, aDC, aPos, aColor2, aText, aOrient, aSize, aH_justify, aV_justify, aWidth/4, aItalic, aBold, aCallback, aPlotter ); }
void EDA_DRAW_PANEL::ReDraw( wxDC* DC, bool erasebg ) { BASE_SCREEN* Screen = GetScreen(); if( Screen == NULL ) return; COLOR4D bgColor = GetParent()->GetDrawBgColor(); // TODO(JE): Is this correct? if( bgColor.GetBrightness() > 0.5 ) { g_XorMode = GR_NXOR; g_GhostColor = BLACK; } else { g_XorMode = GR_XOR; g_GhostColor = WHITE; } GRResetPenAndBrush( DC ); DC->SetBackground( wxBrush( bgColor.ToColour() ) ); DC->SetBackgroundMode( wxSOLID ); if( erasebg ) EraseScreen( DC ); GetParent()->RedrawActiveWindow( DC, erasebg ); // Verfies that the clipping is working correctly. If these two sets of numbers are // not the same or really close. The clipping algorithms are broken. wxLogTrace( kicadTraceCoords, wxT( "Clip box: (%d, %d, %d, %d), Draw extents (%d, %d, %d, %d)" ), m_ClipBox.GetX(), m_ClipBox.GetY(), m_ClipBox.GetRight(), m_ClipBox.GetBottom(), DC->MinX(), DC->MinY(), DC->MaxX(), DC->MaxY() ); }