==== 2.5x ==== source解読メモ ============== 部品 ---- struct ListBase +++++++++++++++ source/blender/makesdna/DNA_listBase.h /* never change the size of this! genfile.c detects pointerlen with it */ typedef struct ListBase { void *first, *last; } ListBase; ***interface source/blender/blenlib/BLI_listbase.h void addlisttolist(struct ListBase *list1, struct ListBase *list2); void BLI_insertlink(struct ListBase *listbase, void *vprevlink, void *vnewlink); void *BLI_findlink(struct ListBase *listbase, int number); int BLI_findindex(struct ListBase *listbase, void *vlink); void *BLI_findstring(struct ListBase *listbase, const char *id, int offset); int BLI_findstringindex(struct ListBase *listbase, const char *id, int offset); void BLI_freelistN(struct ListBase *listbase); void BLI_addtail(struct ListBase *listbase, void *vlink); void BLI_remlink(struct ListBase *listbase, void *vlink); int BLI_remlink_safe(struct ListBase *listbase, void *vlink); void BLI_addhead(struct ListBase *listbase, void *vlink); void BLI_insertlinkbefore(struct ListBase *listbase, void *vnextlink, void *vnewlink); void BLI_insertlinkafter(struct ListBase *listbase, void *vprevlink, void *vnewlink); void BLI_sortlist(struct ListBase *listbase, int (*cmp)(void *, void *)); void BLI_freelist(struct ListBase *listbase); int BLI_countlist(struct ListBase *listbase); void BLI_freelinkN(struct ListBase *listbase, void *vlink); void BLI_duplicatelist(struct ListBase *list1, const struct ListBase *list2); 構成 ---- エントリーポイント ++++++++++++++++++ source/creator/creator.c main メインループ ++++++++++++ source/intern/wm.c WM_main UI -- source/blender/blenkernel/intern/blender.c // global UserDef U; UserDef +++++++ source/blender/makesdna/DNA_userdef_types.h typedef struct UserDef { int flag, dupflag; int savetime; char tempdir[160]; // FILE_MAXDIR length char fontdir[160]; char renderdir[160]; char textudir[160]; char plugtexdir[160]; char plugseqdir[160]; char pythondir[160]; char sounddir[160]; char image_editor[240]; // FILE_MAX length char anim_player[240]; // FILE_MAX length int anim_player_preset; short v2d_min_gridsize; /* minimum spacing between gridlines in View2D grids */ short timecode_style; /* style of timecode display */ short versions; short dbl_click_time; int gameflags; int wheellinescroll; int uiflag, language; short userpref, viewzoom; int mixbufsize; int audiodevice; int audiorate; int audioformat; int audiochannels; int scrollback; /* console scrollback limit */ int dpi; /* range 48-128? */ short encoding; short transopts; short menuthreshold1, menuthreshold2; struct ListBase themes; // fonts struct ListBase uifonts; // interface struct ListBase uistyles; /* 選択中のフォント uiStyle *style= U.uistyles.first; uiFontStyle *fstyle= &style->widget; fstyle->uifont_id */ struct ListBase keymaps; struct ListBase addons; char keyconfigstr[64]; short undosteps; short undomemory; short gp_manhattendist, gp_euclideandist, gp_eraser; short gp_settings; short tb_leftmouse, tb_rightmouse; struct SolidLight light[3]; short tw_hotspot, tw_flag, tw_handlesize, tw_size; short textimeout,texcollectrate; short wmdrawmethod, wmpad; int memcachelimit; int prefetchframes; short frameserverport; short pad_rot_angle; /*control the rotation step of the view when PAD2,PAD4,PAD6&PAD8 is use*/ short obcenter_dia; short rvisize; /* rotating view icon size */ short rvibright; /* rotating view icon brightness */ short recent_files; /* maximum number of recently used files to remember */ short smooth_viewtx; /* miliseconds to spend spinning the view */ short glreslimit; short ndof_pan, ndof_rotate; short curssize; short color_picker_type; short ipo_new; /* interpolation mode for newly added F-Curves */ short keyhandles_new; /* handle types for newly added keyframes */ short scrcastfps; /* frame rate for screencast to be played back */ short scrcastwait; /* milliseconds between screencast snapshots */ char versemaster[160]; char verseuser[160]; float glalphaclip; short autokey_mode; /* autokeying mode */ short autokey_flag; /* flags for autokeying */ struct ColorBand coba_weight; /* from texture.h */ } UserDef; source/blender/editors/interface/interface_style.c フォント描画 ------------ source/blender/blenfont/inter/blf.c /* Max number of font in memory. * Take care that now every font have a glyph cache per size/dpi, * so we don't need load the same font with different size, just * load one and call BLF_size. */ #define BLF_MAX_FONT 16 /* Font array. */ FontBLF *global_font[BLF_MAX_FONT]; /* Number of font. */ int global_font_num= 0; /* Default size and dpi, for BLF_draw_default. */ int global_font_default= -1; int global_font_points= 11; int global_font_dpi= 72; WM_init +-BLF_init | +-blf_font_init +-BLF_lang_init +-WM_read_homefile | +---uiStyleInit +-BLF_load_mem +-ui_style_new source/blender/editors/interface/interface_style.c ui_style_new // default font style->widget.uifont_id= UIFONT_DEFAULT; source/blender/blenfont/intern/blf_font.c FT_Library global_ft_lib; blf_font_init source/blender/blenfont/intern/blf_lang.c #define DOMAIN_NAME "blender" #define SYSTEM_ENCODING_DEFAULT "UTF-8" #define FONT_SIZE_DEFAULT 12 /* locale options. */ char global_messagepath[1024]; char global_language[32]; char global_encoding_name[32]; BLF_lang_init BLF_draw