Help neded from Win32 devs!

From: Martin Sevior <msevior_at_physics.unimelb.edu.au>
Date: Tue Sep 28 2004 - 05:56:15 CEST

Hi Guys,
         I just found out that win32 has not yet implemented the
method...
        virtual GR_Image * createImageSegment(GR_Graphics * pG, const UT_Rect
& rec)
{UT_return_val_if_fail(UT_NOT_IMPLEMENTED,NULL)};

In gr_Win32Graphics.

Without it, visual drag and drop of text will not work. Nor will typing
over background images work.

Here is the code from the unix platfrom.

Can someone have a go at implementing this? We absolutely need it
for 2.2.

Thanks!

Martin

/*!
 * The idea is to create a
 * new image from the rectangular segment in device units defined by
 * UT_Rect rec. The Image should be deleted by the calling routine.
 */
GR_Image * GR_UnixImage::createImageSegment(GR_Graphics * pG,const
UT_Rect & rec)
{
        UT_sint32 x = pG->tdu(rec.left);
        UT_sint32 y = pG->tdu(rec.top);
        if(x < 0)
        {
                x = 0;
        }
        if(y < 0)
        {
                y = 0;
        }
        UT_sint32 width = pG->tdu(rec.width);
        UT_sint32 height = pG->tdu(rec.height);
        UT_sint32 dH = getDisplayHeight();
        UT_sint32 dW = getDisplayWidth();
        if(height > dH)
        {
                height = dH;
        }
        if(width > dW)
        {
                width = dW;
        }
        if(x + width > dW)
        {
                width = dW - x;
        }
        if(y + height > dH)
        {
                height = dH - y;
        }
        if(width < 0)
        {
                x = dW -1;
                width = 1;
        }
        if(height < 0)
        {
                y = dH -1;
                height = 1;
        }
        UT_String sName("");
        getName(sName);
    UT_String sSub("");
        UT_String_sprintf(sSub,"_segemnt_%d_%d_%d_%d",x,y,width,height);
        sName += sSub;
        GR_UnixImage * pImage = new GR_UnixImage(sName.c_str());
        UT_ASSERT(m_image);
        pImage->m_image = gdk_pixbuf_new_subpixbuf(m_image,x,y,width,height);
//
// gdk_pixbuf_new_subpixbuf shares pixels with the original pixbuf and
// so puts a reference on m_image.

        g_object_unref(G_OBJECT(m_image));
        UT_ASSERT(G_OBJECT(m_image)->ref_count == 1);
//
// Make a copy so we don't have to worry about ref counting the orginal.
//
        pImage->m_image = gdk_pixbuf_copy(pImage->m_image);
        return static_cast<GR_Image *>(pImage);
}
Received on Tue Sep 28 05:14:49 2004

This archive was generated by hypermail 2.1.8 : Tue Sep 28 2004 - 05:14:49 CEST