Fontchooser
-
THE POST BELOW IS MORE THAN 5 YEARS OLD. RELATED SUPPORT INFORMATION MIGHT BE OUTDATED OR DEPRECATED
On 08/09/2011 at 02:14, xxxxxxxx wrote:
User Information:
Cinema 4D Version: 13
Platform: Windows ;
Language(s) : C++ ;---------
hello,I'm using the Fontchooser (FONT ID {} ) in a res file of my plugin. And now I like to read the font name which the user choosen (to print out in an xml file). How can I do this.
I know in the last versions it doesn't works with the FontData class !thanks
Marky -
THE POST BELOW IS MORE THAN 5 YEARS OLD. RELATED SUPPORT INFORMATION MIGHT BE OUTDATED OR DEPRECATED
On 12/09/2011 at 05:54, xxxxxxxx wrote:
With R13 you can now access the font container. The GeClipMap class provides font access functions (I know not the first place to look for).
Here is a small example how to initialize and read out a font description. MY_FONT is just a FONT description in the resource files. I initialize with the "Arial" font as example. If not found it will use the default system font instead.
Bool LookAtCamera::Init(GeListNode *node) { BaseContainer *data=((BaseList2D* )node)->GetDataInstance(); if (!data) return FALSE; GeData d(FONTCHOOSER_DATA, DEFAULTVALUE); FontData* fd = (FontData* )d.GetCustomDataType(FONTCHOOSER_DATA); if (!fd) return FALSE; BaseContainer bc; GeClipMap::EnumerateFonts(&bc, GE_CM_FONTSORT_FLAT); LONG i=0; while (TRUE) { LONG id = bc.GetIndexId(i++); if (id==NOTOK) break; BaseContainer *fbc = bc.GetContainerInstance(id); if (fbc) { String name; if (!GeClipMap::GetFontName(fbc, GE_FONT_NAME_DISPLAY, &name)) return FALSE; if (name.Compare("Arial") == 0) { fd->SetFont(fbc); if (!data->SetData(MY_FONT,d)->GetType()) return FALSE; return TRUE; } } } BaseContainer bc2; if (!GeClipMap::GetDefaultFont(GE_FONT_DEFAULT_SYSTEM, &bc2)) return FALSE; fd->SetFont(&bc2); if (!data->SetData(MY_FONT,d)->GetType()) return FALSE; return TRUE; } EXECUTIONRESULT LookAtCamera::Execute(BaseTag *tag, BaseDocument *doc, BaseObject *op, BaseThread *bt, LONG priority, EXECUTIONFLAGS flags) { GeData d; if (tag->GetParameter(DescLevel(MY_FONT),d,DESCFLAGS_GET_0)) { FontData *fd = (FontData* )d.GetCustomDataType(FONTCHOOSER_DATA); if (fd) { BaseContainer bc = fd->GetFont(); String name; if (GeClipMap::GetFontName(&bc, GE_FONT_NAME_DISPLAY, &name)) GePrint(name); } } return EXECUTIONRESULT_OK; }
EDIT: corrected the initialization code
cheers,
Matthias -
THE POST BELOW IS MORE THAN 5 YEARS OLD. RELATED SUPPORT INFORMATION MIGHT BE OUTDATED OR DEPRECATED
On 13/09/2011 at 02:24, xxxxxxxx wrote:
hello Matthias,
thanks for this example. But unfortunately I get always a DA_NIL value for the GeData
in my Init() function.
Do you know why ?
regards
Marky -
THE POST BELOW IS MORE THAN 5 YEARS OLD. RELATED SUPPORT INFORMATION MIGHT BE OUTDATED OR DEPRECATED
On 13/09/2011 at 03:58, xxxxxxxx wrote:
Indeed there is a problem. I will look into it.
cheers,
Matthias -
THE POST BELOW IS MORE THAN 5 YEARS OLD. RELATED SUPPORT INFORMATION MIGHT BE OUTDATED OR DEPRECATED
On 13/09/2011 at 04:43, xxxxxxxx wrote:
Ok, I corrected the Init() routine. As example I intialize it with the "Arial" font. If not found it will use the default system font instead.
cheers,
Matthias -
THE POST BELOW IS MORE THAN 5 YEARS OLD. RELATED SUPPORT INFORMATION MIGHT BE OUTDATED OR DEPRECATED
On 13/09/2011 at 05:41, xxxxxxxx wrote:
fine, that's working now.
My last question, how can I set a font in a osplinetext object?BaseObject* text = BaseObject::Alloc(Osplinetext);
GeData data;
BaseContainer *bc = text->GetDataInstance();
data.SetString(op->GetDataInstance()->GetString(TXT_ID_PAINTSPLINETEXT_TEXT,""));
bc->SetParameter( DescLevel(PRIM_TEXT_TEXT), data);
bc->SetParameter( DescLevel(PRIM_TEXT_FONT), ?????regards
Marky -
THE POST BELOW IS MORE THAN 5 YEARS OLD. RELATED SUPPORT INFORMATION MIGHT BE OUTDATED OR DEPRECATED
On 13/09/2011 at 06:41, xxxxxxxx wrote:
You set it the same as I did in the Init() routine just with the PRIM_TEXT_FONT parameter ID.
cheers,
Matthias -
THE POST BELOW IS MORE THAN 5 YEARS OLD. RELATED SUPPORT INFORMATION MIGHT BE OUTDATED OR DEPRECATED
On 13/09/2011 at 07:13, xxxxxxxx wrote:
super, it works. thanks a lot