#include #include #include #include #include #include #include #include #include #include #include #include #include "Initialisierung.h" #include #include #include #include #include #include #include #include #include using namespace Framework; struct Variablen { // Normale Schrift Schrift *nSchrift; // Schrift zum Bearbeiten laden TextFeld *sPfad; Knopf *sLaden; Schrift *schrift; LTDSDatei *sDatei; // Auswählen der zu Bearbeitenden Zeichen und Größen AuswahlListe *größe; AuswahlListe *zeichen; // Löschen Knopf *gLöschen; Knopf *zLöschen; // Hinzufügen Knopf *neuGröße; Knopf *neuZeichen; // Bearbeiten Knopf *editZeichen; // Schrift Vorschau TextFeld *vorschau; TextFeld *vFgT; TextFeld *vFg; TextFeld *vBgT; TextFeld *vBg; Knopf *vBgB; TextFeld *vGrößeT; TextFeld *vGröße; AuswahlBox *vStyle; // Neue Größe erstellen Fenster *neuGrößeF; TextFeld *nGGrößeT; TextFeld *nGGröße; Knopf *nGOk; // Neues Zeichen erstellen Fenster *neuZeichenF; TextFeld *nZZeichenT; TextFeld *nZZeichen; TextFeld *nZVorschau; TextFeld *nZBreiteT; TextFeld *nZBreite; TextFeld *nZHöheT; TextFeld *nZHöhe; Knopf *nZOk; // Zeichen Editor Fenster *editF; TextFeld *editFgT; TextFeld *editFg; TextFeld *editBgT; TextFeld *editBg; TextFeld *editAlphaT; TextFeld *editAlpha; BildZ *editObj; Knopf *editSpeichern; }; void beenden( void *p, void *obj ) { StopNachrichtenSchleife( ( (WFenster*)obj )->getFensterHandle() ); } void SetErlaubt( bool e, Variablen *var ) { if( !e ) { var->sLaden->removeStyle( Knopf::Style::Erlaubt ); var->größe->removeStyle( AuswahlListe::Style::Erlaubt ); var->zeichen->removeStyle( AuswahlListe::Style::Erlaubt ); var->neuGröße->removeStyle( Knopf::Style::Erlaubt ); var->gLöschen->removeStyle( Knopf::Style::Erlaubt ); var->editZeichen->removeStyle( Knopf::Style::Erlaubt ); var->zLöschen->removeStyle( Knopf::Style::Erlaubt ); var->neuZeichen->removeStyle( Knopf::Style::Erlaubt ); } else { var->sLaden->addStyle( Knopf::Style::Erlaubt ); var->größe->addStyle( AuswahlListe::Style::Erlaubt ); var->zeichen->setStyle( AuswahlListe::Style::Erlaubt, var->größe->getAuswahl() >= 0 ); var->neuGröße->addStyle( AuswahlListe::Style::Erlaubt ); var->gLöschen->setStyle( Knopf::Style::Erlaubt, var->größe->getAuswahl() >= 0 ); var->editZeichen->setStyle( Knopf::Style::Erlaubt, var->zeichen->getAuswahl() >= 0 ); var->zLöschen->setStyle( Knopf::Style::Erlaubt, var->zeichen->getAuswahl() >= 0 ); var->neuZeichen->setStyle( Knopf::Style::Erlaubt, var->größe->getAuswahl() >= 0 ); } var->vorschau->addStyle( TextFeld::Style::Erlaubt ); } void SchriftLaden( Variablen *var ) { if( var->schrift ) var->schrift->release(); var->schrift = var->sDatei->ladeSchrift(); if( !var->schrift ) var->schrift = new Schrift(); var->vorschau->setSchriftZ( var->schrift->getThis() ); int anz = var->zeichen->getEintragAnzahl(); for( int i = 0; i < anz; i++ ) var->zeichen->removeEintrag( 0 ); var->zeichen->deSelect(); anz = var->größe->getEintragAnzahl(); for( int i = 0; i < anz; i++ ) var->größe->removeEintrag( 0 ); var->größe->deSelect(); anz = var->schrift->getAlphabetAnzahl(); for( int i = 0; i < anz; i++ ) { Text n = ""; n += var->schrift->zAlphabetI( i )->getSchriftSize(); var->größe->addEintrag( n ); var->größe->zEintrag( i )->setSchriftZ( var->nSchrift->getThis() ); var->größe->zEintrag( i )->setSchriftFarbe( 0xFFFFFFFF ); var->größe->zEintrag( i )->setSize( 0, 20 ); } SetErlaubt( 1, var ); } bool SLadenME( void *p, void *obj, MausEreignis me ) { if( me.id == ME_RLinks ) { Variablen *var = (Variablen*)p; if( !DateiExistiert( var->sPfad->getText() ) ) DateiPfadErstellen( var->sPfad->getText() ); var->sDatei->setPfad( var->sPfad->getText() ); var->sDatei->leseDaten(); SchriftLaden( var ); } return 1; } bool GrößeME( void *p, void *obj, MausEreignis me ) { if( me.id == ME_RLinks ) { Variablen *var = (Variablen*)p; int anz = var->zeichen->getEintragAnzahl(); for( int i = 0; i < anz; i++ ) var->zeichen->removeEintrag( 0 ); var->zeichen->deSelect(); var->editZeichen->removeStyle( Knopf::Style::Erlaubt ); var->zLöschen->removeStyle( Knopf::Style::Erlaubt ); if( var->größe->getKlickEintrag( me.my ) < 0 ) { var->zeichen->removeStyle( AuswahlListe::Style::Erlaubt ); var->neuZeichen->removeStyle( Knopf::Style::Erlaubt ); var->gLöschen->removeStyle( Knopf::Style::Erlaubt ); return 1; } Alphabet *tmp = var->schrift->zAlphabet( (int)*var->größe->zEintrag( var->größe->getKlickEintrag( me.my ) )->zText() ); for( int c = 1; c < 256; c++ ) { if( !tmp->hatBuchstabe( (unsigned char)c ) ) continue; Text n = ""; n.append( (char)c ); n += " ("; n += (int)c; n += ")"; var->zeichen->addEintrag( n ); var->zeichen->zEintrag( var->zeichen->getEintragAnzahl() - 1 )->setSchriftZ( var->nSchrift->getThis() ); var->zeichen->zEintrag( var->zeichen->getEintragAnzahl() - 1 )->setSchriftFarbe( 0xFFFFFFFF ); var->zeichen->zEintrag( var->zeichen->getEintragAnzahl() - 1 )->setSize( 0, 20 ); } var->zeichen->addStyle( AuswahlListe::Style::Erlaubt ); var->neuZeichen->addStyle( Knopf::Style::Erlaubt ); var->gLöschen->addStyle( Knopf::Style::Erlaubt ); } return 1; } bool ZeichenME( void *p, void *obj, MausEreignis me ) { if( me.id == ME_RLinks ) { Variablen *var = (Variablen*)p; if( var->zeichen->getKlickEintrag( me.my ) < 0 ) { var->editZeichen->removeStyle( Knopf::Style::Erlaubt ); var->zLöschen->removeStyle( Knopf::Style::Erlaubt ); } else { var->editZeichen->addStyle( Knopf::Style::Erlaubt ); var->zLöschen->addStyle( Knopf::Style::Erlaubt ); } } return 1; } bool GLöschenME( void *p, void *obj, MausEreignis me ) { if( me.id == ME_RLinks ) { Variablen *var = (Variablen*)p; if( var->größe->getAuswahl() < 0 ) return 1; var->sDatei->löscheSchrifrGröße( (int)*var->größe->zEintrag( var->größe->getAuswahl() )->zText() ); SchriftLaden( var ); } return 1; } bool NeuGrößeME( void *p, void *obj, MausEreignis me ) { if( me.id == ME_RLinks ) { Variablen *var = (Variablen*)p; var->neuGrößeF->addStyle( Fenster::Style::Sichtbar ); SetErlaubt( 0, var ); } return 1; } bool NeuGrößeFME( void *p, void *obj, MausEreignis me ) { if( me.id == ME_RLinks ) { Variablen *var = (Variablen*)p; var->neuGrößeF->removeStyle( Fenster::Style::Sichtbar ); SetErlaubt( 1, var ); } return 1; } bool NGOkME( void *p, void *obj, MausEreignis me ) { if( me.id == ME_RLinks ) { Variablen *var = (Variablen*)p; if( (int)*var->nGGröße->zText() <= 0 ) return 1; Alphabet *a = new Alphabet(); a->setSchriftSize( (int)*var->nGGröße->zText() ); var->sDatei->addSchriftgröße( a ); var->neuGrößeF->removeStyle( Fenster::Style::Sichtbar ); SchriftLaden( var ); } return 1; } bool VFgTE( void *p, void *obj, TastaturEreignis te ) { bool ret = te.taste == T_Enter; Variablen *var = (Variablen*)p; if( te.taste >= '0' && te.taste <= '9' && var->vFg->zText()->getLength() < 6 ) ret = 1; if( te.taste >= 'A' && te.taste <= 'F' && var->vFg->zText()->getLength() < 6 ) ret = 1; if( te.taste >= 'a' && te.taste <= 'f' && var->vFg->zText()->getLength() < 6 ) ret = 1; if( te.taste == T_Links || te.taste == T_Rechts || te.taste == T_BackSpace || te.taste == T_Entf ) ret = 1; if( !ret ) return 0; Text fgT = "0xFF"; fgT += var->vFg->zText()->getText(); for( int i = fgT.getLength(); i < 10; i++ ) fgT += "0"; var->vorschau->setSchriftFarbe( 0xFF000000 | (int)fgT ); return ret; } bool VBgTE( void *p, void *obj, TastaturEreignis te ) { bool ret = te.taste == T_Enter; Variablen *var = (Variablen*)p; if( te.taste >= '0' && te.taste <= '9' && var->vBg->zText()->getLength() < 6 ) ret = 1; if( te.taste >= 'A' && te.taste <= 'F' && var->vBg->zText()->getLength() < 6 ) ret = 1; if( te.taste >= 'a' && te.taste <= 'f' && var->vBg->zText()->getLength() < 6 ) ret = 1; if( te.taste == T_Links || te.taste == T_Rechts || te.taste == T_BackSpace || te.taste == T_Entf ) ret = 1; if( !ret ) return 0; Text bgT = "0xFF"; bgT += var->vBg->zText()->getText(); for( int i = bgT.getLength(); i < 10; i++ ) bgT += "0"; var->vorschau->setHintergrundFarbe( 0xFF000000 | (int)bgT ); return ret; } bool VBgBME( void *p, void *obj, MausEreignis me ) { if( me.id == ME_RLinks ) { if( ( (Variablen *)p )->vorschau->hatStyle( TextFeld::Style::HBild ) ) ( (Variablen *)p )->vorschau->removeStyle( TextFeld::Style::HBild ); else { ( (Variablen *)p )->vorschau->addStyle( TextFeld::Style::HBild ); new AsynchronCall( [ p ]() { DateiDialog *dialog = new DateiDialog(); dialog->addDateiTyp( "Bild Datei", "*.ltdb" ); Text *path = dialog->anzeigen( 1 ); if( path ) { LTDBDatei dat; dat.setDatei( path ); dat.leseDaten( 0 ); if( dat.getBildAnzahl() ) { MultiplChoiceDialog *choice = new MultiplChoiceDialog(); for( auto i = dat.zBildListe()->getIterator(); i; i++ ) { choice->addChoice( i->getText(), i._ ); } Text *zBild = (Text*)choice->anzeigen( ( (Variablen *)p )->nSchrift ); if( zBild ) { Bild *b = dat.laden( 0, zBild->getThis() ); ( (Variablen *)p )->vorschau->setHintergrundBildZ( b ); } choice->release(); } } dialog->release(); } ); } } return 1; } bool VGrößeTE( void *p, void *obj, TastaturEreignis te ) { bool ret = te.taste == T_Enter; Variablen *var = (Variablen*)p; if( te.taste >= '0' && te.taste <= '9' && var->vGröße->zText()->getLength() < 3 ) ret = 1; if( te.taste == T_Links || te.taste == T_Rechts || te.taste == T_BackSpace || te.taste == T_Entf ) ret = 1; if( !ret ) return 0; var->vorschau->setSchriftSize( (unsigned char)(int)*var->vGröße->zText() ); var->vorschau->updateVScroll(); return ret; } bool NeuZeichenME( void *p, void *obj, MausEreignis me ) { if( me.id == ME_RLinks ) { Variablen *var = (Variablen*)p; if( var->größe->getAuswahl() < 0 ) return 1; var->neuZeichenF->addStyle( Fenster::Style::Sichtbar ); SetErlaubt( 0, var ); } return 1; } bool NeuZeichenFME( void *p, void *obj, MausEreignis me ) { if( me.id == ME_RLinks ) { Variablen *var = (Variablen*)p; var->neuZeichenF->removeStyle( Fenster::Style::Sichtbar ); SetErlaubt( 1, var ); } return 1; } bool NZZeichenTE( void *p, void *obj, TastaturEreignis te ) { bool ret = te.taste == T_Enter; Variablen *var = (Variablen*)p; if( te.taste >= '0' && te.taste <= '9' && var->nZZeichen->zText()->getLength() < 3 ) ret = 1; if( te.taste == T_Links || te.taste == T_Rechts || te.taste == T_BackSpace || te.taste == T_Entf ) ret = 1; if( !ret ) return 0; Text v; v.append( (char)(int)*var->nZZeichen->zText() ); var->nZVorschau->setText( v ); return 1; } bool NZOkME( void *p, void *obj, MausEreignis me ) { if( me.id == ME_RLinks ) { Variablen *var = (Variablen*)p; if( (int)*var->nZBreite->zText() <= 0 || (int)*var->nZHöhe->zText() <= 0 || (int)*var->nZZeichen->zText() <= 0 || (int)*var->nZZeichen->zText() > 255 ) return 1; Buchstabe *b = new Buchstabe(); b->NeuBuchstabe( Punkt( (int)*var->nZBreite->zText(), (int)*var->nZHöhe->zText() ) ); var->sDatei->addBuchstabe( *var->größe->zEintrag( var->größe->getAuswahl() )->zText(), b, (unsigned char)(int)*var->nZZeichen->zText() ); var->neuZeichenF->removeStyle( Fenster::Style::Sichtbar ); int ausw = var->größe->getAuswahl(); SchriftLaden( var ); MausEreignis me; me.id = ME_RLinks; me.mx = 20; me.my = 50 + ausw * 20 - var->größe->getVertikalScrollPos(); me.verarbeitet = 0; var->größe->doMausEreignis( me ); } return 1; } bool ZLöschenME( void *p, void *obj, MausEreignis me ) { if( me.id == ME_RLinks ) { Variablen *var = (Variablen*)p; if( var->größe->getAuswahl() < 0 || var->zeichen->getAuswahl() < 0 ) return 1; var->sDatei->löscheBuchstabe( *var->größe->zEintrag( var->größe->getAuswahl() )->zText(), (unsigned char)var->zeichen->zEintrag( var->zeichen->getAuswahl() )->zText()->getText()[ 0 ] ); int ausw = var->größe->getAuswahl(); SchriftLaden( var ); MausEreignis me; me.id = ME_RLinks; me.mx = 20; me.my = 50 + ausw * 20 - var->größe->getVertikalScrollPos(); me.verarbeitet = 0; var->größe->doMausEreignis( me ); } return 1; } bool EditZeichenME( void *p, void *obj, MausEreignis me ) { if( me.id == ME_RLinks ) { Variablen *var = (Variablen*)p; if( var->größe->getAuswahl() < 0 || var->zeichen->getAuswahl() < 0 ) return 1; unsigned char zeichen = (unsigned char)var->zeichen->zEintrag( var->zeichen->getAuswahl() )->zText()->getText()[ 0 ]; int größe = *var->größe->zEintrag( var->größe->getAuswahl() )->zText(); Alphabet *a = var->schrift->zAlphabet( größe ); if( !a || !a->hatBuchstabe( zeichen ) ) return 1; Bild *editB = new Bild(); editB->neuBild( a->zBuchstabe( zeichen )->getSize().x * 10, a->zBuchstabe( zeichen )->getSize().y * 10, 0 ); var->editObj->setSize( 440 < editB->getBreite() + 2 ? 440 : editB->getBreite() + 2, 390 < editB->getHeight() + 2 ? 390 : editB->getHeight() + 2 ); var->editObj->setStyle( BildZ::Style::HScroll, 440 < editB->getBreite() + 2 ); var->editObj->setStyle( BildZ::Style::VScroll, 390 < editB->getHeight() + 2 ); var->editObj->setBildZ( editB ); var->editF->addStyle( Fenster::Style::Sichtbar ); SetErlaubt( 0, var ); } return 1; } bool EditFME( void *p, void *obj, MausEreignis me ) { if( me.id == ME_RLinks ) { Variablen *var = (Variablen*)p; var->editF->removeStyle( Fenster::Style::Sichtbar ); int gAusw = var->größe->getAuswahl(); int zAusw = var->zeichen->getAuswahl(); SchriftLaden( var ); MausEreignis me; me.id = ME_RLinks; me.mx = 20; me.my = 50 + gAusw * 20 - var->größe->getVertikalScrollPos(); me.verarbeitet = 0; var->größe->doMausEreignis( me ); me.id = ME_RLinks; me.mx = 140; me.my = 50 + zAusw * 20 - var->zeichen->getVertikalScrollPos(); me.verarbeitet = 0; var->zeichen->doMausEreignis( me ); } return 1; } bool EditObjME( void *p, void *obj, MausEreignis me ) { if( me.id == ME_PLinks ) { Variablen *var = (Variablen*)p; if( var->editObj->hatStyle( BildZ::Style::VScroll ) && me.mx >= 425 ) return 1; if( var->editObj->hatStyle( BildZ::Style::HScroll ) && me.my >= 375 ) return 1; Text aT = "0x"; aT += var->editAlpha->zText()->getText(); for( int i = aT.getLength(); i < 4; i++ ) aT += "0"; int a = aT; if( a < 0 || a > 255 ) return 1; int px = ( me.mx + var->editObj->getHorizontalScrollPos() ) / 10; int py = ( me.my + var->editObj->getVertikalScrollPos() ) / 10; Buchstabe *zeichen = var->schrift->zAlphabet( *var->größe->zEintrag( var->größe->getAuswahl() )->zText() )->zBuchstabe( (unsigned char)var->zeichen->zEintrag( var->zeichen->getAuswahl() )->zText()->getText()[ 0 ] ); zeichen->getBuff()[ px + py * zeichen->getSize().x ] = (unsigned char)a; var->editObj->setRender(); } return 1; } bool EditSpeichernME( void *p, void *obj, MausEreignis me ) { if( me.id == ME_RLinks ) { Variablen *var = (Variablen*)p; int gr = *var->größe->zEintrag( var->größe->getAuswahl() )->zText(); unsigned char z = (unsigned char)var->zeichen->zEintrag( var->zeichen->getAuswahl() )->zText()->getText()[ 0 ]; Buchstabe *zeichen = var->schrift->zAlphabet( gr )->getBuchstabe( z ); var->sDatei->löscheBuchstabe( gr, z ); var->sDatei->addBuchstabe( gr, zeichen, z ); } return 1; } void renderE( void *p, void *obj, Bild *zRObj ) { Variablen *var = (Variablen*)p; if( var->editF->hatStyle( Fenster::Style::Sichtbar ) ) { Buchstabe *zeichen = var->schrift->zAlphabet( *var->größe->zEintrag( var->größe->getAuswahl() )->zText() )->zBuchstabe( (unsigned char)var->zeichen->zEintrag( var->zeichen->getAuswahl() )->zText()->getText()[ 0 ] ); Text fgT = "0x00"; fgT += var->editFg->zText()->getText(); for( int i = fgT.getLength(); i < 10; i++ ) fgT += "0"; int fg = fgT; Text bgT = "0xFF"; bgT += var->editBg->zText()->getText(); for( int i = bgT.getLength(); i < 10; i++ ) bgT += "0"; var->editObj->zBild()->fillRegion( 0, 0, var->editObj->zBild()->getBreite(), var->editObj->zBild()->getHeight(), bgT ); for( int i = 0; i < zeichen->getSize().x; i++ ) { for( int j = 0; j < zeichen->getSize().y; j++ ) var->editObj->zBild()->alphaRegion( i * 10, j * 10, 10, 10, ( zeichen->getBuff()[ i + j * zeichen->getSize().x ] << 24 ) | fg ); } } } int KSGStart Framework::Start( Startparam p ) { Variablen var; WNDCLASS wc = F_Normal( p.hinst ); wc.lpszClassName = "Schrift Editor 2.0"; WFenster *f = new WFenster(); f->setVSchließAktion( beenden ); f->setMausAktion( _ret1ME ); f->setTastaturAktion( _ret1TE ); f->erstellen( WS_OVERLAPPEDWINDOW, wc ); f->setSize( 750, 730 ); f->setPosition( Bildschirmmitte( f->getThis() ) ); f->setVerschiebbar( 1 ); f->setAnzeigeModus( 1 ); Bildschirm *b = new Bildschirm3D( f->getThis() ); f->setBildschirm( b->getThis() ); b->update(); RenderTh *r = new RenderTh(); r->setBildschirm( b->getThis() ); r->beginn(); LTDSDatei *sND = new LTDSDatei(); sND->setPfad( new Text( "../data/normal.ltds" ) ); sND->leseDaten(); var.nSchrift = sND->ladeSchrift(); sND->release(); var.schrift = 0; var.sDatei = new LTDSDatei(); var.sPfad = initTextFeld( 10, 10, 620, 20, var.nSchrift, TextFeld::Style::TextFeld | TextFeld::Style::VCenter, "LTDS Datei Pfad" ); b->addMember( var.sPfad ); var.sLaden = initKnopf( 640, 10, 100, 20, var.nSchrift, Knopf::Style::Sichtbar, "LTDS Laden" ); var.sLaden->setMausEreignis( SLadenME ); var.sLaden->setMausEreignisParameter( &var ); b->addMember( var.sLaden ); var.größe = new AuswahlListe(); var.größe->setStyle( AuswahlListe::Style::Sichtbar | AuswahlListe::Style::Rahmen | AuswahlListe::Style::AuswahlBuffer | AuswahlListe::Style::AuswahlRahmen | AuswahlListe::Style::VScroll ); var.größe->setPosition( 10, 40 ); var.größe->setSize( 100, 590 ); var.größe->setAlphaFeldFarbe( 0x7500FF00 ); var.größe->setAlphaFeldStrength( 8 ); var.größe->setRahmenFarbe( 0xFFFFFFFF ); var.größe->setRahmenBreite( 2 ); var.größe->setALRZ( new LRahmen() ); var.größe->zARahmen()->setFarbe( 0xFF00FF00 ); var.größe->setVertikalKlickScroll( 10 ); var.größe->setMausEreignis( GrößeME ); var.größe->setMausEreignisParameter( &var ); var.größe->update(); b->addMember( var.größe ); var.zeichen = new AuswahlListe(); var.zeichen->setStyle( AuswahlListe::Style::Sichtbar | AuswahlListe::Style::Rahmen | AuswahlListe::Style::AuswahlBuffer | AuswahlListe::Style::AuswahlRahmen | AuswahlListe::Style::VScroll ); var.zeichen->setPosition( 120, 40 ); var.zeichen->setSize( 105, 560 ); var.zeichen->setAlphaFeldFarbe( 0x7500FF00 ); var.zeichen->setAlphaFeldStrength( 8 ); var.zeichen->setRahmenFarbe( 0xFFFFFFFF ); var.zeichen->setRahmenBreite( 2 ); var.zeichen->setALRZ( new LRahmen() ); var.zeichen->zARahmen()->setFarbe( 0xFF00FF00 ); var.zeichen->setVertikalKlickScroll( 10 ); var.zeichen->setMausEreignis( ZeichenME ); var.zeichen->setMausEreignisParameter( &var ); var.zeichen->update(); b->addMember( var.zeichen ); var.gLöschen = initKnopf( 10, 640, 100, 20, var.nSchrift, Knopf::Style::Sichtbar, "Größe Löschen" ); var.gLöschen->removeStyle( Knopf::Style::Erlaubt ); var.gLöschen->setMausEreignis( GLöschenME ); var.gLöschen->setMausEreignisParameter( &var ); b->addMember( var.gLöschen ); var.neuGröße = initKnopf( 10, 670, 100, 20, var.nSchrift, Knopf::Style::Sichtbar, "Neue Größe" ); var.neuGröße->removeStyle( Knopf::Style::Erlaubt ); var.neuGröße->setMausEreignis( NeuGrößeME ); var.neuGröße->setMausEreignisParameter( &var ); b->addMember( var.neuGröße ); var.editZeichen = initKnopf( 120, 610, 105, 20, var.nSchrift, Knopf::Style::Sichtbar, "Zeichen ändern" ); var.editZeichen->removeStyle( Knopf::Style::Erlaubt ); var.editZeichen->setMausEreignis( EditZeichenME ); var.editZeichen->setMausEreignisParameter( &var ); b->addMember( var.editZeichen ); var.zLöschen = initKnopf( 120, 640, 105, 20, var.nSchrift, Knopf::Style::Sichtbar, "Zeichen Löschen" ); var.zLöschen->removeStyle( Knopf::Style::Erlaubt ); var.zLöschen->setMausEreignis( ZLöschenME ); var.zLöschen->setMausEreignisParameter( &var ); b->addMember( var.zLöschen ); var.neuZeichen = initKnopf( 120, 670, 105, 20, var.nSchrift, Knopf::Style::Sichtbar, "Neues Zeichen" ); var.neuZeichen->removeStyle( Knopf::Style::Erlaubt ); var.neuZeichen->setMausEreignis( NeuZeichenME ); var.neuZeichen->setMausEreignisParameter( &var ); b->addMember( var.neuZeichen ); var.vorschau = initTextFeld( 230, 40, 510, 150, 0, TextFeld::Style::TextGebiet & ~TextFeld::Style::Erlaubt, "Vorschau" ); b->addMember( var.vorschau ); var.vFgT = initTextFeld( 230, 200, 40, 20, var.nSchrift, TextFeld::Style::Text | TextFeld::Style::VCenter, "Farbe:" ); b->addMember( var.vFgT ); var.vFg = initTextFeld( 270, 200, 60, 20, var.nSchrift, TextFeld::Style::TextFeld, "FFFFFF" ); var.vFg->setTastaturEreignis( VFgTE ); var.vFg->setTastaturEreignisParameter( &var ); b->addMember( var.vFg ); var.vBgT = initTextFeld( 340, 200, 80, 20, var.nSchrift, TextFeld::Style::Text | TextFeld::Style::VCenter, "Hintergrund:" ); b->addMember( var.vBgT ); var.vBg = initTextFeld( 415, 200, 60, 20, var.nSchrift, TextFeld::Style::TextFeld, "000000" ); var.vBg->setTastaturEreignis( VBgTE ); var.vBg->setTastaturEreignisParameter( &var ); b->addMember( var.vBg ); var.vBgB = initKnopf( 485, 200, 50, 20, var.nSchrift, Knopf::Style::Normal, "Bild" ); var.vBgB->setMausEreignis( VBgBME ); var.vBgB->setMausEreignisParameter( &var ); b->addMember( var.vBgB ); var.vGrößeT = initTextFeld( 550, 200, 50, 20, var.nSchrift, TextFeld::Style::Text | TextFeld::Style::VCenter, "Größe:" ); b->addMember( var.vGrößeT ); var.vGröße = initTextFeld( 600, 200, 60, 20, var.nSchrift, TextFeld::Style::TextFeld, "12" ); var.vGröße->setTastaturEreignis( VGrößeTE ); var.vGröße->setTastaturEreignisParameter( &var ); b->addMember( var.vGröße ); var.vStyle = new AuswahlBox(); var.vStyle->setPosition( 670, 200 ); var.vStyle->setSize( 70, 20 ); var.vStyle->setHintergrundFarbe( 0xFF000000 ); var.vStyle->setRahmenBreite( 1 ); var.vStyle->setRahmenFarbe( 0xFFFFFFFF ); var.vStyle->setMaxAuskappHeight( 120 ); var.vStyle->setMausRahmenBreite( 1 ); var.vStyle->setMausRahmenFarbe( 0xFF005500 ); var.vStyle->setMausAlphaFeldFarbe( 0x00008700 ); var.vStyle->setMausAlphaFeldStrength( -8 ); var.vStyle->setAuswRahmenBreite( 1 ); var.vStyle->setAuswRahmenFarbe( 0xFF00FF00 ); var.vStyle->setAuswAlphaFeldFarbe( 0x0000FF00 ); var.vStyle->setAuswAlphaFeldStrength( -8 ); var.vStyle->setStyle( AuswahlBox::Style::Normal ); var.vStyle->setSchriftZ( var.nSchrift->getThis() ); var.vStyle->addEintrag( "Normal" ); var.vStyle->addEintrag( "Gravur" ); var.vStyle->setMausEreignis( _ret1ME ); var.vStyle->setEventAktion( [ var ]( void *p, AuswahlBox *o, int alt, int neu ) { switch( neu ) { case 0: var.vorschau->setTextRendererZ( new TextRenderer( var.schrift ) ); break; case 1: var.vorschau->setTextRendererZ( new GravurTextRenderer( var.schrift ) ); break; } } ); b->addMember( var.vStyle ); var.editF = initFenster( 230, 230, 460, 460, var.nSchrift, Fenster::Style::normal | Fenster::Style::TitelHintergrund | Fenster::Style::BodyHintergrund | Fenster::Style::ClosingHintergrund, "Zeichen Editor" ); var.editF->setClosingMe( EditFME ); var.editF->setClosingMeParam( &var ); var.editF->removeStyle( Fenster::Style::Sichtbar ); b->addMember( var.editF ); var.editObj = initBildZ( 10, 10, 440, 390, BildZ::Style::Sichtbar | BildZ::Style::HScroll | BildZ::Style::VScroll | BildZ::Style::Rahmen, 0 ); var.editObj->setMausEreignis( EditObjME ); var.editObj->setMausEreignisParameter( &var ); var.editF->addMember( var.editObj ); var.editFgT = initTextFeld( 10, 410, 80, 20, var.nSchrift, TextFeld::Style::Text | TextFeld::Style::VCenter, "Vordergrund:" ); var.editF->addMember( var.editFgT ); var.editFg = initTextFeld( 90, 410, 60, 20, var.nSchrift, TextFeld::Style::TextFeld, "FFFFFF" ); var.editFg->setTastaturEreignis( _nurHexTE ); var.editF->addMember( var.editFg ); var.editBgT = initTextFeld( 160, 410, 80, 20, var.nSchrift, TextFeld::Style::Text | TextFeld::Style::VCenter, "Hintergrund:" ); var.editF->addMember( var.editBgT ); var.editBg = initTextFeld( 240, 410, 60, 20, var.nSchrift, TextFeld::Style::TextFeld, "000000" ); var.editBg->setTastaturEreignis( _nurHexTE ); var.editF->addMember( var.editBg ); var.editAlphaT = initTextFeld( 310, 410, 40, 20, var.nSchrift, TextFeld::Style::Text | TextFeld::Style::VCenter, "Alpha:" ); var.editF->addMember( var.editAlphaT ); var.editAlpha = initTextFeld( 350, 410, 30, 20, var.nSchrift, TextFeld::Style::TextFeld, "FF" ); var.editAlpha->setTastaturEreignis( _nurHexTE ); var.editF->addMember( var.editAlpha ); var.editSpeichern = initKnopf( 390, 410, 60, 20, var.nSchrift, Knopf::Style::Sichtbar, "Save" ); var.editSpeichern->setMausEreignis( EditSpeichernME ); var.editSpeichern->setMausEreignisParameter( &var ); var.editF->addMember( var.editSpeichern ); var.neuGrößeF = initFenster( 290, 305, 120, 90, var.nSchrift, Fenster::Style::normal | Fenster::Style::TitelHintergrund | Fenster::Style::BodyHintergrund | Fenster::Style::ClosingHintergrund, "Neue Größe" ); var.neuGrößeF->setClosingMe( NeuGrößeFME ); var.neuGrößeF->setClosingMeParam( &var ); var.neuGrößeF->removeStyle( Fenster::Style::Sichtbar ); b->addMember( var.neuGrößeF ); var.nGGrößeT = initTextFeld( 10, 10, 50, 20, var.nSchrift, TextFeld::Style::Text | TextFeld::Style::VCenter, "Größe:" ); var.neuGrößeF->addMember( var.nGGrößeT ); var.nGGröße = initTextFeld( 60, 10, 50, 20, var.nSchrift, TextFeld::Style::TextFeld, "12" ); var.nGGröße->setTastaturEreignis( _nurNummernTE ); var.neuGrößeF->addMember( var.nGGröße ); var.nGOk = initKnopf( 10, 40, 100, 20, var.nSchrift, Knopf::Style::Sichtbar, "Ok" ); var.nGOk->setMausEreignis( NGOkME ); var.nGOk->setMausEreignisParameter( &var ); var.neuGrößeF->addMember( var.nGOk ); var.neuZeichenF = initFenster( 290, 275, 120, 150, var.nSchrift, Fenster::Style::normal | Fenster::Style::TitelHintergrund | Fenster::Style::BodyHintergrund | Fenster::Style::ClosingHintergrund, "Neues Zeichen" ); var.neuZeichenF->setClosingMe( NeuZeichenFME ); var.neuZeichenF->setClosingMeParam( &var ); var.neuZeichenF->removeStyle( Fenster::Style::Sichtbar ); b->addMember( var.neuZeichenF ); var.nZZeichenT = initTextFeld( 10, 10, 60, 20, var.nSchrift, TextFeld::Style::Text | TextFeld::Style::VCenter, "Zeichen:" ); var.neuZeichenF->addMember( var.nZZeichenT ); var.nZZeichen = initTextFeld( 70, 10, 30, 20, var.nSchrift, TextFeld::Style::TextFeld, "" ); var.nZZeichen->setTastaturEreignis( NZZeichenTE ); var.nZZeichen->setTastaturEreignisParameter( &var ); var.neuZeichenF->addMember( var.nZZeichen ); var.nZVorschau = initTextFeld( 105, 10, 10, 20, var.nSchrift, TextFeld::Style::Text | TextFeld::Style::VCenter, "" ); var.neuZeichenF->addMember( var.nZVorschau ); var.nZBreiteT = initTextFeld( 10, 40, 50, 20, var.nSchrift, TextFeld::Style::Text | TextFeld::Style::VCenter, "Breite" ); var.neuZeichenF->addMember( var.nZBreiteT ); var.nZBreite = initTextFeld( 60, 40, 50, 20, var.nSchrift, TextFeld::Style::TextFeld, "" ); var.nZBreite->setTastaturEreignis( _nurNummernTE ); var.neuZeichenF->addMember( var.nZBreite ); var.nZHöheT = initTextFeld( 10, 70, 50, 20, var.nSchrift, TextFeld::Style::Text | TextFeld::Style::VCenter, "Höhe" ); var.neuZeichenF->addMember( var.nZHöheT ); var.nZHöhe = initTextFeld( 60, 70, 50, 20, var.nSchrift, TextFeld::Style::TextFeld, "" ); var.nZHöhe->setTastaturEreignis( _nurNummernTE ); var.neuZeichenF->addMember( var.nZHöhe ); var.nZOk = initKnopf( 10, 100, 100, 20, var.nSchrift, Knopf::Style::Sichtbar, "Ok" ); var.nZOk->setMausEreignis( NZOkME ); var.nZOk->setMausEreignisParameter( &var ); var.neuZeichenF->addMember( var.nZOk ); r->setRenderFunktionParameter( &var ); r->setRenderFunktion( renderE ); StartNachrichtenSchleife(); r->beenden(); r->release(); var.nSchrift->release(); var.sPfad->release(); var.sLaden->release(); if( var.schrift ) var.schrift->release(); var.sDatei->release(); var.größe->release(); var.zeichen->release(); var.gLöschen->release(); var.neuGröße->release(); var.editZeichen->release(); var.zLöschen->release(); var.neuZeichen->release(); var.vorschau->release(); var.vFgT->release(); var.vFg->release(); var.vBgT->release(); var.vBg->release(); var.vGrößeT->release(); var.vGröße->release(); var.editF->release(); var.editObj->release(); var.editFg->release(); var.editFgT->release(); var.editBg->release(); var.editBgT->release(); var.editAlpha->release(); var.editAlphaT->release(); var.editSpeichern->release(); var.neuGrößeF->release(); var.nGGrößeT->release(); var.nGGröße->release(); var.nGOk->release(); var.neuZeichenF->release(); var.nZZeichenT->release(); var.nZZeichen->release(); var.nZVorschau->release(); var.nZBreiteT->release(); var.nZBreite->release(); var.nZHöheT->release(); var.nZHöhe->release(); var.nZOk->release(); b->release(); f->setBildschirm( 0 ); f->setAnzeigeModus( 0 ); f->zerstören(); f->release(); return 0; }