Hello!

Here is a patch which implements the PenStyle argument for the drawLine
method. Just XP ad Win32 parts.

Bye, Alexey.
diff -urNwb -x CVS -x WIN32_20.1_i386_DBG -x WIN32_20.1_i386_OBJ -x abidiff.cmd -x 
patch.txt -x .#*.* gr.org/win/gr_Win32Graphics.cpp gr.new/win/gr_Win32Graphics.cpp
--- gr.org/win/gr_Win32Graphics.cpp     Thu May 11 09:00:25 2000
+++ gr.new/win/gr_Win32Graphics.cpp     Wed May 17 13:46:13 2000
@@ -253,6 +253,20 @@
        DeleteObject(hPen);
 }
 
+void GR_Win32Graphics::drawLine(UT_sint32 x1, UT_sint32 y1, UT_sint32 x2, UT_sint32 
+y2, GR_Graphics::PenStyle ps)
+{
+    UT_ASSERT(ps >= GR_Graphics::GR_PENSTYLE_SOLID && ps <= 
+GR_Graphics::GR_PENSTYLE_DASHDOTDOT);
+    const UT_sint32 cPS[] = {PS_SOLID,PS_DASH,PS_DOT,PS_DASHDOT,PS_DASHDOTDOT};
+    HPEN hPen = CreatePen(cPS[ps], m_iLineWidth, m_clrCurrent);
+    HPEN hOldPen = (HPEN) SelectObject(m_hdc, hPen);
+
+    MoveToEx(m_hdc, x1, y1, NULL);
+    LineTo(m_hdc, x2, y2);
+
+    (void) SelectObject(m_hdc, hOldPen);
+    DeleteObject(hPen);
+}
+
 void GR_Win32Graphics::setLineWidth(UT_sint32 iLineWidth)
 {
        m_iLineWidth = iLineWidth;
diff -urNwb -x CVS -x WIN32_20.1_i386_DBG -x WIN32_20.1_i386_OBJ -x abidiff.cmd -x 
patch.txt -x .#*.* gr.org/win/gr_Win32Graphics.h gr.new/win/gr_Win32Graphics.h
--- gr.org/win/gr_Win32Graphics.h       Thu Apr 20 09:03:05 2000
+++ gr.new/win/gr_Win32Graphics.h       Wed May 17 13:12:12 2000
@@ -83,6 +83,7 @@
        virtual UT_uint32               getFontAscent();
        virtual UT_uint32               getFontDescent();
        virtual void                    drawLine(UT_sint32, UT_sint32, UT_sint32, 
UT_sint32);
+    virtual void            drawLine(UT_sint32, UT_sint32, UT_sint32, UT_sint32, 
+GR_Graphics::PenStyle);
        virtual void                    xorLine(UT_sint32, UT_sint32, UT_sint32, 
UT_sint32);
        virtual void                    setLineWidth(UT_sint32);
        virtual void                    polyLine(UT_Point * pts, UT_uint32 nPoints);
diff -urNwb -x CVS -x WIN32_20.1_i386_DBG -x WIN32_20.1_i386_OBJ -x abidiff.cmd -x 
patch.txt -x .#*.* gr.org/xp/gr_Graphics.h gr.new/xp/gr_Graphics.h
--- gr.org/xp/gr_Graphics.h     Thu Apr 20 09:03:07 2000
+++ gr.new/xp/gr_Graphics.h     Wed May 17 13:22:43 2000
@@ -97,11 +97,20 @@
        virtual void drawImage(GR_Image* pImg, UT_sint32 xDest, UT_sint32 yDest) = 0;
        virtual GR_Image* createNewImage(const char* pszName, const UT_ByteBuf* 
pBBPNG, UT_sint32 iDisplayWidth, UT_sint32 iDisplayHeight) = 0;
        
+    typedef enum { GR_PENSTYLE_SOLID = 0,
+                   GR_PENSTYLE_DASH = 1,
+                   GR_PENSTYLE_DOT = 2,
+                   GR_PENSTYLE_DASHDOT = 3,
+                   GR_PENSTYLE_DASHDOTDOT = 4
+    } PenStyle;
+
        /* For drawLine() and xorLine():
        **   x0,y0 give the starting pixel.
        **   x1,y1 give the first pixel ***not drawn***.
        */
+
        virtual void drawLine(UT_sint32, UT_sint32, UT_sint32, UT_sint32) = 0;
+    virtual void drawLine(UT_sint32, UT_sint32, UT_sint32, UT_sint32, 
+GR_Graphics::PenStyle) = 0;
        virtual void xorLine(UT_sint32, UT_sint32, UT_sint32, UT_sint32) = 0;
        virtual void setLineWidth(UT_sint32) = 0;
        virtual void polyLine(UT_Point * pts, UT_uint32 nPoints) = 0;

Reply via email to