123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327 |
- #include "Fortschritt.h"
- #include "AlphaFeld.h"
- #include "Bild.h"
- #include "Rahmen.h"
- #include "Schrift.h"
- #include "Scroll.h"
- #include "Text.h"
- using namespace Framework;
- // Inhalt der FBalken Klasse aus Fortschritt.h
- // Konstruktor
- FBalken::FBalken()
- : ZeichnungHintergrund(),
- maxAk(0),
- ak(0),
- fRahmen(0),
- fBuffer(0),
- fBgF(0xFF000000),
- fBgBild(0),
- textRd(0),
- schriftFarbe(0),
- schriftSize(0)
- {
- style = 0;
- }
- // Destructor
- FBalken::~FBalken()
- {
- if (fRahmen) fRahmen->release();
- if (fBuffer) fBuffer->release();
- if (fBgBild) fBgBild->release();
- if (textRd) textRd->release();
- }
- // nicht constant
- void FBalken::setAktionAnzahl(__int64 ak) // setzt die anzahl der Aktionen
- {
- maxAk = ak;
- rend = 1;
- }
- void FBalken::aktionPlus(__int64 aktionen) // mehrere Aktionen sind fertig
- {
- ak += aktionen;
- if (ak > maxAk) ak = maxAk;
- rend = 1;
- }
- void FBalken::reset() // setzt die fertigen Aktionen zurück
- {
- ak = 0;
- rend = 1;
- }
- void FBalken::setFRahmenZ(Rahmen* ram) // setzt einen Zeiger zum Fertig Rahmen
- {
- if (fRahmen) fRahmen->release();
- fRahmen = ram;
- rend = 1;
- }
- void FBalken::setFRFarbe(int f) // setzt die Fertig Rahmen Farbe
- {
- if (!fRahmen) fRahmen = new LRahmen();
- fRahmen->setFarbe(f);
- rend = 1;
- }
- void FBalken::setFRBreite(int br) // setzt die Fertig Rahmen Breite
- {
- if (!fRahmen) fRahmen = new LRahmen();
- fRahmen->setRamenBreite(br);
- rend = 1;
- }
- void FBalken::setFAlphaFeldZ(
- AlphaFeld* af) // setzt einen Zeiger zum Fertig Alpha Feld
- {
- if (fBuffer) fBuffer->release();
- fBuffer = af;
- rend = 1;
- }
- void FBalken::setFAFFarbe(int f) // setzt die Fertig Alpha Feld Farbe
- {
- if (!fBuffer) fBuffer = new AlphaFeld();
- fBuffer->setFarbe(f);
- rend = 1;
- }
- void FBalken::setFAFStrength(int st) // setzt die Stärke des Fertig Alpha Feldes
- {
- if (!fBuffer) fBuffer = new AlphaFeld();
- fBuffer->setStrength(st);
- rend = 1;
- }
- void FBalken::setFBgFarbe(
- int f) // setzt einen Zeiger zur Fertig Hintergrund Farbe
- {
- fBgF = f;
- rend = 1;
- }
- void FBalken::setFBgBildZ(Bild* b) // setzt das Fertig Hintergrund Bild
- {
- if (fBgBild) fBgBild->release();
- fBgBild = b;
- rend = 1;
- }
- void FBalken::setFBgBild(Bild* b) // kopiert in das Fertig Hintergrund Bild
- {
- if (!fBgBild) fBgBild = new Bild();
- fBgBild->neuBild(b->getBreite(), b->getHeight(), 0);
- fBgBild->drawBild(0, 0, b->getBreite(), b->getHeight(), *b);
- b->release();
- rend = 1;
- }
- void FBalken::setTextRendererZ(TextRenderer* textRd)
- {
- if (this->textRd) this->textRd->release();
- this->textRd = textRd;
- }
- void FBalken::setSchriftZ(Schrift* s) // setzt die Schrift
- {
- if (!textRd)
- textRd = new TextRenderer(s);
- else
- textRd->setSchriftZ(s);
- rend = 1;
- }
- void FBalken::setSFarbe(int f) // setzt die Schrift Farbe
- {
- schriftFarbe = f;
- rend = 1;
- }
- void FBalken::setSSize(unsigned char gr) // setzt die Schrift größe
- {
- schriftSize = gr;
- rend = 1;
- }
- void FBalken::render(Bild& zRObj) // zeichnet nach zRObj
- {
- if (!hatStyle(Style::Sichtbar)) return;
- lockZeichnung();
- removeStyle(Style::VScroll | Style::HScroll);
- ZeichnungHintergrund::render(zRObj);
- if (!zRObj.setDrawOptions(pos, gr))
- {
- unlockZeichnung();
- return;
- }
- int xx = 0;
- int yy = 0;
- int b = gr.x;
- int h = gr.y;
- if (hatStyle(Style::L_R))
- b = (int)((gr.x / 100.0) * getProzent());
- else if (hatStyle(Style::R_L))
- {
- b = (int)((gr.x / 100.0) * getProzent());
- xx -= b;
- }
- else if (hatStyle(Style::O_U))
- h = (int)((gr.y / 100.0) * getProzent());
- else if (hatStyle(Style::U_O))
- {
- h = (int)((gr.y / 100.0) * getProzent());
- yy -= h;
- }
- if (maxAk == 0) b = 0, h = 0;
- if (!zRObj.setDrawOptions(xx, yy, b, h))
- {
- zRObj.releaseDrawOptions();
- unlockZeichnung();
- return;
- }
- int rbr = 0;
- if (hatStyle(Style::FRahmen) && fRahmen)
- {
- fRahmen->setSize(b, h);
- fRahmen->render(zRObj);
- rbr = fRahmen->getRBreite();
- }
- if (hatStyle(Style::FFarbe))
- {
- if (hatStyle(Style::FAlpha))
- zRObj.alphaRegion(rbr, rbr, b - rbr * 2, h - rbr * 2, fBgF);
- else
- zRObj.fillRegion(rbr, rbr, b - rbr * 2, h - rbr * 2, fBgF);
- }
- if (hatStyle(Style::FBild) && fBgBild)
- {
- if (hatStyle(Style::FAlpha))
- zRObj.alphaBildSkall(
- rbr, rbr, gr.x - rbr * 2, gr.y - rbr * 2, *fBgBild);
- else
- zRObj.alphaBildSkall(
- rbr, rbr, gr.x - rbr * 2, gr.y - rbr * 2, *fBgBild);
- }
- if (hatStyle(Style::FBuffered) && fBuffer)
- {
- fBuffer->setSize(b - rbr * 2, h - rbr * 2);
- fBuffer->render(zRObj);
- }
- zRObj.releaseDrawOptions();
- if (hatStyle(Style::Aktionen) && textRd)
- {
- textRd->setSchriftSize(schriftSize);
- Text txt = Text("") + ak + "/" + maxAk;
- if (hatStyle(Style::Prozent))
- txt += Text(" (") + (int)(getProzent() + 0.5) + "%)";
- zRObj.alphaRegion(
- rbr + (gr.x - rbr * 2) / 2 - textRd->getTextBreite(txt) / 2,
- rbr + (gr.y - rbr * 2) / 2 - textRd->getTextHeight(txt) / 2,
- textRd->getTextBreite(txt),
- textRd->getTextHeight(txt),
- 0x70000000);
- textRd->renderText(
- rbr + (gr.x - rbr * 2) / 2 - textRd->getTextBreite(txt) / 2,
- rbr + (gr.y - rbr * 2) / 2 - textRd->getTextHeight(txt) / 2,
- txt,
- zRObj,
- schriftFarbe);
- }
- else if (hatStyle(Style::Prozent) && textRd)
- {
- textRd->setSchriftSize(schriftSize);
- Text txt;
- txt.append((int)(getProzent() + 0.5));
- txt.append("%");
- zRObj.alphaRegion(
- rbr + (gr.x - rbr * 2) / 2 - textRd->getTextBreite(txt) / 2,
- rbr + (gr.y - rbr * 2) / 2 - textRd->getTextHeight(txt) / 2,
- textRd->getTextBreite(txt),
- textRd->getTextHeight(txt),
- 0x70000000);
- textRd->renderText(
- rbr + (gr.x - rbr * 2) / 2 - textRd->getTextBreite(txt) / 2,
- rbr + (gr.y - rbr * 2) / 2 - textRd->getTextHeight(txt) / 2,
- txt,
- zRObj,
- schriftFarbe);
- }
- zRObj.releaseDrawOptions();
- unlockZeichnung();
- }
- // constant
- __int64 FBalken::getAktionAnzahl() const // gibt die Anzahl der Aktionen zurück
- {
- return maxAk;
- }
- double FBalken::getProzent() const // gibt die momentane Prozentzahl zurück
- {
- if (!maxAk) return 0;
- return (double)ak / ((double)maxAk / 100.0);
- }
- __int64 FBalken::getAktion() const // gibt die fertigen Aktionen zurück
- {
- return ak;
- }
- Rahmen* FBalken::getFRahmen() const // gibt den Fertig Rahmen zurück
- {
- if (fRahmen) return dynamic_cast<Rahmen*>(fRahmen->getThis());
- return 0;
- }
- Rahmen* FBalken::zFRahmen() const
- {
- return fRahmen;
- }
- AlphaFeld* FBalken::getFAlphaFeld() const // gibt das Fertig Alpha Feld zurück
- {
- if (fBuffer) return dynamic_cast<AlphaFeld*>(fBuffer->getThis());
- return 0;
- }
- AlphaFeld* FBalken::zFAlphaFeld() const
- {
- return fBuffer;
- }
- int FBalken::getFBgFarbe() const // gibt die Fertig Hintergrund Farbe zurück
- {
- return fBgF;
- }
- Bild* FBalken::getFBgBild() const // gibt das Fertig Hintergrund Bild zurück
- {
- if (fBgBild) return dynamic_cast<Bild*>(fBgBild->getThis());
- return 0;
- }
- Bild* FBalken::zFBgBild() const
- {
- return fBgBild;
- }
- Schrift* FBalken::getSchrift() const // gibt die Schrift zurück
- {
- if (textRd) return textRd->getSchrift();
- return 0;
- }
- Schrift* FBalken::zSchrift() const
- {
- return textRd ? textRd->zSchrift() : 0;
- }
- int FBalken::getSFarbe() const // gibt die Schrift Farbe zurück
- {
- return schriftFarbe;
- }
|