void wxQtDCImpl::ApplyRasterColourOp() { // Save colours m_qtPenColor = m_qtPainter->pen().color(); m_qtBrushColor = m_qtPainter->brush().color(); // Apply op switch ( m_rasterColourOp ) { case wxQtWHITE: SetPenColour( m_qtPainter, QColor( Qt::white ) ); SetBrushColour( m_qtPainter, QColor( Qt::white ) ); break; case wxQtBLACK: SetPenColour( m_qtPainter, QColor( Qt::black ) ); SetBrushColour( m_qtPainter, QColor( Qt::black ) ); break; case wxQtINVERT: SetPenColour( m_qtPainter, QColor( ~m_qtPenColor.rgb() ) ); SetBrushColour( m_qtPainter, QColor( ~m_qtBrushColor.rgb() ) ); break; case wxQtNONE: // No op break; } }
void TLView::Draw( wxDC& dc ) { long yoffset; dc.SetBrush( *wxGREY_BRUSH ); SetBrushColour( dc, wxColour( 166, 166, 166 ) ); dc.SetPen( wxPen( wxColour( 100, 100, 100), 1, wxSOLID ) ); yoffset = TOP_OFFSET_TRACKS; for ( TLTrackList::Node *node = m_TlData->GetFirst(); node; node = node->GetNext() ) { TLTrack *track = node->GetData(); if (track->GetSelected()) { SetBrushColour( dc, wxColour( 199, 199, 188 ) ); } dc.DrawRectangle( VIEW_LEFT_BORDER, yoffset - m_YscrollPosition, m_width - VIEW_LEFT_BORDER - VIEW_RIGHT_BORDER, track->GetHeight() ); yoffset += track->GetHeight() + m_TrackDrawDist; if (track->GetSelected()) { SetBrushColour( dc, wxColour( 166, 166, 166 ) ); } } yoffset = TOP_OFFSET_TRACKS; for ( TLTrackList::Node *node = m_TlData->GetFirst(); node; node = node->GetNext() ) { TLTrack *current = node->GetData(); yoffset = DrawTrack( dc, yoffset, current ); } }
void wxQtDCImpl::SetLogicalFunction(wxRasterOperationMode function) { m_logicalFunction = function; wxQtRasterColourOp rasterColourOp; switch ( function ) { case wxCLEAR: // 0 m_qtPainter->setCompositionMode( QPainter::CompositionMode_SourceOver ); rasterColourOp = wxQtBLACK; break; case wxXOR: // src XOR dst m_qtPainter->setCompositionMode( QPainter::RasterOp_SourceXorDestination ); rasterColourOp = wxQtNONE; break; case wxINVERT: // NOT dst => dst XOR WHITE m_qtPainter->setCompositionMode( QPainter::RasterOp_SourceXorDestination ); rasterColourOp = wxQtWHITE; break; case wxOR_REVERSE: // src OR (NOT dst) => (NOT (NOT src)) OR (NOT dst) m_qtPainter->setCompositionMode( QPainter::RasterOp_NotSourceOrNotDestination ); rasterColourOp = wxQtINVERT; break; case wxAND_REVERSE: // src AND (NOT dst) m_qtPainter->setCompositionMode( QPainter::RasterOp_SourceAndNotDestination ); rasterColourOp = wxQtNONE; break; case wxCOPY: // src m_qtPainter->setCompositionMode( QPainter::CompositionMode_SourceOver ); rasterColourOp = wxQtNONE; break; case wxAND: // src AND dst m_qtPainter->setCompositionMode( QPainter::RasterOp_SourceAndDestination ); rasterColourOp = wxQtNONE; break; case wxAND_INVERT: // (NOT src) AND dst m_qtPainter->setCompositionMode( QPainter::RasterOp_NotSourceAndDestination ); rasterColourOp = wxQtNONE; break; case wxNO_OP: // dst m_qtPainter->setCompositionMode( QPainter::QPainter::CompositionMode_DestinationOver ); rasterColourOp = wxQtNONE; break; case wxNOR: // (NOT src) AND (NOT dst) m_qtPainter->setCompositionMode( QPainter::RasterOp_NotSourceAndNotDestination ); rasterColourOp = wxQtNONE; break; case wxEQUIV: // (NOT src) XOR dst m_qtPainter->setCompositionMode( QPainter::RasterOp_NotSourceXorDestination ); rasterColourOp = wxQtNONE; break; case wxSRC_INVERT: // (NOT src) m_qtPainter->setCompositionMode( QPainter::RasterOp_NotSource ); rasterColourOp = wxQtNONE; break; case wxOR_INVERT: // (NOT src) OR dst m_qtPainter->setCompositionMode( QPainter::RasterOp_SourceOrDestination ); rasterColourOp = wxQtINVERT; break; case wxNAND: // (NOT src) OR (NOT dst) m_qtPainter->setCompositionMode( QPainter::RasterOp_NotSourceOrNotDestination ); rasterColourOp = wxQtNONE; break; case wxOR: // src OR dst m_qtPainter->setCompositionMode( QPainter::RasterOp_SourceOrDestination ); rasterColourOp = wxQtNONE; break; case wxSET: // 1 m_qtPainter->setCompositionMode( QPainter::CompositionMode_SourceOver ); rasterColourOp = wxQtWHITE; break; } if ( rasterColourOp != m_rasterColourOp ) { // Source colour mode changed m_rasterColourOp = rasterColourOp; // Restore original colours and apply new mode SetPenColour( m_qtPainter, m_qtPenColor ); SetBrushColour( m_qtPainter, m_qtPenColor ); ApplyRasterColourOp(); } }