THE POST BELOW IS MORE THAN 5 YEARS OLD. RELATED SUPPORT INFORMATION MIGHT BE OUTDATED OR DEPRECATED
On 04/11/2008 at 07:15, xxxxxxxx wrote:
Yes it is done with a GeClipMap. Actually it is not that hard, here I wrote a function for oyu to display text in a Draw() function. Just pass the BaseDraw and the position and of course the text.
> \> static Bool DrawText(String text, LONG xpos, LONG ypos, BaseDraw \*bd) \> { \> AutoAlloc<GeClipMap> cm; \> if(!cm) return FALSE; \> \> if(!cm->Init(0, 0, 32)) return FALSE; \> cm->BeginDraw(); \> LONG width = cm->TextWidth(text); \> LONG height = cm->TextHeight(); \> cm->EndDraw(); \> cm->Destroy(); \> \> if(!cm->Init(width, height, 32)) return FALSE; \> cm->BeginDraw(); \> cm->SetColor(255, 255, 255, 255); \> cm->TextAt(0,0,text); \> cm->EndDraw(); \> \> bd->SetMatrix_Screen(); \> bd->SetLightList(BDRAW_SETLIGHTLIST_NOLIGHTS); \> \> Vector \*padr = bNew Vector[4]; \> Vector \*cadr = bNew Vector[4]; \> Vector \*vnadr = bNew Vector[4]; \> Vector \*uvadr = bNew Vector[4]; \> \> padr[0] = Vector(xpos,ypos,0); \> padr[1] = Vector(xpos+width,ypos,0); \> padr[2] = Vector(xpos+width,ypos+height,0); \> padr[3] = Vector(xpos,ypos+height,0); \> \> cadr[0] = Vector(1,1,1); \> cadr[1] = Vector(1,1,1); \> cadr[2] = Vector(1,1,1); \> cadr[3] = Vector(1,1,1); \> \> vnadr[0] = Vector(0,0,1); \> vnadr[1] = Vector(0,0,1); \> vnadr[2] = Vector(0,0,1); \> vnadr[3] = Vector(0,0,1); \> \> uvadr[0] = Vector(0,0,0); \> uvadr[1] = Vector(1,0,0); \> uvadr[2] = Vector(1,1,0); \> uvadr[3] = Vector(0,1,0); \> \> BaseBitmap \*cmbmp = NULL; \> cmbmp = cm->GetBitmap(); \> if(!cmbmp) return FALSE; \> \> BaseBitmap \*bmp = NULL; \> bmp = cmbmp->GetClone(); \> if(!bmp) return FALSE; \> \> AlphaBitmap \*alpha = NULL; \> alpha = bmp->GetInternalChannel(); \> if(!alpha) alpha = bmp->AddChannel(TRUE, FALSE); \> if(!alpha) \> { \> BaseBitmap::Free(bmp); \> return FALSE; \> } \> \> LONG x,y; \> for(y=0; y<height; y++) \> { \> for(x=0; x<width; x++) \> { \> UWORD r; \> bmp->GetPixel(x,y,&r;,&r;,&r;); \> bmp->SetAlphaPixel(alpha, x, y, r); //r is the opacity \> } \> } \> \> bd->DrawTexture(bmp, padr, cadr, vnadr, uvadr, 4, FALSE, DRAW_ALPHA_NORMAL); \> \> BaseBitmap::Free(bmp); \> \> bDelete(padr); \> bDelete(cadr); \> bDelete(vnadr); \> bDelete(uvadr); \> \> return TRUE; \> } \> \> Bool LookAtCamera::Draw(PluginTag \*tag, BaseObject \*op, BaseDraw \*bd, BaseDrawHelp \*bh) \> { \> return DrawText("hello world", 256, 256, bd); \> } \>
cheers,
Matthias