diff options
author | Andrea Weikert <elubie@gmx.net> | 2007-09-02 21:25:03 +0400 |
---|---|---|
committer | Andrea Weikert <elubie@gmx.net> | 2007-09-02 21:25:03 +0400 |
commit | 356ab943736e8a2434a8ff5845873482597ba5e2 (patch) | |
tree | 910356ace904dc4f11f1daf15330bb0827934f5b /source/blender/makesdna | |
parent | 22c23fb04f7f1297b971f03d69b8b04b7dd9caa4 (diff) |
== imagebrowser ==
Initial commit of imagebrowser in trunk.
BIG COMMIT!
Main changes:
* completely reworked imasel space
* creation and storage of the preview images for materials, textures, world and lamp
* thumbnails of images and movie files when browsing in the file system
* loading previews from external .blend when linking or appending
* thumbnail caching according to the Thumbnail Managing Standard: http://jens.triq.net/thumbnail-spec/
* for now just kept imasel access mostly as old imgbrowser (CTRL+F4, CTRL+F1) a bit hidden still.
* filtering of file types (images, movies, .blend, py,...)
* preliminary managing of bookmarks ('B' button to add, XKEY while bookmark active to delete)
More detailed info which will be updated here: http://wiki.blender.org/index.php/User:Elubie/PreviewImageBrowser
Places that need special review (and probably fixes):
* BLO_blendhandle_get_previews in readblenentry
* readfile.c: do_version and refactorings of do_library_append
* UI integration
TODO and known issues still:
* Accented characters do not display correctly with international fonts
* Crash was reported when browsing in directory with movie files
* Bookmark management still needs some UI work (second scrollbar?), feedback here is welcome!
Credits:
Samir Bharadwaj (samirbharadwaj@yahoo.com) for the icon images.
Many thanks to everyone who gave feedback and helped so far!
Diffstat (limited to 'source/blender/makesdna')
-rw-r--r-- | source/blender/makesdna/DNA_ID.h | 12 | ||||
-rw-r--r-- | source/blender/makesdna/DNA_image_types.h | 5 | ||||
-rw-r--r-- | source/blender/makesdna/DNA_lamp_types.h | 3 | ||||
-rw-r--r-- | source/blender/makesdna/DNA_material_types.h | 3 | ||||
-rw-r--r-- | source/blender/makesdna/DNA_space_types.h | 132 | ||||
-rw-r--r-- | source/blender/makesdna/DNA_texture_types.h | 3 | ||||
-rw-r--r-- | source/blender/makesdna/DNA_userdef_types.h | 1 | ||||
-rw-r--r-- | source/blender/makesdna/DNA_world_types.h | 3 |
8 files changed, 79 insertions, 83 deletions
diff --git a/source/blender/makesdna/DNA_ID.h b/source/blender/makesdna/DNA_ID.h index f8ad5399af3..d939d0dc879 100644 --- a/source/blender/makesdna/DNA_ID.h +++ b/source/blender/makesdna/DNA_ID.h @@ -120,6 +120,18 @@ typedef struct Library { struct Library *parent; /* for outliner, showing dependency */ } Library; +#define PREVIEW_MIPMAPS 2 +#define PREVIEW_MIPMAP_ZERO 0 +#define PREVIEW_MIPMAP_LARGE 1 + +typedef struct PreviewImage { + unsigned int w[2]; + unsigned int h[2]; + short changed[2]; + short pad0, pad1; + unsigned int * rect[2]; +} PreviewImage; + /** * Defines for working with IDs. * diff --git a/source/blender/makesdna/DNA_image_types.h b/source/blender/makesdna/DNA_image_types.h index cf13a1116a9..694279d4605 100644 --- a/source/blender/makesdna/DNA_image_types.h +++ b/source/blender/makesdna/DNA_image_types.h @@ -41,11 +41,6 @@ struct anim; struct ImBuf; struct RenderResult; -typedef struct PreviewImage { - unsigned int w; - unsigned int h; - unsigned int * rect; -} PreviewImage; /* ImageUser is in Texture, in Nodes, Background Image, Image Window, .... */ /* should be used in conjunction with an ID * to Image. */ diff --git a/source/blender/makesdna/DNA_lamp_types.h b/source/blender/makesdna/DNA_lamp_types.h index 104b13ea24c..5d998ccca6e 100644 --- a/source/blender/makesdna/DNA_lamp_types.h +++ b/source/blender/makesdna/DNA_lamp_types.h @@ -79,6 +79,9 @@ typedef struct Lamp { struct MTex *mtex[10]; struct Ipo *ipo; + /* preview */ + struct PreviewImage *preview; + ScriptLink scriptlink; } Lamp; diff --git a/source/blender/makesdna/DNA_material_types.h b/source/blender/makesdna/DNA_material_types.h index 0fad110d64b..b6bc475fb28 100644 --- a/source/blender/makesdna/DNA_material_types.h +++ b/source/blender/makesdna/DNA_material_types.h @@ -105,7 +105,8 @@ typedef struct Material { struct bNodeTree *nodetree; struct Ipo *ipo; struct Group *group; /* light group */ - + struct PreviewImage * preview; + /* dynamic properties */ float friction, fh, reflect; float fhdist, xyfrict; diff --git a/source/blender/makesdna/DNA_space_types.h b/source/blender/makesdna/DNA_space_types.h index e70c8baaa78..42f08e3795e 100644 --- a/source/blender/makesdna/DNA_space_types.h +++ b/source/blender/makesdna/DNA_space_types.h @@ -52,6 +52,7 @@ struct BlendHandle; struct RenderInfo; struct bNodeTree; struct uiBlock; +struct FileList; /** * The base structure all the other spaces @@ -336,89 +337,63 @@ typedef struct SpaceNode { #define SNODE_DO_PREVIEW 1 #define SNODE_BACKDRAW 2 -# -# -typedef struct OneSelectableIma { - int header; - int ibuf_type; - struct ImBuf *pict; - struct OneSelectableIma *next; - struct OneSelectableIma *prev; - - short cmap, image, draw_me, rt; - short sx, sy, ex, ey, dw, dh; - short selectable, selected; - int mtime, disksize; - char file_name[64]; - - short orgx, orgy, orgd, anim; /* same as ibuf->x...*/ - char dummy[4]; /* 128 */ - - char pict_rect[3968]; /* 4096 (RECT = 64 * 62) */ - -} OneSelectableIma; - -# -# -typedef struct ImaDir { - struct ImaDir *next, *prev; - int selected, hilite; - int type, size; - int mtime; - char name[100]; -} ImaDir; - typedef struct SpaceImaSel { SpaceLink *next, *prev; int spacetype; float blockscale; struct ScrArea *area; - char title[28]; - - int fase; - short mode, subfase; - short mouse_move_redraw, imafase; - short mx, my; - - short dirsli, dirsli_lines; - short dirsli_sx, dirsli_ey , dirsli_ex, dirsli_h; - short imasli, fileselmenuitem; - short imasli_sx, imasli_ey , imasli_ex, imasli_h; - - short dssx, dssy, dsex, dsey; - short desx, desy, deex, deey; - short fssx, fssy, fsex, fsey; - short dsdh, fsdh; - short fesx, fesy, feex, feey; - short infsx, infsy, infex, infey; - short dnsx, dnsy, dnw, dnh; - short fnsx, fnsy, fnw, fnh; - - - char fole[128], dor[128]; - char file[128], dir[128]; - ImaDir *firstdir, *firstfile; - int topdir, totaldirs, hilite; - int topfile, totalfiles; - - float image_slider; - float slider_height; - float slider_space; - short topima, totalima; - short curimax, curimay; - OneSelectableIma *first_sel_ima; - OneSelectableIma *hilite_ima; - short total_selected, ima_redraw; - int pad2; + short blockhandler[8]; + + View2D v2d; + + struct FileList *files; + + /* specific stuff for drawing */ + char title[24]; + char dir[160]; + char file[80]; + + short type, menu, flag, sort; + + void *curfont; + int active_file; + + int numtilesx; + int numtilesy; + + int selstate; + + struct rcti viewrect; + struct rcti bookmarkrect; + + float scrollpos; /* current position of scrollhandle */ + float scrollheight; /* height of the scrollhandle */ + float scrollarea; /* scroll region, scrollpos is from 0 to scrollarea */ + + float aspect; + unsigned short retval; /* event */ + + short ipotype; - struct ImBuf *cmap; + short filter; + short active_bookmark; + short pad, pad1; + + /* view settings */ + short prv_w; + short prv_h; + + /* one day we'll add unions to dna */ + void (*returnfunc)(char *); + void (*returnfunc_event)(unsigned short); + void (*returnfunc_args)(char *, void *, void *); + + void *arg1, *arg2; + short *menup; /* pointer to menu result or ID browsing */ + char *pupmenu; /* optional menu in header */ - /* Also fucked. Needs to change so things compile, but breaks sdna - * ... */ -/* void (*returnfunc)(void); */ - void (*returnfunc)(char*); - void *arg1; + struct ImBuf *img; } SpaceImaSel; @@ -447,7 +422,7 @@ typedef struct SpaceImaSel { #define FILE_MAIN 2 #define FILE_LOADFONT 3 -/* sfile->flag */ +/* sfile->flag and simasel->flag */ #define FILE_SHOWSHORT 1 #define FILE_STRINGCODE 2 #define FILE_LINK 4 @@ -456,6 +431,8 @@ typedef struct SpaceImaSel { #define FILE_ACTIVELAY 32 #define FILE_ATCURSOR 64 #define FILE_SYNCPOSE 128 +#define FILE_FILTER 256 +#define FILE_BOOKMARKS 512 /* sfile->sort */ #define FILE_SORTALPHA 0 @@ -472,6 +449,9 @@ typedef struct SpaceImaSel { #define PYSCRIPTFILE 64 #define FTFONTFILE 128 #define SOUNDFILE 256 +#define TEXTFILE 512 +#define MOVIEFILE_ICON 1024 /* movie file that preview can't load */ +#define FOLDERFILE 2048 /* represents folders for filtering */ #define SCROLLH 16 /* height scrollbar */ #define SCROLLB 16 /* width scrollbar */ diff --git a/source/blender/makesdna/DNA_texture_types.h b/source/blender/makesdna/DNA_texture_types.h index 4ad92f9f33d..064cfe39d45 100644 --- a/source/blender/makesdna/DNA_texture_types.h +++ b/source/blender/makesdna/DNA_texture_types.h @@ -44,6 +44,7 @@ struct EnvMap; struct Object; struct Tex; struct Image; +struct PreviewImage; struct ImBuf; typedef struct MTex { @@ -171,7 +172,7 @@ typedef struct Tex { struct PluginTex *plugin; struct ColorBand *coba; struct EnvMap *env; - + struct PreviewImage * preview; } Tex; diff --git a/source/blender/makesdna/DNA_userdef_types.h b/source/blender/makesdna/DNA_userdef_types.h index 2e83e773ce8..945fe5e00d3 100644 --- a/source/blender/makesdna/DNA_userdef_types.h +++ b/source/blender/makesdna/DNA_userdef_types.h @@ -205,6 +205,7 @@ extern UserDef U; /* from usiblender.c !!!! */ #define USER_NONUMPAD 8192 #define USER_LMOUSESELECT 16384 #define USER_FILECOMPRESS 32768 +#define USER_SAVE_PREVIEWS 65536 /* viewzom */ #define USER_ZOOM_CONT 0 diff --git a/source/blender/makesdna/DNA_world_types.h b/source/blender/makesdna/DNA_world_types.h index 4b8dfe3812a..7349e37f3b7 100644 --- a/source/blender/makesdna/DNA_world_types.h +++ b/source/blender/makesdna/DNA_world_types.h @@ -108,6 +108,9 @@ typedef struct World { struct Ipo *ipo; struct MTex *mtex[10]; + /* previews */ + struct PreviewImage *preview; + ScriptLink scriptlink; } World; |