#pragma once #include #include #include #include "../Klassen/KSGSTyp.h" #include #include namespace Framework { class Bild; class TextFeld; class Knopf; class Fenster; class BildZ; class Animation2DData; class Animation2D; class Schrift; class Text; class TextFeld; class TextRenderer; } namespace KSGScript { struct KSGSVariableDef { int typId; int id; int sichtbar; // 0 = global, 1 = global in klasse, 2 = lokal in klasse, 3 = lokal in Funktion Framework::Text wert; }; /* * Vordefinition der KSGS Variable Klasse. * Virtuelle Vordefinition der Klasse KSGSKlasseInstanz aus ../Befehl/KSGSKlasse.h */ class KSGSVariable : public virtual Framework::ReferenceCounter { public: // nicht constant virtual KSGSVariable* startFunktion( int id, bool zugriff, Framework::RCArray< KSGSVariable >* parameter ) = 0; virtual KSGSVariable* doOperator( int id, KSGSVariable* rechts ) = 0; virtual void setVariable( int id, KSGSVariable* var ) = 0; // constant virtual KSGSVariable* getVariable( int id, bool zugriff ) const = 0; virtual KSGSVariable* umwandelnIn( int typ ) const = 0; virtual int getTyp() const = 0; // verarbeiten virtual bool getBool() const = 0; virtual int getInt() const = 0; virtual double getDouble() const = 0; virtual Framework::Text* getText() const = 0; virtual Framework::Bild* getBild() const = 0; virtual Framework::MausEreignis getMausEreignis() const = 0; virtual Framework::TastaturEreignis getTastaturEreignis() const = 0; virtual Framework::TextFeld* getTextFeld() const = 0; virtual Framework::Knopf* getKnopf() const = 0; virtual Framework::Fenster* getFenster() const = 0; virtual Framework::BildZ* getBildZ() const = 0; virtual Framework::Animation2DData* getAnimation2DData() const = 0; virtual Framework::Animation2D* getAnimation2D() const = 0; virtual Framework::Zeichnung* getZeichnung() const = 0; virtual Framework::RCArray< KSGSVariable >* getArray() const = 0; }; class KSGScriptProcessor : public virtual Framework::ReferenceCounter { public: virtual void logNachricht( char* n ) = 0; virtual Framework::Text* convertPfad( char* pf ) = 0; virtual void setVariable( int id, KSGSVariable* var ) = 0; virtual KSGSVariable* startFunktion( int id, Framework::RCArray< KSGSVariable >* parameter ) = 0; virtual KSGSVariable* erstellKlassenInstanz( int id ) = 0; virtual KSGSVariable* getVariable( int id ) const = 0; virtual int getScriptId() const = 0; virtual Framework::Bildschirm* zBildschirm() const = 0; virtual Framework::Schrift* zSchrift() const = 0; virtual int getFunktionId( const char* name ) const = 0; virtual bool istBeendet( int scrId ) const = 0; virtual KSGSVariable* callback( Framework::RCArray< KSGSVariable >* parameter ) const = 0; }; /* * Vordefinierte KSGS Expression Evaluator Klasse */ class KSGSExpressionEvaluator : public KSGScriptProcessor { public: virtual KSGSVariable* createParameter( Framework::Text name, int type ) = 0; virtual KSGSVariable* getParameter( Framework::Text name ) = 0; virtual void setExpression( Framework::Text expression ) = 0; virtual KSGSVariable* evaluate() = 0; }; /* * Vordefinition der KSGS Zeichnung Klasse. * Virtuelle Vordefinition der Klasse KSGScriptObj aus ../Main/KSGScriptObj.h */ class KSGScriptObj : virtual public Framework::Zeichnung, public KSGScriptProcessor { public: // nicht constant virtual void lock() = 0; virtual void unlock() = 0; virtual void setScriptDatei( const char* pfad ) = 0; virtual void setScriptDatei( Framework::Text* pfad ) = 0; virtual bool neuLaden() = 0; virtual void reset() = 0; virtual void setCallbackParam( void* p ) = 0; virtual void setCallbackFunktion( void(*funktion)(void*, Framework::RCArray< KSGSVariable >*, KSGSVariable**) ) = 0; virtual void setSchriftZ( Framework::Schrift* s ) = 0; virtual void setBildschirmZ( Framework::Bildschirm* s ) = 0; virtual void doPublicMausEreignis( Framework::MausEreignis& me ) = 0; virtual void doTastaturEreignis( Framework::TastaturEreignis& te ) = 0; virtual bool tick( double zeit ) = 0; virtual void render( Framework::Bild& zRObj ) = 0; virtual void setLog( Framework::TextFeld* log ) = 0; // constant virtual Framework::Text* getScriptDateiPfad() const = 0; virtual Framework::Text* zScriptDateiPfad() const = 0; virtual Framework::Schrift* getSchrift() const = 0; virtual Framework::Bildschirm* getBildschirm() const = 0;; }; // Ein Textfeld, das eine Entwicklungsumgebung für die KSG-Script Sprache darstellt class KSGScriptEditor : virtual public Framework::ZeichnungHintergrund { public: enum class ColorType { KEYWORD, TYPENAME, PARAMETER_VARIABLE, INSTANCE_VARIABLE, STRING, KOMMENTAR, NORMAL_TEXT, ERROR_UNDERLINE, COLOR_ANZAHL // Dies wird nur benötigt um die Anzahl der verschiedenen Farben zu zählen }; // Setzt die zu verwendende Schrift // s: Die Schrift virtual void setSchriftZ( Framework::Schrift* s ) = 0; // Setzt den zu verwendenden Text Renderer // t: Der Text Renderer virtual void setTextRendererZ( Framework::TextRenderer* t ) = 0; // Setzt den Text (das Script was verändert werden soll) // txt: Der Text virtual void setText( Framework::Text* txt ) = 0; // Gibt den aktuellen Text zurück virtual Framework::Text* zText() const = 0; // Schaltet die Fehlererkennung ein oder aus // on: 1, um die Fehlererkennung einzuschalten, 0 um sie auszuschalten virtual void setErrorDetection( bool on = 1 ) = 0; // Schaltet die Warnungserkennung ein oder aus // on: 1, um die Warnungserkennung einzuschalten, 0 um sie auszuschalten virtual void setWarningDetection( bool on = 1 ) = 0; // gibt 1 zurück, wenn die Fehlererkennung eingeschaltet ist virtual bool getErrorDetection() const = 0; // gibt 1 zurück, wenn die Warnungserkennung eingeschaltet ist virtual bool getWarningDetection() const = 0; // Setzt die Farbe eines Bestimmten Codetyps // color: Die Farbe in 0xAARRGGBB Format // cType: Der Codetyp, der die Farbe bekommen soll virtual void setTextColor( int color, ColorType cType ) = 0; }; // DLL Einstieg typedef KSGScriptEditor* (*KSGSGetEditor)(); typedef KSGScriptObj* (*KSGSGetZeichnung)(); typedef KSGSVariable* (*KSGSGetVariable)(KSGScriptObj* zObj, KSGSVariableDef* def); typedef KSGSExpressionEvaluator* (*KSGSGetExpressionEvaluator)(); typedef void (*KSGSSetBild)(KSGSVariable* zBv, Framework::Bild* b); } #define KSGS_START_FUNKTION "GetNewKSGScriptObj" #define KSGS_EDITOR_FUNKTION "GetNewKSGEditorObj" #define KSGS_VARIABLE_FUNKTION "GetNewKSGSVariable" #define KSGS_SET_BILD_FUNKTION "SetKSGSBildVariable"