THE POST BELOW IS MORE THAN 5 YEARS OLD. RELATED SUPPORT INFORMATION MIGHT BE OUTDATED OR DEPRECATED
On 03/02/2009 at 04:36, xxxxxxxx wrote:
ok dont find way,
here my code:
struct MyPrivateData
{
BaseBitmap* bmp;
};
void TakeProgressFunction (Real p, void* private_data)
{
StatusSetBar(p);
GePrint (RealToString(p));
MyPrivateData *pd = static_cast<MyPrivateData*>(private_data);
ShowBitmap(pd->bmp);
}
class TakeRenderThread : public Thread
{
private:
BaseDocument *m_doc;
BaseBitmap *m_bmp;
BaseContainer m_rc;
public:
TakeRenderThread(BaseDocument *doc, BaseBitmap *bmp, BaseContainer rc ) { m_doc = doc; m_bmp = bmp; m_rc = rc; }
virtual ~TakeRenderThread() { m_doc = NULL; m_bmp = NULL; End(); Wait(FALSE); }
virtual void Main(void);
virtual const CHAR *GetThreadName(void) { return "TakeRenderThread"; }
};
void TakeRenderThread::Main(void)
{
GePrint("Render thread");
if(RenderDocument(m_doc, m_rc, TakeProgressFunction, NULL ,m_bmp, RENDERFLAG_EXTERNAL, this->Get()) != RAY_OK)
GePrint("not ok");
}
class rendertake : public CommandData
{
public:
virtual Bool Execute(BaseDocument *doc);
};
Bool rendertake::Execute(BaseDocument *doc)
{
BaseBitmap * bmp = BaseBitmap::Alloc();
if(!bmp) return FALSE;
BaseDocument *cdoc = (BaseDocument* )doc->GetClone(COPY_DOCUMENT, NULL);
BaseContainer rc = cdoc->GetActiveRenderData()->GetData();
bmp->Init(rc.GetLong(RDATA_XRES), rc.GetLong(RDATA_YRES), 24);
TakeRenderThread rt(cdoc, bmp, rc);
rt.Start(FALSE);
BaseDocument::Free(cdoc);
BaseBitmap::Free(bmp);
return TRUE;
}
if ound it in a old post, the ShowBitmap(pd->bmp), crash.
any idea ?
Franz