EZDraw++  1.2-6
Une mini-bibliothèque minimale pour réaliser un programme graphique en C++ sur Windows ou Linux
ez-draw++.hpp
Aller à la documentation de ce fichier.
1 /*
2  * ez-draw++.hpp: basic EZ-Draw++ module
3  *
4  * eric.remy@univ-amu.fr - 30/03/2022 - version 1.2-6
5  *
6  * This program is free software under the terms of the
7  * GNU Lesser General Public License (LGPL) version 2.1.
8  *
9  * ez-draw++ is based on ez-draw (see below)
10 */
11 
14 
15 #ifndef EZDRAWPP_HPP
16 #define EZDRAWPP_HPP
17 
18 #include <iostream>
19 #include <string>
20 #include <stdexcept>
21 #include <cstdarg>
22 #include <map>
23 
25 typedef unsigned char EZuint8;
29 class EZColor {
30  unsigned int value;
31  static void init();
32 public:
33 
37  explicit EZColor(EZuint8 grey=0);
42  inline EZColor(int red,int green,int blue) : EZColor(EZuint8(red),EZuint8(green),EZuint8(blue)) {}
53  explicit EZColor(double hue,double saturation,double value);
55  EZuint8 getRed() const;
57  EZuint8 getGreen() const;
59  EZuint8 getBlue() const;
67  friend std::ostream& operator<<(std::ostream& os,const EZColor& col);
69  friend std::istream& operator>>(std::istream& is, EZColor& col);
71  friend class EZWindow;
72  friend class EZDraw;
74 
77  static EZColor black,
79  grey,
80  red,
82  blue,
84  cyan,
86 };
87 
88 
97 enum class EZAlign : int {
99  AA = 183200,
101  TL,
102  TC,
103  TR,
104  ML,
105  MC,
106  MR,
107  BL,
108  BC,
109  BR,
111  BB,
113  TLF,
114  TCF,
115  TRF,
116  MLF,
117  MCF,
118  MRF,
119  BLF,
120  BCF,
121  BRF,
122 // CC // Constante EZ-Draw supprimée parce qu'elle est inutile à EZ-Draw++ et qu'elle fait déconner le mécanisme d'exclusion de doxygen.
123 };
124 
131 enum class EZKeySym
132 {
133  BackSpace = 0xff08,
134  Tab = 0xff09,
135  Return = 0xff0d,
136  Pause = 0xff13,
137  Scroll_Lock = 0xff14,
138  Escape = 0xff1b,
139  Delete = 0xffff,
140  Home = 0xff50,
141  Left = 0xff51,
142  Up = 0xff52,
143  Right = 0xff53,
144  Down = 0xff54,
145  Prior = 0xff55,
146  Next = 0xff56,
147  End = 0xff57,
148  Insert = 0xff63,
149  Menu = 0xff67,
150  Num_Lock = 0xff7f,
151  KP_Enter = 0xff8d,
152  KP_Home = 0xff95,
153  KP_Left = 0xff96,
154  KP_Up = 0xff97,
155  KP_Right = 0xff98,
156  KP_Down = 0xff99,
157  KP_Prior = 0xff9a,
158  KP_Next = 0xff9b,
159  KP_End = 0xff9c,
160  KP_Begin = 0xff9d,
161  KP_Equal = 0xffbd,
162  KP_Multiply = 0xffaa,
163  KP_Add = 0xffab,
164  KP_Separator = 0xffac,
165  KP_Subtract = 0xffad,
166  KP_Divide = 0xffaf,
167  KP_0 = 0xffb0,
168  KP_1 = 0xffb1,
169  KP_2 = 0xffb2,
170  KP_3 = 0xffb3,
171  KP_4 = 0xffb4,
172  KP_5 = 0xffb5,
173  KP_6 = 0xffb6,
174  KP_7 = 0xffb7,
175  KP_8 = 0xffb8,
176  KP_9 = 0xffb9,
177  F1 = 0xffbe,
178  F2 = 0xffbf,
179  F3 = 0xffc0,
180  F4 = 0xffc1,
181  F5 = 0xffc2,
182  F6 = 0xffc3,
183  F7 = 0xffc4,
184  F8 = 0xffc5,
185  F9 = 0xffc6,
186  F10 = 0xffc7,
187  F11 = 0xffc8,
188  F12 = 0xffc9,
189  Shift_L = 0xffe1,
190  Shift_R = 0xffe2,
191  Control_L = 0xffe3,
192  Control_R = 0xffe4,
193  Caps_Lock = 0xffe5,
194  Meta_L = 0xffe7,
195  Meta_R = 0xffe8,
196  Alt_L = 0xffe9,
197  Alt_R = 0xffea,
198  space = 0x0020,
199  exclam = 0x0021,
200  quotedbl = 0x0022,
201  numbersign = 0x0023,
202  dollar = 0x0024,
203  percent = 0x0025,
204  ampersand = 0x0026,
205  apostrophe = 0x0027,
206  parenleft = 0x0028,
207  parenright = 0x0029,
208  asterisk = 0x002a,
209  plus = 0x002b,
210  comma = 0x002c,
211  minus = 0x002d,
212  period = 0x002e,
213  slash = 0x002f,
214  _0 = 0x0030,
215  _1 = 0x0031,
216  _2 = 0x0032,
217  _3 = 0x0033,
218  _4 = 0x0034,
219  _5 = 0x0035,
220  _6 = 0x0036,
221  _7 = 0x0037,
222  _8 = 0x0038,
223  _9 = 0x0039,
224  colon = 0x003a,
225  semicolon = 0x003b,
226  less = 0x003c,
227  equal = 0x003d,
228  greater = 0x003e,
229  question = 0x003f,
230  at = 0x0040,
231  A = 0x0041,
232  B = 0x0042,
233  C = 0x0043,
234  D = 0x0044,
235  E = 0x0045,
236  F = 0x0046,
237  G = 0x0047,
238  H = 0x0048,
239  I = 0x0049,
240  J = 0x004a,
241  K = 0x004b,
242  L = 0x004c,
243  M = 0x004d,
244  N = 0x004e,
245  O = 0x004f,
246  P = 0x0050,
247  Q = 0x0051,
248  R = 0x0052,
249  S = 0x0053,
250  T = 0x0054,
251  U = 0x0055,
252  V = 0x0056,
253  W = 0x0057,
254  X = 0x0058,
255  Y = 0x0059,
256  Z = 0x005a,
257  bracketleft = 0x005b,
258  backslash = 0x005c,
259  bracketright = 0x005d,
260  asciicircum = 0x005e,
261  underscore = 0x005f,
262  grave = 0x0060,
263  a = 0x0061,
264  b = 0x0062,
265  c = 0x0063,
266  d = 0x0064,
267  e = 0x0065,
268  f = 0x0066,
269  g = 0x0067,
270  h = 0x0068,
271  i = 0x0069,
272  j = 0x006a,
273  k = 0x006b,
274  l = 0x006c,
275  m = 0x006d,
276  n = 0x006e,
277  o = 0x006f,
278  p = 0x0070,
279  q = 0x0071,
280  r = 0x0072,
281  s = 0x0073,
282  t = 0x0074,
283  u = 0x0075,
284  v = 0x0076,
285  w = 0x0077,
286  x = 0x0078,
287  y = 0x0079,
288  z = 0x007a,
289  braceleft = 0x007b,
290  bar = 0x007c,
291  braceright = 0x007d,
292  asciitilde = 0x007e,
293  nobreakspace = 0x00a0,
294  exclamdown = 0x00a1, /* INVERTED EXCLAMATION MARK */
295  cent = 0x00a2, /* CENT SIGN */
296  sterling = 0x00a3, /* POUND SIGN */
297  currency = 0x00a4, /* CURRENCY SIGN */
298  yen = 0x00a5, /* YEN SIGN */
299  brokenbar = 0x00a6, /* BROKEN BAR */
300  section = 0x00a7, /* SECTION SIGN */
301  diaeresis = 0x00a8, /* DIAERESIS */
302  copyright = 0x00a9, /* COPYRIGHT SIGN */
303  ordfeminine = 0x00aa, /* FEMININE ORDINAL INDICATOR */
304  guillemotleft = 0x00ab, /* LEFT-POINTING DOUBLE ANGLE QUOTATION MARK */
305  notsign = 0x00ac, /* NOT SIGN */
306  hyphen = 0x00ad, /* SOFT HYPHEN */
307  registered = 0x00ae, /* REGISTERED SIGN */
308  macron = 0x00af, /* MACRON */
309  degree = 0x00b0, /* DEGREE SIGN */
310  plusminus = 0x00b1, /* PLUS-MINUS SIGN */
311  twosuperior = 0x00b2,
312  threesuperior = 0x00b3, /* SUPERSCRIPT THREE */
313  acute = 0x00b4, /* ACUTE ACCENT */
314  mu = 0x00b5, /* MICRO SIGN */
315  paragraph = 0x00b6, /* PILCROW SIGN */
316  periodcentered = 0x00b7, /* MIDDLE DOT */
317  cedilla = 0x00b8, /* CEDILLA */
318  onesuperior = 0x00b9, /* SUPERSCRIPT ONE */
319  masculine = 0x00ba, /* MASCULINE ORDINAL INDICATOR */
320  guillemotright = 0x00bb, /* RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK */
321  onequarter = 0x00bc, /* VULGAR FRACTION ONE QUARTER */
322  onehalf = 0x00bd, /* VULGAR FRACTION ONE HALF */
323  threequarters = 0x00be, /* VULGAR FRACTION THREE QUARTERS */
324  questiondown = 0x00bf, /* INVERTED QUESTION MARK */
325  Agrave = 0x00c0, /* CAPITAL LETTER A WITH GRAVE */
326  Aacute = 0x00c1, /* CAPITAL LETTER A WITH ACUTE */
327  Acircumflex = 0x00c2, /* CAPITAL LETTER A WITH CIRCUMFLEX */
328  Atilde = 0x00c3, /* CAPITAL LETTER A WITH TILDE */
329  Adiaeresis = 0x00c4, /* CAPITAL LETTER A WITH DIAERESIS */
330  Aring = 0x00c5, /* CAPITAL LETTER A WITH RING ABOVE */
331  AE = 0x00c6, /* CAPITAL LETTER AE */
332  Ccedilla = 0x00c7, /* CAPITAL LETTER C WITH CEDILLA */
333  Egrave = 0x00c8, /* CAPITAL LETTER E WITH GRAVE */
334  Eacute = 0x00c9, /* CAPITAL LETTER E WITH ACUTE */
335  Ecircumflex = 0x00ca, /* CAPITAL LETTER E WITH CIRCUMFLEX */
336  Ediaeresis = 0x00cb, /* CAPITAL LETTER E WITH DIAERESIS */
337  Igrave = 0x00cc, /* CAPITAL LETTER I WITH GRAVE */
338  Iacute = 0x00cd, /* CAPITAL LETTER I WITH ACUTE */
339  Icircumflex = 0x00ce, /* CAPITAL LETTER I WITH CIRCUMFLEX */
340  Idiaeresis = 0x00cf, /* CAPITAL LETTER I WITH DIAERESIS */
341  ETH = 0x00d0, /* CAPITAL LETTER ETH */
342  Ntilde = 0x00d1, /* CAPITAL LETTER N WITH TILDE */
343  Ograve = 0x00d2, /* CAPITAL LETTER O WITH GRAVE */
344  Oacute = 0x00d3, /* CAPITAL LETTER O WITH ACUTE */
345  Ocircumflex = 0x00d4, /* CAPITAL LETTER O WITH CIRCUMFLEX */
346  Otilde = 0x00d5, /* CAPITAL LETTER O WITH TILDE */
347  Odiaeresis = 0x00d6, /* CAPITAL LETTER O WITH DIAERESIS */
348  multiply = 0x00d7, /* MULTIPLICATION SIGN */
349  Oslash = 0x00d8, /* CAPITAL LETTER O WITH STROKE */
350  Ugrave = 0x00d9, /* CAPITAL LETTER U WITH GRAVE */
351  Uacute = 0x00da, /* CAPITAL LETTER U WITH ACUTE */
352  Ucircumflex = 0x00db, /* CAPITAL LETTER U WITH CIRCUMFLEX */
353  Udiaeresis = 0x00dc, /* CAPITAL LETTER U WITH DIAERESIS */
354  Yacute = 0x00dd, /* CAPITAL LETTER Y WITH ACUTE */
355  THORN = 0x00de, /* CAPITAL LETTER THORN */
356  ssharp = 0x00df, /* SMALL LETTER SHARP S */
357  agrave = 0x00e0, /* SMALL LETTER A WITH GRAVE */
358  aacute = 0x00e1, /* SMALL LETTER A WITH ACUTE */
359  acircumflex = 0x00e2, /* SMALL LETTER A WITH CIRCUMFLEX */
360  atilde = 0x00e3, /* SMALL LETTER A WITH TILDE */
361  adiaeresis = 0x00e4, /* SMALL LETTER A WITH DIAERESIS */
362  aring = 0x00e5, /* SMALL LETTER A WITH RING ABOVE */
363  ae = 0x00e6, /* SMALL LETTER AE */
364  ccedilla = 0x00e7, /* SMALL LETTER C WITH CEDILLA */
365  egrave = 0x00e8, /* SMALL LETTER E WITH GRAVE */
366  eacute = 0x00e9, /* SMALL LETTER E WITH ACUTE */
367  ecircumflex = 0x00ea, /* SMALL LETTER E WITH CIRCUMFLEX */
368  ediaeresis = 0x00eb, /* SMALL LETTER E WITH DIAERESIS */
369  igrave = 0x00ec, /* SMALL LETTER I WITH GRAVE */
370  iacute = 0x00ed, /* SMALL LETTER I WITH ACUTE */
371  icircumflex = 0x00ee, /* SMALL LETTER I WITH CIRCUMFLEX */
372  idiaeresis = 0x00ef, /* SMALL LETTER I WITH DIAERESIS */
373  eth = 0x00f0, /* SMALL LETTER ETH */
374  ntilde = 0x00f1, /* SMALL LETTER N WITH TILDE */
375  ograve = 0x00f2, /* SMALL LETTER O WITH GRAVE */
376  oacute = 0x00f3, /* SMALL LETTER O WITH ACUTE */
377  ocircumflex = 0x00f4, /* SMALL LETTER O WITH CIRCUMFLEX */
378  otilde = 0x00f5, /* SMALL LETTER O WITH TILDE */
379  odiaeresis = 0x00f6, /* SMALL LETTER O WITH DIAERESIS */
380  division = 0x00f7, /* DIVISION SIGN */
381  oslash = 0x00f8, /* SMALL LETTER O WITH STROKE */
382  ugrave = 0x00f9, /* SMALL LETTER U WITH GRAVE */
383  uacute = 0x00fa, /* SMALL LETTER U WITH ACUTE */
384  ucircumflex = 0x00fb, /* SMALL LETTER U WITH CIRCUMFLEX */
385  udiaeresis = 0x00fc, /* SMALL LETTER U WITH DIAERESIS */
386  yacute = 0x00fd, /* SMALL LETTER Y WITH ACUTE */
387  thorn = 0x00fe, /* SMALL LETTER THORN */
388  ydiaeresis = 0x00ff, /* SMALL LETTER Y WITH DIAERESIS */
389  EuroSign = 0x20ac /* EURO SIGN */
390 };
391 
394 std::ostream& operator<<(std::ostream& os,const EZKeySym& k);
395 
397 struct sEz_event;
399 
401 class EZEvent {
403  const struct sEz_event* ez_event;
404  inline void setEvent(const struct sEz_event *e) { ez_event = e; }
405  EZEvent(const struct sEz_event *);
407 public:
409  int mouseX() const;
411  int mouseY() const;
413  int mouseButton() const;
415  EZKeySym keySym() const;
417  std::string keyName() const;
419  std::size_t keyCount() const;
422  const char * keyString() const;
423  friend class EZWindow;
424 };
425 
428 class EZWindow {
430  EZEvent current_event;
431  bool _isVisible;
432  EZWindow (const EZWindow&) = delete;
433  const EZWindow& operator= (const EZWindow&) = delete;
434  static void dispatch(struct sEz_event *e);
436 public:
441  EZWindow (int width=320, int height=200, const char *title="");
442 
444  virtual ~EZWindow ();
445 
450  void setDoubleBuffer (bool state=true);
451 
452 
456  void setWidth (int width);
457 
461  void setHeight (int height);
462 
467  void setWidthHeight(int width, int height);
468 
470  int getWidth () const;
471 
473  int getHeight () const;
474 
478  bool isVisible () const { return _isVisible; }
479 
483  void setVisible (bool visible=true);
484 
487  void reset () const;
488 
490  void clear (EZColor color) const;
491 
495  void setColor (EZColor color);
496 
499  void setThick (int thick=1);
500 
512  void loadFont (int num,const char *name);
513 
516  void setFont (int num);
517 
521  void drawPoint (int x, int y) const;
522 
527  void drawLine (int x1, int y1, int x2, int y2) const;
528 
533  void drawRectangle(int x1, int y1, int x2, int y2) const;
534 
539  void fillRectangle(int x1, int y1, int x2, int y2) const;
540 
545  void drawCircle (int x1, int y1, int x2, int y2) const;
546 
551  void fillCircle (int x1, int y1, int x2, int y2) const;
552 
558  void drawTriangle (int x1, int y1, int x2, int y2, int x3, int y3) const;
559 
565  void fillTriangle (int x1, int y1, int x2, int y2, int x3, int y3) const;
566 
571  void drawText (EZAlign align,int x,int y,const std::string &str) const;
572 
578  void drawText (EZAlign align,int x,int y,const char *str) const;
579 
582  void sendExpose () const;
583 
586  void startTimer (unsigned int delay) const;
587 
590  void stopTimer () const;
591 
592  // Gestion des Événements
594  inline const EZEvent& currentEvent () const { return current_event; }
595 
598  virtual void expose ();
599 
601  virtual void close ();
602 
609  virtual void buttonPress (int mouse_x,int mouse_y,int button);
610 
613  virtual void buttonRelease(int mouse_x,int mouse_y,int button);
614 
618  virtual void motionNotify (int mouse_x,int mouse_y,int button);
619 
622  virtual void keyPress (EZKeySym keysym);
623 
626  virtual void keyRelease (EZKeySym keysym);
627 
630  virtual void configureNotify(int width,int height);
631 
634  virtual void timerNotify ();
635 
637  friend class EZImage;
638  friend class EZPixmap;
640 };
641 
643 class EZDrawError : public std::runtime_error
644 {
645 public:
648  EZDrawError(const char *errmsg);
649 };
650 
653 class EZDraw {
655  friend class EZWindow;
657  static int error_handler(const char *fmt, std::va_list ap);
659 public:
664  EZDraw();
667  virtual ~EZDraw();
668 
671  static void quit();
672 
675  void setAutoQuit(bool value);
676 
679  void mainLoop();
680 
684  static int random(int n);
685 
688  static double getTime();
689 };
690 
694 class EZPixel {
695  EZuint8 *p;
696  inline EZPixel(EZuint8 *_p) : p(_p) {}
697  public:
699  inline EZColor getColor() const { return EZColor(p[0],p[1],p[2]); }
701  inline EZuint8 getRed() const { return p[0]; }
703  inline EZuint8 getGreen() const { return p[1]; }
705  inline EZuint8 getBlue() const { return p[2]; }
707  inline EZuint8 getAlpha() const { return p[3]; }
709  inline void setColor(EZColor col) { p[0] = col.getRed(); p[1] = col.getGreen(); p[2] = col.getBlue(); }
711  inline void setRed(EZuint8 r) { p[0] = r; }
713  inline void setGreen(EZuint8 g) { p[1] = g; }
715  inline void setBlue(EZuint8 b) { p[2] = b; }
717  inline void setAlpha(EZuint8 a) { p[3] = a; }
718  friend class EZImage;
719 };
720 
721 struct sEz_image;
722 
725 class EZImage final {
726  struct sEz_image *image;
727  EZImage(struct sEz_image*);
728  EZImage() = delete;
729 public:
732  EZImage(int width, int height);
735  EZImage(const EZImage& orig);
739  EZImage(const char *filename);
741  ~EZImage();
743  int getWidth() const;
745  int getHeight() const;
748  void setAlpha(bool has_alpha);
750  bool getAlpha() const;
754  void setOpacity(int opacity);
758  int getOpacity() const;
762  EZPixel getPixel(int x,int y);
767  void paint(EZWindow& win,int x,int y) const;
774  void paintSubimage(EZWindow& win,int x, int y,int src_x, int src_y, int width, int height) const;
776  void print(int src_x, int src_y, int w, int h) const;
780  void fillRGBA(EZuint8 red, EZuint8 green, EZuint8 blue, EZuint8 alpha);
787  void blend(const EZImage& src, int dst_x, int dst_y);
793  void blendSubimage(const EZImage& src, int dst_x, int dst_y,int src_x, int src_y, int width, int height);
798  EZImage *extract(int src_x, int src_y, int width, int height) const;
801  EZImage *verticalSymmetry() const;
804  EZImage *horizontalSymmetry() const;
809  EZImage* scale(double factor) const;
818  EZImage* rotate(double theta,int quality) const;
825  void rotatePoint(double theta, int src_x, int src_y,int& dst_x, int& dst_y);
826  friend class EZPixmap;
827 };
828 
829 struct sEz_pixmap;
830 
835 class EZPixmap final {
836  struct sEz_pixmap *pixmap;
837  EZPixmap()=delete;
838 public:
842  EZPixmap(const EZImage& image);
844  ~EZPixmap();
848  void paint(EZWindow& win,int x, int y) const;
853  void tile(EZWindow& win,int x, int y, int width, int height) const;
854 };
855 
856 #endif
EZColor(EZuint8 grey=0)
Construit une couleur à partir d'un niveau de gris.
Definition: ez-draw++.cpp:3756
static EZColor black
Ensemble de constantes permettant de dessiner simplement dans les couleurs les plus fréquentes (sans ...
Definition: ez-draw++.hpp:77
EZColor(int red, int green, int blue)
Construit une couleur à partir les valeurs de ses composantes rouge, verte et bleue :
Definition: ez-draw++.hpp:42
Classe permettant de représenter une valeur de couleur.
Definition: ez-draw++.hpp:29
static EZColor grey
Gris.
Definition: ez-draw++.hpp:79
EZuint8 getRed() const
Accesseur de consultation pour obtenir la valeur de la composante rouge de la EZColor.
friend std::istream & operator>>(std::istream &is, EZColor &col)
Lit une valeur de couleur à partir de sa représentation Web classique, par exemple « #0000FF » pour d...
Definition: ez-draw++.cpp:3804
EZuint8 getGreen() const
Accesseur de consultation pour obtenir la valeur de la composante verte de la EZColor.
void setRed(EZuint8 red)
Accesseur de modification qui permet de modifier la valeur de composante rouge de la EZColor.
static EZColor yellow
Jaune.
Definition: ez-draw++.hpp:83
EZuint8 getBlue() const
Accesseur de consultation pour obtenir la valeur de la composante bleue de la EZColor.
static EZColor red
Rouge.
Definition: ez-draw++.hpp:80
friend std::ostream & operator<<(std::ostream &os, const EZColor &col)
Écrit la valeur de couleur avec la notation Web classique, « #FF0000 » par exemple pour du rouge pur.
Definition: ez-draw++.cpp:3784
static EZColor green
Vert.
Definition: ez-draw++.hpp:81
void setGreen(EZuint8 green)
Accesseur de modification qui permet de modifier la valeur de composante vert de la EZColor.
static EZColor magenta
Magenta.
Definition: ez-draw++.hpp:85
void setBlue(EZuint8 blue)
Accesseur de modification qui permet de modifier la valeur de composante bleue de la EZColor.
static EZColor blue
Bleu.
Definition: ez-draw++.hpp:82
static EZColor cyan
Cyan.
Definition: ez-draw++.hpp:84
static EZColor white
Blanc.
Definition: ez-draw++.hpp:78
static double getTime()
La différence entre deux valeurs renvoyées par cette fonction vous permet d'estimer la durée (en seco...
Definition: ez-draw++.cpp:3900
static int random(int n)
Tire un nombre entier au hasard.
Definition: ez-draw++.cpp:3898
virtual ~EZDraw()
Destructeur virtuel de la classe EZDraw.
Definition: ez-draw++.cpp:3840
EZDraw()
Constructeur par défaut.
Definition: ez-draw++.cpp:3826
void mainLoop()
Boucle d'attente et de traitement des événements.
Definition: ez-draw++.cpp:3896
static void quit()
Cette méthode de classe permet de quitter le programme.
Definition: ez-draw++.cpp:3892
void setAutoQuit(bool value)
Indique l'effet désiré d'un click sur le bouton de fermeture d'une des fenêtres de l'application : fe...
Definition: ez-draw++.cpp:3894
EZDrawError(const char *errmsg)
Constructeur de la classe d'erreur de EZDraw.
Definition: ez-draw++.cpp:3719
La classe EZDrawError décrit une exception liée aux fonctions de EZDraw++ ou de sa sous-couche intern...
Definition: ez-draw++.hpp:644
Une instance de la classe EZDraw est nécessaire au bon fonctionnement de votre application.
Definition: ez-draw++.hpp:653
const char * keyString() const
Renvoie le(s) caractère(s) qui sont associés à la touche du clavier qui a été appuyée/relachée.
Definition: ez-draw++.cpp:3618
La classe EZEvent représente un événement à traiter de l'interface graphique : clic de la souris,...
Definition: ez-draw++.hpp:401
int mouseY() const
Pour un événement concernant la souris, renvoie la coordonnée y de la position de la souris au moment...
Definition: ez-draw++.cpp:3605
std::size_t keyCount() const
Renvoie le nombre de caractères qui sont stockés dans la chaîne consultable par const char * EZEvent:...
Definition: ez-draw++.cpp:3617
std::string keyName() const
Renvoie une chaîne de caractère permettant d'afficher le nom du EZKeySym.
Definition: ez-draw++.cpp:3608
int mouseButton() const
Pour un événement concernant la souris, renvoie le numéro du bouton de la souris qui a déclenché l'év...
Definition: ez-draw++.cpp:3606
int mouseX() const
Pour un événement concernant la souris, renvoie la coordonnée x de la position de la souris au moment...
Definition: ez-draw++.cpp:3604
EZKeySym keySym() const
Renvoie l'identificant de la touche du clavier qui a été appuyée/relachée sous forme d'un EZKeySym.
Definition: ez-draw++.cpp:3607
void setAlpha(bool has_alpha)
Permet d'activer ou désactiver la transparence de l'image courante.
Definition: ez-draw++.cpp:9233
void setOpacity(int opacity)
Réglage de la transparence, qu'on appelle alpha channel de l'image.
Definition: ez-draw++.cpp:9239
void blendSubimage(const EZImage &src, int dst_x, int dst_y, int src_x, int src_y, int width, int height)
Idem à la fonction void EZImage::blend(const EZImage& src, int dst_x, int dst_y) mais où il est possi...
Definition: ez-draw++.cpp:9269
EZImage * rotate(double theta, int quality) const
Construit une nouvelle image à partir d'une rotation de l’image courante.
Definition: ez-draw++.cpp:9300
EZImage * verticalSymmetry() const
Construit une nouvelle image par une symétrie par rapport à l'axe vertical de l'image courante.
Definition: ez-draw++.cpp:9286
EZImage * extract(int src_x, int src_y, int width, int height) const
Extrait une partie rectangulaire d'une image existante.
Definition: ez-draw++.cpp:9272
void blend(const EZImage &src, int dst_x, int dst_y)
Incruste une partie de l'image src dans l'image courante.
Definition: ez-draw++.cpp:9266
EZImage * scale(double factor) const
Construit une nouvelle image par une mise à l'échelle (zoom).
Definition: ez-draw++.cpp:9279
void paint(EZWindow &win, int x, int y) const
Affiche l'image dans la fenêtre.
Definition: ez-draw++.cpp:9254
void paintSubimage(EZWindow &win, int x, int y, int src_x, int src_y, int width, int height) const
Trace une partie rectangulaire de l'image courante dans la fenêtre.
Definition: ez-draw++.cpp:9257
EZPixel getPixel(int x, int y)
Accesseur pour obtenir un pixel de coordonnées x et y.
Definition: ez-draw++.cpp:9245
EZImage * horizontalSymmetry() const
Construit une nouvelle image par une symétrie par rapport à l'axe horizontal de l'image courante.
Definition: ez-draw++.cpp:9293
int getOpacity() const
Accesseur pour la valeur de transparence.
Definition: ez-draw++.cpp:9242
void fillRGBA(EZuint8 red, EZuint8 green, EZuint8 blue, EZuint8 alpha)
Remplit l'image courante avec la couleur et le degré de transparence indiqué.
Definition: ez-draw++.cpp:9263
void rotatePoint(double theta, int src_x, int src_y, int &dst_x, int &dst_y)
Calcule pour un point de coordonnées src_x,src_y dans l’image source, les nouvelles coordonnées dst_x...
Definition: ez-draw++.cpp:9307
La classe EZImage permet de conserver une image en mémoire puis de la tracer à l'écran.
Definition: ez-draw++.hpp:725
int getHeight() const
Accesseur pour la hauteur actuelle de l'image.
Definition: ez-draw++.cpp:9230
int getWidth() const
Accesseur pour la largeur actuelle de l'image.
Definition: ez-draw++.cpp:9227
~EZImage()
Destructeur de la classe EZImage.
Definition: ez-draw++.cpp:9224
void print(int src_x, int src_y, int w, int h) const
Affiche une région rectangulaire d’une image dans le terminal.
Definition: ez-draw++.cpp:9260
bool getAlpha() const
Cet accesseur permet de savoir si l'image contient de la transparence (true) ou pas (false).
Definition: ez-draw++.cpp:9236
La classe EZPixel représente un pixel dans une EZImage.
Definition: ez-draw++.hpp:694
void setAlpha(EZuint8 a)
Accesseur pour modifier la valeur de la composante alpha du pixel.
Definition: ez-draw++.hpp:717
EZuint8 getAlpha() const
Accesseur pour obtenir la valeur de la composante alpha du pixel.
Definition: ez-draw++.hpp:707
void setGreen(EZuint8 g)
Accesseur pour modifier la valeur de la composante verte du pixel.
Definition: ez-draw++.hpp:713
EZColor getColor() const
Accesseur pour obtenir la valeur de la couleur du pixel.
Definition: ez-draw++.hpp:699
EZuint8 getGreen() const
Accesseur pour obtenir la valeur de la composante verte du pixel.
Definition: ez-draw++.hpp:703
void setColor(EZColor col)
Accesseur pour modifier la valeur de la couleur du pixel.
Definition: ez-draw++.hpp:709
EZuint8 getBlue() const
Accesseur pour obtenir la valeur de la composante bleue du pixel.
Definition: ez-draw++.hpp:705
EZuint8 getRed() const
Accesseur pour obtenir la valeur de la composante rouge du pixel.
Definition: ez-draw++.hpp:701
void setRed(EZuint8 r)
Accesseur pour modifier la valeur de la composante rouge du pixel.
Definition: ez-draw++.hpp:711
void setBlue(EZuint8 b)
Accesseur pour modifier la valeur de la composante bleue du pixel.
Definition: ez-draw++.hpp:715
void tile(EZWindow &win, int x, int y, int width, int height) const
Affiche le pixmap dans la fenêtre de manière répétitive dans une zone, comme un papier peint,...
Definition: ez-draw++.cpp:9325
void paint(EZWindow &win, int x, int y) const
Affiche le pixmap dans la fenêtre.
Definition: ez-draw++.cpp:9322
La classe EZPixmap permet d'améliorer nettement les performances de tracé à l'écran par rapport à la ...
Definition: ez-draw++.hpp:835
~EZPixmap()
Destructeur de la classe EZPixmap.
Definition: ez-draw++.cpp:9319
void setDoubleBuffer(bool state=true)
Règle si on veut activer le « double buffer » pour éviter le scintillement de l'affichage.
Definition: ez-draw++.cpp:3652
void fillCircle(int x1, int y1, int x2, int y2) const
Dessine une ellipse pleine inscrite au sein des coordonnées indiquées.
Definition: ez-draw++.cpp:3689
void setColor(EZColor color)
Règle la couleur des prochaines opérations de dessin.
Definition: ez-draw++.cpp:3666
bool isVisible() const
Indique si la fenêtre est visible à l'écran.
Definition: ez-draw++.hpp:478
void setFont(int num)
Permet de sélectionner une police déjà chargée en mémoire pour que les écritures ultérieures l'utilis...
Definition: ez-draw++.cpp:3672
virtual void buttonPress(int mouse_x, int mouse_y, int button)
Cette fonction virtuelle est déclenchée à chaque fois qu'un des boutons de la souris est appuyé.
Definition: ez-draw++.cpp:3710
void setThick(int thick=1)
Règle l'épaisseur de trait des prochains dessins.
Definition: ez-draw++.cpp:3668
void startTimer(unsigned int delay) const
Démarre un compte à rebours de la durée indiquée.
Definition: ez-draw++.cpp:3699
void setVisible(bool visible=true)
Rend visible ou cache la fenêtre.
Definition: ez-draw++.cpp:3664
virtual void motionNotify(int mouse_x, int mouse_y, int button)
Cette fonction virtuelle est appelée à chaque mouvement de la souris dans la fenêtre.
Definition: ez-draw++.cpp:3712
void fillTriangle(int x1, int y1, int x2, int y2, int x3, int y3) const
Dessine un triangle plein à partir des coordonnées de ses trois sommets.
Definition: ez-draw++.cpp:3693
void drawRectangle(int x1, int y1, int x2, int y2) const
Dessine un rectangle vide entre les coordonnées indiquées.
Definition: ez-draw++.cpp:3683
void fillRectangle(int x1, int y1, int x2, int y2) const
Dessine un rectangle plein entre les coordonnées indiquées.
Definition: ez-draw++.cpp:3685
virtual void timerNotify()
Cette fonction virtuelle est appelée lorsque le compte à rebours de la fenêtre arrive à zéro.
Definition: ez-draw++.cpp:3716
virtual void keyPress(EZKeySym keysym)
Cette fonction virtuelle est appelée à chaque fois qu'une touche du clavier est enfoncée et que la fe...
Definition: ez-draw++.cpp:3713
void drawTriangle(int x1, int y1, int x2, int y2, int x3, int y3) const
Dessine un triangle vide à partir des coordonnées de ses trois sommets.
Definition: ez-draw++.cpp:3691
void drawText(EZAlign align, int x, int y, const std::string &str) const
Dessine le texte dans la fenêtre à la position indiquée.
Definition: ez-draw++.cpp:3695
void setWidthHeight(int width, int height)
Règle simultanément la largeur et la hauteur de la fenêtre.
Definition: ez-draw++.cpp:3658
void sendExpose() const
Demande à la boucle de gestion d'événements de prévoir un rafraîchissement du dessin de la fenêtre.
Definition: ez-draw++.cpp:3705
EZWindow(int width=320, int height=200, const char *title="")
Constructeur de EZWindow à partir de ses dimensions et d'un titre.
Definition: ez-draw++.cpp:3623
void reset() const
Efface la totalité de l'intérieur de la fenêtre avec un fond uni de couleur blanche.
Definition: ez-draw++.cpp:3675
void stopTimer() const
Stoppe le compte à rebours associé à cette fenêtre.
Definition: ez-draw++.cpp:3701
void setHeight(int height)
Règle la hauteur de la fenêtre.
Definition: ez-draw++.cpp:3656
void loadFont(int num, const char *name)
Charge une nouvelle police de caractère à partir d'un fichier installé sur le système d'exploitation.
Definition: ez-draw++.cpp:3670
void drawCircle(int x1, int y1, int x2, int y2) const
Dessine une ellipse vide inscrite au sein des coordonnées indiquées.
Definition: ez-draw++.cpp:3687
void drawPoint(int x, int y) const
Dessine un point à la coordonnée indiquée.
Definition: ez-draw++.cpp:3679
virtual void keyRelease(EZKeySym keysym)
Cette fonction virtuelle est appelée à chaque fois qu'une touche du clavier est relâchée et que la fe...
Definition: ez-draw++.cpp:3714
virtual void expose()
Cette fonction virtuelle est déclenchée lorsque votre fenêtre doit être redessinée (ne serait-ce que ...
Definition: ez-draw++.cpp:3708
virtual void configureNotify(int width, int height)
Cette fonction virtuelle est appelée à chaque fois que la taille de la fenêtre est modifiée (à la dem...
Definition: ez-draw++.cpp:3715
void setWidth(int width)
Règle la largeur de la fenêtre.
Definition: ez-draw++.cpp:3654
void drawLine(int x1, int y1, int x2, int y2) const
Dessine une ligne entre les coordonnées indiquées.
Definition: ez-draw++.cpp:3681
virtual void buttonRelease(int mouse_x, int mouse_y, int button)
Cette fonction virtuelle est déclenchée à chaque relâchement d'un bouton de la souris.
Definition: ez-draw++.cpp:3711
La classe EZWindow correspond à une fenêtre sous Windows ou sous UNIX.
Definition: ez-draw++.hpp:428
virtual ~EZWindow()
Destructeur virtuel de la classe.
Definition: ez-draw++.cpp:3646
int getWidth() const
Renvoie la largeur actuelle de la fenêtre.
Definition: ez-draw++.cpp:3660
int getHeight() const
Renvoie la hauteur actuelle de la fenêtre.
Definition: ez-draw++.cpp:3662
void clear(EZColor color) const
Efface la totalité de l'intérieur de la fenêtre avec un fond uni de la couleur indiquée.
Definition: ez-draw++.cpp:3677
const EZEvent & currentEvent() const
Accesseur pour l'événement en cours d'analyse sur la file des événements.
Definition: ez-draw++.hpp:594
virtual void close()
Cette fonction virtuelle est déclenchée lorsque l'utilisateur a réclamé la fermeture de cette fenêtre...
Definition: ez-draw++.cpp:3709
EZKeySym
Ce type énuméré rassemble la liste des identifiants permettant d'indiquer une touche de clavier.
Definition: ez-draw++.hpp:132
@ Meta_R
touche Meta (droite)
@ Escape
la touche Échap(pement)
@ X
X (majuscule)
@ s
s (minuscule)
@ Down
flèche vers le bas
@ twosuperior
exposant deux
@ a
a (minuscule)
@ asciitilde
Accent tilde (seul)
@ C
C (majuscule)
@ KP_Enter
touche Entrée du pavé numérique
@ Pause
la touche pause
@ Next
touche Page Suivante
@ KP_Add
touche « + » du pavé numérique
@ KP_Left
touche Gauche du pavé numérique
@ F6
touche de fonction « F6 »
@ KP_6
touche « 6 » du pavé numérique
@ Z
Z (majuscule)
@ h
h (minuscule)
@ Up
flèche vers le haut
@ _2
Chiffre 2.
@ KP_2
touche « 2 » du pavé numérique
@ l
l (minuscule)
@ Alt_L
touche Alt (gauche)
@ dollar
Symbole du dollar : « $ »
@ percent
Symbole du pourcent : « % »
@ j
j (minuscule)
@ bar
Barre verticale : « | »
@ F5
touche de fonction « F5 »
@ grave
Accent grave (seul) : « ` »
@ KP_Down
touche Gauche du pavé numérique
@ E
E (majuscule)
@ asciicircum
Accent circonflexe (seul) : « ^ »
@ KP_End
touche Fin du pavé numérique
@ KP_9
touche « 9 » du pavé numérique
@ numbersign
dièse : « # »
@ y
y (minuscule)
@ Caps_Lock
Verouillage Majusculte.
@ P
P (majuscule)
@ equal
Sumbole égual à
@ F7
touche de fonction « F7 »
@ F8
touche de fonction « F8 »
@ KP_Multiply
touche « * » du pavé numérique
@ Control_R
trouche Contrôle (droite)
@ c
c (minuscule)
@ r
r (minuscule)
@ F3
touche de fonction « F3 »
@ U
U (majuscule)
@ KP_Prior
touche Page Précédente du pavé numérique
@ asterisk
Astérisque.
@ V
V (majuscule)
@ question
Point d'interogation.
@ _7
Chiffre 7.
@ Y
Y (majuscule)
@ apostrophe
Apostrophe.
@ Tab
la tabulation « -->| »
@ _1
Chiffre 1.
@ S
S (majuscule)
@ KP_Subtract
touche « - » du pavé numérique
@ braceleft
Accolade ouvrante : « { »
@ W
W (majuscule)
@ quotedbl
Guillemet anglaise : « " »
@ KP_8
touche « 8 » du pavé numérique
@ F11
touche de fonction « F11 »
@ nobreakspace
Espace non-sécable.
@ M
M (majuscule)
@ Shift_L
Majusculte (gauche)
@ parenleft
Parenthèse ouvrante.
@ m
m (minuscule)
@ KP_7
touche « 7 » du pavé numérique
@ KP_Up
touche Haut du pavé numérique
@ KP_3
touche « 3 » du pavé numérique
@ q
q (minuscule)
@ semicolon
Symbole point virgule.
@ KP_Divide
touche « / » du pavé numérique
@ u
u (minuscule)
@ n
n (minuscule)
@ greater
Symbole suppérieur à
@ at
Arobase : « @ »
@ A
A (majuscule)
@ F
F (majuscule)
@ Num_Lock
Ver(rouillage) Num(érique)
@ d
d (minuscule)
@ p
p (minuscule)
@ KP_Equal
touche « = » du pavé numérique
@ i
i (minuscule)
@ End
Fin « >| »
@ F9
touche de fonction « F9 »
@ bracketleft
Crochet ouvrant : « [ »
@ Shift_R
Majusculte (droite)
@ k
k (minuscule)
@ Home
Début « |< »
@ N
N (majuscule)
@ f
f (minuscule)
@ Right
flèche vers la droite
@ b
b (minuscule)
@ Left
flèche vers la gauche
@ _9
Chiffre 9.
@ Return
la touche Entrée
@ KP_4
touche « 4 » du pavé numérique
@ B
B (majuscule)
@ x
x (minuscule)
@ v
v (minuscule)
@ parenright
Parenthèse fermante.
@ slash
Barre oblique : « / »
@ ampersand
Esperluette (« Et commercial ») : « & »
@ period
Point.
@ bracketright
Crochet fermant : « ] »
@ Insert
Inser(tion)
@ K
K (majuscule)
@ _0
Chiffre 0.
@ KP_Right
touche Droite du pavé numérique
@ F10
touche de fonction « F10 »
@ g
g (minuscule)
@ _4
Chiffre 4.
@ Menu
Menu.
@ comma
Virgule.
@ braceright
Accolade fermante : « } »
@ underscore
Carractère « souligné » : « _ »
@ T
T (majuscule)
@ exclam
Point d'exclamation.
@ Alt_R
touche Alt (droite)
@ KP_Next
touche Page Suivante du pavé numérique
@ H
H (majuscule)
@ KP_Separator
touche Separateur du pavé numérique
@ backslash
Barre oblique renversée : « \ »
@ KP_Begin
touche Début du pavé numérique
@ colon
Symbole deux points.
@ Meta_L
touche Meta (gauche)
@ L
L (majuscule)
@ plus
Signe plus.
@ o
o (minuscule)
@ minus
Signe moins.
@ Scroll_Lock
la touche Arrêt de défil(ement)
@ KP_5
touche « 5 » du pavé numérique
@ _8
Chiffre 8.
@ I
I (majuscule)
@ _6
Chiffre 6.
@ G
G (majuscule)
@ e
e (minuscule)
@ F1
touche de fonction « F1 »
@ R
R (majuscule)
@ t
t (minuscule)
@ less
Symbole inférieur à
@ Prior
touche Page Précédente
@ BackSpace
le retour arrière « <– »
@ F4
touche de fonction « F4 »
@ F12
touche de fonction « F12 »
@ Q
Q (majuscule)
@ w
w (minuscule)
@ O
O (majuscule)
@ Control_L
trouche Contrôle (gauche)
@ Delete
Suppr(ession)
@ KP_Home
touche Début du pavé numérique
@ D
D (majuscule)
@ _3
Chiffre 3.
@ z
z (minuscule)
@ _5
Chiffre 5.
@ KP_1
touche « 1 » du pavé numérique
@ F2
touche de fonction « F2 »
@ space
Espace.
@ J
J (majuscule)
@ KP_0
touche « 0 » du pavé numérique
std::ostream & operator<<(std::ostream &os, const EZKeySym &k)
Opérateur d'injection d'un EZKeySym sur un flux.
Definition: ez-draw++.cpp:3529
EZAlign
Le type énuméré EZAlign contient un ensemble de constantes permettant d'exprimer la façon ton un text...
Definition: ez-draw++.hpp:97
@ BLF
Bottom Left with background filled.
@ BR
Bottom Right.
@ BCF
Bottom Center with background filled.
@ MCF
Middle Center with background filled.
@ MC
Middle Center.
@ TCF
Top Center with background filled.
@ TRF
Top Right with background filled.
@ BL
Bottom Left.
@ MRF
Middle Right with background filled.
@ MLF
Middle Left with background filled.
@ TL
Top Left.
@ TLF
Top Left with background filled.
@ ML
Middle Left.
@ MR
Middle Right.
@ TR
Top Right.
@ BRF
Bottom Right with background filled.
@ BC
Bottom Center.
@ TC
Top Center.
unsigned char EZuint8
Type entier 8 bits non-signé permettant de représenter une valeur entre 0 et 255 inclus.
Definition: ez-draw++.hpp:25