123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855 |
- #include <main.h>
- #include <Fenster.h>
- #include <Punkt.h>
- #include <Bildschirm.h>
- #include <RenderThread.h>
- #include <Knopf.h>
- #include <DateiSystem.h>
- #include <AuswahlBox.h>
- #include <Liste.h>
- #include <Schrift.h>
- #include <Bild.h>
- #include <Text.h>
- #include "Initialisierung.h"
- #include <MausEreignis.h>
- #include <TastaturEreignis.h>
- #include <Scroll.h>
- #include <AlphaFeld.h>
- #include <Rahmen.h>
- #include <Datei.h>
- #include <DateiDialog.h>
- #include <AsynchronCall.h>
- #include <Dialog.h>
- 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( dynamic_cast<Schrift *>( 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( dynamic_cast<Schrift *>( 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( dynamic_cast<Schrift *>( 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, dynamic_cast<Text *>( 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->doPublicMausEreignis( 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->doPublicMausEreignis( 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->doPublicMausEreignis( me );
- me.id = ME_RLinks;
- me.mx = 140;
- me.my = 50 + zAusw * 20 - var->zeichen->getVertikalScrollPos();
- me.verarbeitet = 0;
- var->zeichen->doPublicMausEreignis( 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;
- }
- bool TestME( void *p, void *obj, MausEreignis me )
- {
- if( me.id == ME_PLinks )
- {
- return 1;
- }
- 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( TestME );
- f->setTastaturAktion( _ret1TE );
- f->erstellen( WS_OVERLAPPEDWINDOW, wc );
- f->setSize( 750, 730 );
- f->setPosition( Bildschirmmitte( dynamic_cast<WFenster *>( f->getThis() ) ) );
- f->setVerschiebbar( 1 );
- f->setAnzeigeModus( 1 );
- Bildschirm *b = new Bildschirm3D( dynamic_cast<WFenster *>( f->getThis() ) );
- f->setBildschirm( dynamic_cast<Bildschirm *>( b->getThis() ) );
- b->update();
- RenderTh *r = new RenderTh();
- r->setBildschirm( dynamic_cast<Bildschirm *>( 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( dynamic_cast<Schrift *>( 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 | BildZ::Style::Erlaubt, 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();
- if( var.schrift )
- var.schrift->release();
- var.sDatei->release();
- b->release();
- f->setBildschirm( 0 );
- f->setAnzeigeModus( 0 );
- f->zerstören();
- f->release();
- return 0;
- }
|