Table Of Contents

Previous topic

2.49b

Next topic

OpenGL

This Page

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

inserted by FC2 system