Hi, I was working on these patches, but I think is too much work for only one person. I need your help.
What I am doing? I am working on abstraction. My aim is that the wmaker elements doesn't use the screen or other physical devices. The aim is create the object in memomy and map it on the screen only when is needed. Therefore, if we change the screen, we can "re-map" the object, but we don't need re-create the object (and then, restart windowmaker). This idea is needed for XRandR. Here are my patches. Some things: First, I split the object creation in two steps, wcore_create and wcore_map. Yes, the first function creates the object, the second function, map it on the screen. For example, to create a icon, we need only the icon size (64x64) and the image (icon image). When we need paint (map) the image, then, we need the screen and the x and y coords. These patches do this work: New function wcore_create New core map functions I use this code in these patches: New framewin abstraction functions icon_create_core uses wcore abstract functions Removed unused function wCoreCreateTopLevel icon_create_core function does not need WScreen wMenuCreate uses wcore abstract functions wMenuCreate uses framewin abstract functions wManageWindow uses framewin abstract functions menu elements created together Removed unused function wFrameWindowCreate wFrameWindowUpdateBorders uses wcore abstract funcs Removed unused function wCoreCreate Framewin, create framewin joined wMenuCreate splitted createApplicationMenu without screen wMenuCreateForApp without screen wMenuCreate replaced in dock.c Simple dock menu udpates The second problem is the icon images. The icon should be screen independent, but sometimes is not possible. For example, xpm images needs the screen to create the right image. In that case, we need read the image file, store it in a tmp variable, and when we have the screen, render the image. These patches do that work. The new function RLoadImage_nodraw() loads the image (xpm, tiff,...) but doesn't render it. We use a new function to draw it. We need these patches when we create the Dock, Clip, ... Join the XPM draw code wraster: WRImgFormat enum moved between header files Added Source image info to RImage Identify the source file type XPM functions uses new vars in the RImage struct PNG creation splitted New function RDrawImage RLoadImage calls RDraw functions New helper function for load cache images New function RLoadImage_nodraw With these changes, I start to split the icon creation, and the icon map. These are some examples. Functions like wMenuCreate should be removed. Removed function get_rimage_from_file removeAppIconFor helper WAppIcon variable set_icon_image_from_database, removed call to wIconValidateIconSize Abstract function set_icon_image_from_database icon create functions code short Icon abstract functions Remove function icon_create_for_dock Remove function icon_create_for_wwindow Remove function wAppIconCreate Included compile file in gitignore Removed wMenuCreate in window workspace menu Please, check my patches, and... help me in this work. Some of these patches were tested a lot (months ago), other patches, are new, but IMO are ok. Without these ideas, is very difficult (IMO impossible) implement XRandR, Multiheader, ... configurations. Anyway, enjoy the code :-) kix .gitignore | 1 + src/actions.c | 4 +- src/appicon.c | 129 ++++++++++++++++--------------- src/appmenu.c | 9 ++- src/defaults.h | 1 - src/dock.c | 49 +++++++----- src/framewin.c | 118 +++++++++++++++++++++-------- src/framewin.h | 18 ++--- src/icon.c | 91 +++++++++++----------- src/icon.h | 4 +- src/menu.c | 140 +++++++++++++++++++--------------- src/menu.h | 4 +- src/usermenu.c | 6 +- src/wcore.c | 59 +++++---------- src/wcore.h | 17 +++-- src/wdefaults.c | 40 ++++------ src/window.c | 39 +++++----- src/winmenu.c | 24 ++++-- wrlib/gif.c | 1 + wrlib/imgformat.h | 23 +----- wrlib/jpeg.c | 1 + wrlib/libwraster.map | 2 + wrlib/load.c | 163 +++++++++++++++++++++++++++------------ wrlib/nxpm.c | 6 ++ wrlib/png.c | 190 +++++++++++++++++++++++++++++++++++----------- wrlib/ppm.c | 1 + wrlib/raster.c | 21 +++++- wrlib/tiff.c | 1 + wrlib/wraster.h | 39 ++++++---- wrlib/xpm.c | 209 ++++++++++++++++++++------------------------------- 30 files changed, 824 insertions(+), 586 deletions(-) -- 1.8.4.rc3 -- To unsubscribe, send mail to [email protected].
