Package: GWindows.Drawing_Panels


with GWindows.Types;
with GWindows.Drawing;
with GWindows.Drawing_Objects;
with GWindows.Windows;


GWINDOWS - Ada 95 Framework for Win32 Development

G W I N D O W S . P A N E L S

S p e c

$Revision: 1.2 $

Copyright (C) 1999 - 2004 David Botton

This is free software; you can redistribute it and/or modify it under terms of the GNU General Public License as published by the Free Soft- ware Foundation; either version 2, or (at your option) any later ver- sion. It is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License distributed with this; see file COPYING. If not, write to the Free Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.

As a special exception, if other files instantiate generics from this unit, or you link this unit with other files to produce an executable, this unit does not by itself cause the resulting executable to be covered by the GNU General Public License. This exception does not however invalidate any other reasons why the executable file might be covered by the GNU Public License.

More information about GWindows and the latest current release can be located on the web at


Drawing canvas is used by the Drawing_Panel_Type. It is the canvas type used for all painting on Drawing_Panel_Types.


package GWindows.Drawing_Panels is

Type Summary

Drawing_Canvas_Type derived from Memory_Canvas_Type
Overridden Operations:  Finalize
Inherited Operations:  Arc, Background_Color, Background_Color, Background_Mode, Background_Mode, Beziers, BitBlt, Capture, Chord, Clipping_Area, Create_Compatible_Bitmap, Create_Memory_Canvas, Device_To_Logical, Device_To_Logical, Device_To_Logical, Draw_Direction, Ellipse, Exclude_Clipping_Area, Fill_Rectangle, Fill_Rectangle, Frame_Rectangle, Handle, Handle, Horizontal_Text_Alignment, Horizontal_Text_Alignment, Include_Clipping_Area, Initialize, Inside_Clipping_Area, Inside_Clipping_Area, Invert_Rectangle, Line, Lines, Load_State, Logical_To_Device, Logical_To_Device, Logical_To_Device, Map_Mode, Map_Mode, Offset_Viewport_Origin, Offset_Window_Origin, Paint_Bitmap, Paint_Icon, Pie, Point, Point, Point_Size, Polygon, Put, Put, Rectangle, Rectangle_3D, Rectangle_3D, Release, Rounded_Rectangle, Save_State, Scale_Viewport_Extents, Scale_Window_Extents, Select_Object, Set_Mix_Mode, StretchBlt, Text_Color, Text_Color, Text_Output_Size, Vertical_Text_Alignment, Vertical_Text_Alignment, Viewport_Extents, Viewport_Extents, Viewport_Origin, Viewport_Origin, Window_Extents, Window_Extents, Window_Origin, Window_Origin, X_Pixels_Per_Inch, Y_Pixels_Per_Inch
Drawing_Panel_Type derived from Window_Type
Overridden Operations:  On_Create, On_Erase_Background, On_Paint, On_Size
New Operations:  Auto_Resize, Auto_Resize, Get_Canvas, Resize_Canvas, Resize_Canvas
Inherited Operations:  Accelerator_Handle, Accelerator_Handle, Accelerator_Table, Accept_File_Drag_And_Drop, Attach, Attach_Control, Attach_Dialog, Attach_Dialog_Item, Border, Border, Capture_Mouse, Center, Center, Child, Client_Area_Height, Client_Area_Height, Client_Area_Size, Client_Area_Width, Client_Area_Width, Close, Control, Controlling_Parent, Create, Create_As_Control, Create_As_Dialog, Create_As_Dialog, Create_As_Tool_Window, Create_Child, Create_Control, Create_Dialog, Create_Dialog, Create_MDI_Child, Create_MDI_Top, Disable, Display_Context_Menu, Display_Context_Menu, Dock, Dock, Dock_Children, Enable, Enabled, Enabled, End_Dialog, Enumerate_Children, Finalize, Fire_On_Accelerator_Select, Fire_On_Change_Cursor, Fire_On_Character_Down, Fire_On_Character_Up, Fire_On_Close, Fire_On_Context_Menu, Fire_On_Create, Fire_On_Destroy, Fire_On_Erase_Background, Fire_On_File_Drop, Fire_On_Focus, Fire_On_Hide, Fire_On_Horizontal_Scroll, Fire_On_Left_Mouse_Button_Double_Click, Fire_On_Left_Mouse_Button_Down, Fire_On_Left_Mouse_Button_Up, Fire_On_Lost_Focus, Fire_On_MDI_Activate, Fire_On_MDI_Deactivate, Fire_On_Menu_Hover, Fire_On_Menu_Select, Fire_On_Middle_Mouse_Button_Double_Click, Fire_On_Middle_Mouse_Button_Down, Fire_On_Middle_Mouse_Button_Up, Fire_On_Mouse_Move, Fire_On_Move, Fire_On_Paint, Fire_On_Pre_Create, Fire_On_Right_Mouse_Button_Double_Click, Fire_On_Right_Mouse_Button_Down, Fire_On_Right_Mouse_Button_Up, Fire_On_Show, Fire_On_Size, Fire_On_Vertical_Scroll, First_Window, Focus, Focus, Freeze, Get_Canvas, Get_Font, Get_Full_Window_Canvas, Group, Group, Handle, Height, Height, Hide, Horizontal_Scroll_Bar, Horizontal_Scroll_Bar, Iconic, Iconic, ID, Initialize, Is_Dialog, Is_Dialog, Is_Modal, Is_Modal, Keyboard_Support, Keyboard_Support, Large_Icon, Last_Window, Left, Left, MDI_Active_Window, MDI_Active_Window, MDI_Arrange_Icons, MDI_Cascade, MDI_Client_Window, MDI_Client_Window, MDI_Close_All, MDI_Menu, MDI_Tile_Horizontal, MDI_Tile_Vertical, Menu, Menu, Menu, Menu_Refresh, Modal_Result, Modal_Result, Move, Next_Tab_Stop, Next_Window, On_Accelerator_Select, On_Accelerator_Select_Handler, On_Change_Cursor, On_Change_Cursor_Handler, On_Character_Down, On_Character_Down_Handler, On_Character_Up, On_Character_Up_Handler, On_Close, On_Close_Handler, On_Command, On_Context_Menu, On_Context_Menu_Handler, On_Create_Handler, On_Destroy, On_Destroy_Handler, On_Draw_Item, On_Erase_Background_Handler, On_File_Drop, On_File_Drop_Handler, On_Filter_Message, On_Focus, On_Focus_Handler, On_Hide, On_Hide_Handler, On_Horizontal_Scroll, On_Horizontal_Scroll_Handler, On_Left_Mouse_Button_Double_Click, On_Left_Mouse_Button_Double_Click_Handler, On_Left_Mouse_Button_Down, On_Left_Mouse_Button_Down_Handler, On_Left_Mouse_Button_Up, On_Left_Mouse_Button_Up_Handler, On_Lost_Focus, On_Lost_Focus_Handler, On_MDI_Activate, On_MDI_Activate_Handler, On_MDI_Deactivate, On_MDI_Deactivate_Handler, On_Menu_Hover, On_Menu_Hover_Handler, On_Menu_Select, On_Menu_Select_Handler, On_Message, On_Middle_Mouse_Button_Double_Click, On_Middle_Mouse_Button_Double_Click_Handler, On_Middle_Mouse_Button_Down, On_Middle_Mouse_Button_Down_Handler, On_Middle_Mouse_Button_Up, On_Middle_Mouse_Button_Up_Handler, On_Mouse_Move, On_Mouse_Move_Handler, On_Move, On_Move_Handler, On_Notify, On_Paint_Handler, On_Pre_Create, On_Pre_Create_Handler, On_Right_Mouse_Button_Double_Click, On_Right_Mouse_Button_Double_Click_Handler, On_Right_Mouse_Button_Down, On_Right_Mouse_Button_Down_Handler, On_Right_Mouse_Button_Up, On_Right_Mouse_Button_Up_Handler, On_Show, On_Show_Handler, On_Size_Handler, On_Vertical_Scroll, On_Vertical_Scroll_Handler, Order, Order, Parent, Parent, Point_To_Client, Point_To_Desktop, Previous_Tab_Stop, Previous_Window, Redraw, Scroll_Drag_Position, Scroll_Maximum, Scroll_Maximum, Scroll_Minimum, Scroll_Minimum, Scroll_Page_Size, Scroll_Page_Size, Scroll_Position, Scroll_Position, Scroll_Range, Set_Font, Show, Size, Small_Icon, Tab_Stop, Tab_Stop, Text, Text, Text_Length, Thaw, Top, Top, Valid, Vertical_Scroll_Bar, Vertical_Scroll_Bar, Visible, Visible, Width, Width, Zoom, Zoom

