#pragma once #include "Zeichnung.h" #include "Trie.h" #include "Array.h" #include "UIInitialization.h" /* KSG UIML Standart possible XML elements: uimlview (the root element of uiml), class (only as direct child of uimlview), textfield, button, text, textarea, table (allowed child elements: tr), tr (allowed child elements: textfield, button, table, text, textarea, frame), frame (allowed child elements: textfield, button, table, text, textarea, frame). possible global XML attributes: id (string should be unique), x (integer, optional % char at end), y (integer, optional % char at end), width (integer, optional % char at end), height (integer, optional % char at end), margin (integer, optional % char at end), margin-left (integer, optional % char at end), margin-top (integer, optional % char at end), margin-right (integer, optional % char at end), margin-bottom (integer, optional % char at end), align-left (string (id values of other elements or keywords: start, end)), align-top (string (id values of other elements or keywords: start, end)), align-bottom ((string (id values of other elements or keywords: start, end)), align-right (string (id values of other elements or keywords: start, end)), tooltip (string), style (hex __int64), class (string (id of class element)) attribute die sich gegenseitig ausschlie�en: align-left / align-right align-top / align-bottom spezific attributes: font-size (textfield, text, textarea, button) text-align (textfield, text, textarea) text-align-horizontal (textfield, text, textarea) text-align-vertical (textfield, text, textarea) example: <view> <textfield id="element_at_top_left" align-left="start", align-top="start", margin-left="5", margin-top="5" width="90%" height="30"/> <table id="element_below_textfield" align-left="start", aliign-top="element_at_top_left", margin-left="5", margin-top="5" width="90%" height="300"> <tr> <button id="a_button_in_a_table"/> <textfield id="a_textfield_in_a_table"/> </tr> </table> </view> */ namespace Framework { class Text; class ObjTabelle; class Schrift; class Bildschirm; namespace XML { class Element; } class UIMLView : public ZeichnungHintergrund { private: UIInit init; Trie< Zeichnung > *members; XML::Element *dom; int nextId; void parseTable( Iterator<XML::Element*> childs, ObjTabelle *table ); void parseFrame( Iterator<XML::Element*> childs, Fenster *frame ); Zeichnung *parseElement( XML::Element *e ); void layout( XML::Element *e, int pWidth, int pHeight ); public: // Erstellt eine UIML View __declspec( dllexport ) UIMLView(); // Erstellt eine UIML View zu einem UIML Text // uiml: Ein xml element gem�t des KSG UIML standarts // screen: Ein zeiger f�r den Belschirm auf dem die tooltips angezeigt werden sollen // schrift: Die schrift mit der der Text gezeichnet werden soll __declspec( dllexport ) UIMLView( XML::Element *uiml, UIInit &init ); // Erstellt eine UIML View zu einem UIML Text // uiml: Ein xml text gem�t des KSG UIML standarts // screen: Ein zeiger f�r den Belschirm auf dem die tooltips angezeigt werden sollen // schrift: Die schrift mit der der Text gezeichnet werden soll __declspec( dllexport ) UIMLView( Text uiml, UIInit &init ); __declspec( dllexport ) ~UIMLView(); // setzt den inhalt der view // uiml: Ein xml element gem�t des KSG UIML standarts __declspec( dllexport ) void setUIML( XML::Element *uiml ); // setzt den inhalt der view // uiml: Ein xml text gem�t des KSG UIML standarts __declspec( dllexport ) void setUIML( Text uiml ); // aktualisiert gr��e und position aller Zeichnungen gem�� den spezifikationen in UIML __declspec( dllexport ) void layout(); // f�gt ein element hinzu // uiml: Ein xml text gem�t des KSG UIML standarts, welcher das neue Objekt darstellt // return: id des neuen Elements __declspec( dllexport ) Text addMember( Text uiml ); // f�gt ein element zu einem Elternelement hinzu (funktioniert momentan nur mit frame Objekten) // uiml: Ein xml text gem�t des KSG UIML standarts, welcher das neue Objekt darstellt // return: id des neuen Elements __declspec( dllexport ) Text addMember( Text uiml, Text parentId ); // entfernt ein element // id: id des Elements __declspec( dllexport ) void removeMember( Text id ); // Gibt eine zeichnung zur�ck, welche in uiml eine bestimmte id hat // id: die id der Zeichnung __declspec( dllexport ) Zeichnung *zZeichnung( Text id ); // Verarbeitet ein Maus Ereignis. Wird vom Framework automatisch aufgerufen. // me: Das Ereignis __declspec( dllexport ) virtual void doMausEreignis( MausEreignis &me ); // Verarbeitet ein Tastatur Ereignis. Wird vom Framework automatisch aufgerufen // te: Das Ereignis __declspec( dllexport ) virtual void doTastaturEreignis( TastaturEreignis &te ); // Updated den Zeichenhintergrund // tickVal: Die vergangene Zeit in Sekunden, die seit dem Letzten Aufruf dieser Funktion verstrichen ist // return: 1, wenn das Bild neu gezeichnet werden muss. 0 sonnst __declspec( dllexport ) bool tick( double tickVal ) override; // Zeichnet den Hintergrund eines Zeichnunges nach rObj __declspec( dllexport ) void render( Bild &rObj ) override; // Gibt den Dom Tree ohne erh�hten reference counter zur�ck // �nderungen am Dom Tree sollten vermieden werden (nur �nderungen von attributen einzelner elemente sind erlaubt) __declspec( dllexport ) XML::Element *zDom() const; // Gibt den Dom Tree zur�ck // �nderungen am Dom Tree sollten vermieden werden (nur �nderungen von attributen einzelner elemente sind erlaubt) __declspec( dllexport ) XML::Element *getDom() const; }; }