gpaint-develop
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Gpaint-develop] Gpaint development update


From: Michael Meffie
Subject: [Gpaint-develop] Gpaint development update
Date: Sat, 30 Aug 2003 11:24:26 -0400

Hello,

Since the beginning of this year, I have been developing gpaint
in the gnome-1-develop CVS branch on savannah.  I can
dedicate only a few hours a week on this effort, it has been
a slow process.  My goal has been to organize Andy's original
code, to make it more modular, and to remove any possible
unused code.   This started as an idea on how to better 
implement the paint tool code, to be more object oriented as
done in GIMP.  The idea is to improve the modularity of the
code before we embark on adding any new major features, such
as undo/redo and zooming.

At this point, I have nearly completed this task. I am still
working on the cut/copy/paste features, and need to do much
testing.  I have been calling this release "giotto", after
the famuous painter :)

What follows is a description of the modules and structures.  
New modules are denoted with a (+) before the name.

New Structures

    The image_buf structure has been split into several 
    structures. 

    gpaint_image     wrapper for GdkPixbuf, used for x-client
                     side image processing                    
    
    gpaint_point     for processing of mouse events
    
    gpaint_tool      drawing tool interface
    
    gpaint_selection selected points for copy/paste
    
    gpaint_drawing   drawing object, the x-server side backing
                     pixmap of the drawing.
    
    gpaint_canvas    top level object that contains the
                     drawing area, drawing, and current
                     tool object.


Glade Generated Files

    These files are generated by glade and are overwritten
    when glade rebuilds the source files.
    
    ui.c              Layout of all GUI elements.
    
    support.c         Autogenerated
 
 
Glade Generated Skeleton Files 

    These files are appended to by glade, so can be edited.
                      
    callbacks.c       Callbacks skeletons. The calls have been
                      moved to the appropriate GUI modules.
                  
    main.c            Application entry point. Creates the top 
                      level window object and passes the command
                      line parameters.


GUI Modules

    These files manage the user interface. They initialize the
    GUI components and handle gtk callback events.

(+) canvas.c          Canvas object contains the GtkDrawingArea
                      in the GtkScrollFrame.  Events on the drawing
                      area are dispatched to the current drawing
                      tool object to change the drawing accordingly.
  
(+) file.c            File save and save as dialogs.

(+) menu.c            Callbacks for the main menu and toolbar
                      buttons. 

    print.c           Print and print preview dialogs.
                      (Essentially no changes from the previous 
                      gpaint version.)
    
(+) about.c           Displays the application version in the
                      about box.

(+) color_palette.c   Creates the color selection palette toolbar
                      and handles background and foreground color
                      selections.
                      
(+) tool_palette.c    Creates the drawing tool selection tool bar
                      and handles the changing of the drawing tool
                      object. Each tool object is created in this
                      module.
                      
    gtkscrollframe.c  GtkScrollFrame to create a scrollable
                      drawing area. This has not been changed
                      from the previous version of gpaint.
    
    pixmaps.c         Include pixmaps for the tool palette 
                      and about box. 73 kbytes of unused bitmaps
                      have been removed.


Image Processing

(+) drawing.c         Contains the backing pixmap of the current
                      drawing and the selected area for cut, copy
                      and paste operations. The backing pixmap 
                      is stored within the X server and is used
                      to repaint the image when the drawing area
                      is exposed.
    
(+) image.c           Wrapper for the client side RGB pixel map.
                      Structure is called gpaint_image.
    
    image_processing.c  Image processing functions from XPaint.
                      Only minor changes were made to use the 
                      gpaint_image instead of the old image_buf.


Drawing Tool Objects

    These modules contain the code for the drawing tool objects.
    The drawing functions are implemented with the GDK functions.

(+) pen.c             Pen tool for drawing freeform lines.

(+) brush.c           Paint brush and eraser tool.

(+) shape.c           Tools for drawing ovals, rectangles, curves
                      straight lines, and multi-lines
                      
(+) select.c          Lasso and polygon selection tool.

(+) text.c            Tool for writing text.

(+) fill.c            Fill tool for filling an enclosed region.


Deprecated Modules

    Most of the code in these modules has been moved into the
    new modules listed above. 
    
    image_buf.c       Most of the code in the module as been 
                      moved into the GUI modules; canvas.c, 
                      tool_palette.c, and color_palette.c. Some
                      of the code was moved to the drawing.c 
                      and image.c files.
                      
    util.c            Most of the code in this module was moved
                      to the canvas.c module, and the tool 
                      objects.
                      
    fileio.c          Moved to the image.c file for image
                      saving and reading.
    
    rgb.c             Not used.

    clipboard.c       moved to drawing.c

--- END -----




reply via email to

[Prev in Thread] Current Thread [Next in Thread]