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].

Reply via email to