Other Items:

type Drawing_Canvas_Type is
  new GWindows.Drawing.Memory_Canvas_Type with private;

procedure Finalize (Canvas : in out Drawing_Canvas_Type);
Requests a redraw of Drawing_Panel when finalized Redraw (Window)

type Drawing_Panel_Type is new GWindows.Windows.Window_Type with private;

Drawing Panels are used as a sort of permanent canvas. It handles automaticly saving any drawing made on it to its internal memory bitmap and restoring it on any On_Paint events received

type Drawing_Panel_Access is access all Drawing_Panel_Type;

type Pointer_To_Drawing_Panel_Class is access all Drawing_Panel_Type'Class;
Panel_Type - Properties

procedure Auto_Resize (Window : in out Drawing_Panel_Type;
                       Value  : in     Boolean            := True);

function Auto_Resize (Window : in Drawing_Panel_Type) return Boolean;
If set to true, drawing canvas will automaticly be resized to size of window whenever a On_Size message is received This is true by default

procedure Get_Canvas (Window : in     Drawing_Panel_Type;
                      Canvas : in out Drawing_Canvas_Type'Class);
Returns the internal memory canvas for drawing in memory. Once drawing is complete in memory, Redraw should be called. If you wish to have the new drawing redrawn immediately call Redraw (Window, Redraw_Now => True)

procedure Resize_Canvas (Window : in out Drawing_Panel_Type;
                         Copy   : in     Boolean            := True);
Redimensions the internal memory canvas to fit the current dimensions of the Drawing_Panel. If copy is true, as much of the old bitmap as will fit on the new one will be copied.

procedure Resize_Canvas (Window : in out Drawing_Panel_Type;
                         Width  : in     Integer;
                         Height : in     Integer;
                         Copy   : in     Boolean            := True);
Redimension the internal memory canvas to a set size. If Auto_Resize is true, this size will be reset on the next change in size of the Drawing_Panel. If copy is true, as much of the old bitmap as will fit on the new one will be copied.

procedure On_Paint (Window : in out Drawing_Panel_Type;
                    Canvas : in out GWindows.Drawing.Canvas_Type;
                    Area   : in     GWindows.Types.Rectangle_Type);
Handles drawing border

procedure On_Size (Window : in out Drawing_Panel_Type;
                   Width  : in     Integer;
                   Height : in     Integer);
Handles automaticly resizing canvas when window is resized

procedure On_Create (Window : in out Drawing_Panel_Type);
Handles creation of first internal bitmap

procedure On_Erase_Background
  (Window : in out Drawing_Panel_Type;
   Canvas : in out GWindows.Drawing.Canvas_Type;
   Area   : in     GWindows.Types.Rectangle_Type);
Handles background erase to prevent draw of background If Auto_Resize is turned off and the Drawing Panel client area is greater then the size of the internal panel, this will create very strange results unless On_Erase_Background is overridden and calls the base Window_Type On_Erase_Background


   --  Implementation-defined ...
end GWindows.Drawing_Panels;