UIMLView.h 6.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140
  1. #pragma once
  2. #include "Zeichnung.h"
  3. #include "Trie.h"
  4. #include "Array.h"
  5. #include "UIInitialization.h"
  6. /*
  7. KSG UIML Standart
  8. possible XML elements:
  9. uimlview (the root element of uiml),
  10. class (only as direct child of uimlview),
  11. textfield,
  12. button,
  13. text,
  14. textarea,
  15. table (allowed child elements: tr),
  16. tr (allowed child elements: textfield, button, table, text, textarea, frame),
  17. frame (allowed child elements: textfield, button, table, text, textarea, frame).
  18. possible global XML attributes:
  19. id (string should be unique),
  20. x (integer, optional % char at end),
  21. y (integer, optional % char at end),
  22. width (integer, optional % char at end),
  23. height (integer, optional % char at end),
  24. margin (integer, optional % char at end),
  25. margin-left (integer, optional % char at end),
  26. margin-top (integer, optional % char at end),
  27. margin-right (integer, optional % char at end),
  28. margin-bottom (integer, optional % char at end),
  29. align-left (string (id values of other elements or keywords: start, end)),
  30. align-top (string (id values of other elements or keywords: start, end)),
  31. align-bottom ((string (id values of other elements or keywords: start, end)),
  32. align-right (string (id values of other elements or keywords: start, end)),
  33. tooltip (string),
  34. style (hex __int64),
  35. class (string (id of class element))
  36. attribute die sich gegenseitig ausschließen:
  37. align-left / align-right
  38. align-top / align-bottom
  39. spezific attributes:
  40. font-size (textfield, text, textarea, button)
  41. text-align (textfield, text, textarea)
  42. text-align-horizontal (textfield, text, textarea)
  43. text-align-vertical (textfield, text, textarea)
  44. example:
  45. <view>
  46. <textfield id="element_at_top_left" align-left="start", align-top="start", margin-left="5", margin-top="5" width="90%" height="30"/>
  47. <table id="element_below_textfield" align-left="start", aliign-top="element_at_top_left", margin-left="5", margin-top="5" width="90%" height="300">
  48. <tr>
  49. <button id="a_button_in_a_table"/>
  50. <textfield id="a_textfield_in_a_table"/>
  51. </tr>
  52. </table>
  53. </view>
  54. */
  55. namespace Framework
  56. {
  57. class Text;
  58. class ObjTabelle;
  59. class Schrift;
  60. class Bildschirm;
  61. namespace XML
  62. {
  63. class Element;
  64. }
  65. class UIMLView : public ZeichnungHintergrund
  66. {
  67. private:
  68. UIInit init;
  69. Trie< Zeichnung > *members;
  70. XML::Element *dom;
  71. int nextId;
  72. void parseTable( Iterator<XML::Element*> childs, ObjTabelle *table );
  73. void parseFrame( Iterator<XML::Element*> childs, Fenster *frame );
  74. Zeichnung *parseElement( XML::Element *e );
  75. void layout( XML::Element *e, int pWidth, int pHeight );
  76. public:
  77. // Erstellt eine UIML View
  78. __declspec( dllexport ) UIMLView();
  79. // Erstellt eine UIML View zu einem UIML Text
  80. // uiml: Ein xml element gemät des KSG UIML standarts
  81. // screen: Ein zeiger für den Belschirm auf dem die tooltips angezeigt werden sollen
  82. // schrift: Die schrift mit der der Text gezeichnet werden soll
  83. __declspec( dllexport ) UIMLView( XML::Element *uiml, UIInit &init );
  84. // Erstellt eine UIML View zu einem UIML Text
  85. // uiml: Ein xml text gemät des KSG UIML standarts
  86. // screen: Ein zeiger für den Belschirm auf dem die tooltips angezeigt werden sollen
  87. // schrift: Die schrift mit der der Text gezeichnet werden soll
  88. __declspec( dllexport ) UIMLView( Text uiml, UIInit &init );
  89. __declspec( dllexport ) ~UIMLView();
  90. // setzt den inhalt der view
  91. // uiml: Ein xml element gemät des KSG UIML standarts
  92. __declspec( dllexport ) void setUIML( XML::Element *uiml );
  93. // setzt den inhalt der view
  94. // uiml: Ein xml text gemät des KSG UIML standarts
  95. __declspec( dllexport ) void setUIML( Text uiml );
  96. // aktualisiert größe und position aller Zeichnungen gemäß den spezifikationen in UIML
  97. __declspec( dllexport ) void layout();
  98. // fügt ein element hinzu
  99. // uiml: Ein xml text gemät des KSG UIML standarts, welcher das neue Objekt darstellt
  100. // return: id des neuen Elements
  101. __declspec( dllexport ) Text addMember( Text uiml );
  102. // fügt ein element zu einem Elternelement hinzu (funktioniert momentan nur mit frame Objekten)
  103. // uiml: Ein xml text gemät des KSG UIML standarts, welcher das neue Objekt darstellt
  104. // return: id des neuen Elements
  105. __declspec( dllexport ) Text addMember( Text uiml, Text parentId );
  106. // entfernt ein element
  107. // id: id des Elements
  108. __declspec( dllexport ) void removeMember( Text id );
  109. // Gibt eine zeichnung zurück, welche in uiml eine bestimmte id hat
  110. // id: die id der Zeichnung
  111. __declspec( dllexport ) Zeichnung *zZeichnung( Text id );
  112. // Verarbeitet ein Maus Ereignis. Wird vom Framework automatisch aufgerufen.
  113. // me: Das Ereignis
  114. __declspec( dllexport ) virtual void doMausEreignis( MausEreignis &me );
  115. // Verarbeitet ein Tastatur Ereignis. Wird vom Framework automatisch aufgerufen
  116. // te: Das Ereignis
  117. __declspec( dllexport ) virtual void doTastaturEreignis( TastaturEreignis &te );
  118. // Updated den Zeichenhintergrund
  119. // tickVal: Die vergangene Zeit in Sekunden, die seit dem Letzten Aufruf dieser Funktion verstrichen ist
  120. // return: 1, wenn das Bild neu gezeichnet werden muss. 0 sonnst
  121. __declspec( dllexport ) bool tick( double tickVal ) override;
  122. // Zeichnet den Hintergrund eines Zeichnunges nach rObj
  123. __declspec( dllexport ) void render( Bild &rObj ) override;
  124. // Gibt den Dom Tree ohne erhöhten reference counter zurück
  125. // Änderungen am Dom Tree sollten vermieden werden (nur änderungen von attributen einzelner elemente sind erlaubt)
  126. __declspec( dllexport ) XML::Element *zDom() const;
  127. // Gibt den Dom Tree zurück
  128. // Änderungen am Dom Tree sollten vermieden werden (nur änderungen von attributen einzelner elemente sind erlaubt)
  129. __declspec( dllexport ) XML::Element *getDom() const;
  130. };
  131. }