// gets the bounding box enclosing all points (possibly including control points)
virtual void GetBox(wxDouble *x, wxDouble *y, wxDouble *w, wxDouble *h) const;
- virtual bool Contains( wxDouble x, wxDouble y, int fillStyle = wxWINDING_RULE) const;
+ virtual bool Contains( wxDouble x, wxDouble y, wxPolygonFillMode fillStyle = wxWINDING_RULE) const;
private :
cairo_t* m_pathContext;
virtual void Apply( wxGraphicsContext* context );
#ifdef __WXGTK__
const PangoFontDescription* GetFont() const { return m_font; }
+ bool GetUnderlined() const { return m_underlined; }
#endif
private :
double m_size;
+ bool m_underlined;
double m_red;
double m_green;
double m_blue;
virtual void * GetNativeContext();
- virtual bool SetLogicalFunction( int function );
+ virtual bool SetLogicalFunction( wxRasterOperationMode function );
virtual void StrokePath( const wxGraphicsPath& p );
- virtual void FillPath( const wxGraphicsPath& p , int fillStyle = wxWINDING_RULE );
+ virtual void FillPath( const wxGraphicsPath& p , wxPolygonFillMode fillStyle = wxWINDING_RULE );
virtual void Translate( wxDouble dx , wxDouble dy );
virtual void Scale( wxDouble xScale , wxDouble yScale );
}
break;
default :
- if ( m_pen.GetStyle() >= wxPENSTYLE_FIRST_HATCH
+ if ( m_pen.GetStyle() >= wxPENSTYLE_FIRST_HATCH
&& m_pen.GetStyle() <= wxPENSTYLE_LAST_HATCH )
{
/*
m_blue = col.Blue()/255.0;
m_alpha = col.Alpha()/255.0;
m_size = font.GetPointSize();
+ m_underlined = font.GetUnderlined();
#ifdef __WXMAC__
m_font = cairo_atsui_font_face_create_for_atsu_font_id( font.MacGetATSUFontID() );
}
}
-bool wxCairoPathData::Contains( wxDouble x, wxDouble y, int WXUNUSED(fillStyle) ) const
+bool wxCairoPathData::Contains( wxDouble x, wxDouble y, wxPolygonFillMode WXUNUSED(fillStyle) ) const
{
return cairo_in_stroke( m_pathContext, x, y) != 0;
}
}
}
-void wxCairoContext::FillPath( const wxGraphicsPath& path , int fillStyle )
+void wxCairoContext::FillPath( const wxGraphicsPath& path , wxPolygonFillMode fillStyle )
{
if ( !m_brush.IsNull() )
{
size_t datalen = strlen(data);
PangoLayout *layout = pango_cairo_create_layout (m_context);
- pango_layout_set_font_description( layout, ((wxCairoFontData*)m_font.GetRefData())->GetFont());
+ wxCairoFontData* font_data = (wxCairoFontData*) m_font.GetRefData();
+ pango_layout_set_font_description( layout, font_data->GetFont());
pango_layout_set_text(layout, data, datalen);
+
+ if (font_data->GetUnderlined())
+ {
+ PangoAttrList *attrs = pango_attr_list_new();
+ PangoAttribute *attr = pango_attr_underline_new(PANGO_UNDERLINE_SINGLE);
+ pango_attr_list_insert(attrs, attr);
+ pango_layout_set_attributes(layout, attrs);
+ pango_attr_list_unref(attrs);
+ }
+
cairo_move_to(m_context, x, y);
pango_cairo_show_layout (m_context, layout);
// Cairo doesn't support bitwise logical function (a.k.a. ROP, raster output
// mode). Cairo supports Porter-Duff compositing operators, but they are quite
// different, although in some cases have similar names.
-bool wxCairoContext::SetLogicalFunction( int function )
+bool wxCairoContext::SetLogicalFunction( wxRasterOperationMode function )
{
if (m_logicalFunction == function)
return true;