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