8c176b1874ba42a728f52d9ed9aa9e9157d7077a
[AXE.git] / demos / doodle3.cpp
1 /**************************************************************************
2 **  (c) Copyright 2002, Andromeda Technology & Automation
3 ***************************************************************************
4 ** MODULE INFORMATION *
5 ***********************
6 **      FILE NAME      : doodle2.cpp
7 **      SYSTEM NAME    : AXE - Andromeda X-windows Encapsulation
8 **      VERSION NUMBER : $Revision: 1.1 $
9 **
10 **  DESCRIPTION      :  Doodle is an exmaple application to demonstrate
11 **                      the functions in AXE as a tutorial.
12 **                      The second phase shows how to draw graphics in a
13 **                      window and the event handling mechanism.
14 **
15 **  EXPORTED OBJECTS : 
16 **  LOCAL    OBJECTS : 
17 **  MODULES  USED    :
18 ***************************************************************************
19 **  ADMINISTRATIVE INFORMATION *
20 ********************************
21 **      ORIGINAL AUTHOR : Arjen Baart - arjen@andromeda.nl
22 **      CREATION DATE   : Mar 01, 2002
23 **************************************************************************/
24
25 /*****************************
26    $Log: doodle3.cpp,v $
27    Revision 1.1  2002-07-25 08:01:18  arjen
28    First checkin, AXE release 0.2
29
30 *****************************/
31
32 static const char *RCSID = "$Id: doodle3.cpp,v 1.1 2002-07-25 08:01:18 arjen Exp $";
33
34 #include <AXE/xappl.h>
35
36 class doodle_view : public window
37 {
38 public:
39
40    doodle_view(window *parent) : window (*parent, 10, 30, 300, 220)
41    {
42       SelectInput(ExposureMask, 1);
43       SelectInput(KeyPressMask, 1);
44       Background(color("lightyellow"));
45    }
46
47    virtual int EV_Expose(XExposeEvent);
48    virtual int EV_KeyPress(XKeyEvent ev);
49 };
50
51 class doodle: public xapplication
52 {
53    managed_window *main_frame;
54    doodle_view    *draw_frame;
55
56    virtual void SetupResources(void);
57 };
58
59 doodle DoodleApp;
60
61 void doodle::SetupResources()
62 {
63    main_frame = new managed_window("Doodling with AXE");
64    main_frame->Map();
65
66    draw_frame = new doodle_view(main_frame);
67    draw_frame->Map();
68 }
69
70 int doodle_view::EV_Expose(XExposeEvent ev)
71 {
72    gc    graphic("black");
73
74    DrawRectangle(graphic, 50, 70, 200, 100);
75
76    return 1;
77 }
78
79 int doodle_view::EV_KeyPress(XKeyEvent ev)
80 {
81    KeySym   key;
82
83    key = XLookupKeysym(&ev, ev.state & 1);
84
85    if (key == 'q')
86    {
87       return 0;
88    }
89    else
90    {
91       return 1;
92    }
93 }