123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106 |
- #include "AlphaFeld.h"
- #include "Bild.h"
- #include "Punkt.h"
- #include "Scroll.h"
- #include "Text.h"
- #include "ToolTip.h"
- using namespace Framework;
- // Inhalt der AlphaFeld Klasse aus AlphaFeld.h
- // Konstruktor
- AlphaFeld::AlphaFeld()
- : Zeichnung(),
- strength(5),
- farbe(0x9B000000)
- {}
- AlphaFeld::~AlphaFeld() {}
- // nicht constant
- void AlphaFeld::setStrength(int st) // setzt die Stärke
- {
- strength = st;
- rend = 1;
- }
- void AlphaFeld::setFarbe(int f) // setzt die Farbe
- {
- farbe = f;
- rend = 1;
- }
- void AlphaFeld::render(Bild& zRObj) // zeichnet nach zRObj
- {
- Zeichnung::render(zRObj);
- int br = gr.x - 1;
- int hi = gr.y - 1;
- int xp = pos.x, yp = pos.y;
- int a = (farbe >> 24) & 0xFF;
- int index = (br / 2) * (br <= hi) + (hi / 2) * (br > hi);
- int fc = farbe & 0x00FFFFFF;
- int fc2 = farbe;
- if (strength > 0) index = index > (a / strength) ? a / strength : index;
- if (strength < 0)
- index
- = index > ((255 - a) / -strength) ? ((255 - a) / -strength) : index;
- for (int i = 0; i < index; ++i)
- {
- a -= strength;
- fc2 = (a << 24) | fc;
- int i2 = i << 1;
- zRObj.drawLinieHAlpha(
- xp + i + 1, yp + i, br - i2, fc2); // oben links --- oben rechts
- zRObj.drawLinieVAlpha(xp + br - i,
- yp + i + 1,
- hi - i2,
- fc2); // oben rechts -- unten rechts
- zRObj.drawLinieHAlpha(
- xp + i, yp + hi - i, br - i2, fc2); // unten rechts - unten links
- zRObj.drawLinieVAlpha(
- xp + i, yp + i, hi - i2, fc2); // unten links -- oben links
- }
- if (index == br / 2)
- {
- for (int i = index; i <= index + (br - index) - index; ++i)
- zRObj.drawLinieVAlpha(xp + i,
- yp + index,
- hi - (index << 1) + 1,
- fc2); // rest Fläche senkrecht
- }
- else
- {
- for (int i = index; i <= index + (hi - index) - index; ++i)
- zRObj.drawLinieHAlpha(xp + index,
- yp + i,
- br - (index << 1) + 1,
- fc2); // rest Fläche waagerecht
- }
- }
- // constant
- int AlphaFeld::getStrength() const // gibt die Stärke zurück
- {
- return strength;
- }
- int AlphaFeld::getFarbe() const // gibt die Farbe zurück
- {
- return farbe;
- }
- Zeichnung* AlphaFeld::dublizieren() const // Kopiert das Zeichnung
- {
- AlphaFeld* obj = new AlphaFeld();
- obj->setPosition(pos);
- obj->setSize(gr);
- obj->setMausEreignisParameter(makParam);
- obj->setTastaturEreignisParameter(takParam);
- obj->setMausEreignis(mak);
- obj->setTastaturEreignis(tak);
- if (toolTip) obj->setToolTipZ((ToolTip*)toolTip->dublizieren());
- obj->setStrength(strength);
- obj->setFarbe(farbe);
- return obj;
- }
|