Die Cut-Funktion könntest du mit MMX sogar komplett weglassen. Hier mal ein
ASM-Beispiel (Achtung! Delphi kennt die MMX-Mnemonics meine ich erst ab D7):
Voraussetzung: Farbe in 32Bit
Delphi-Quellcode:
function Darken(Color: LongInt; Value: Byte): LongInt;
// EAX=Color; EDX=Value
asm
// MMX-Register befüllen
MOVD MM1, EAX
PUNPCKLBW MM1, MM0
MOVD MM2, EDX
PSHUFW MM2, MM2, 0
// Wert von Value von allen RGB abziehen, wenn 0 erreicht 0 belassen
PSUBUSB MM1, MM2
// Ergebnis zurückschreiben
PACKUSWB MM1, MM0
MOVD EAX, MM1
// FPU zurücksetzen
EMMS
end;
Wenn du aufhellen möchtest, dann einfach in Zeile 10 statt PSUBUSB PADDUSB verwenden.
Fabian K.
INSERT INTO HandVonFreundin SELECT * FROM Himmel