[ create a new paste ] login | about

Link: http://codepad.org/pI51cI0I    [ raw code | output | fork ]

salvador@conclase.net - C++, pasted on Nov 6:
// Codificación de colores
// aritmética de bits
// (C) 2009 Con Clase
// Salvador Pozo
#include <iostream>

using namespace std;

typedef unsigned long int color ;
typedef unsigned char BYTE;
typedef unsigned long int DWORD;

inline BYTE ObtenerValorRojo(color);
inline BYTE ObtenerValorVerde(color);
inline BYTE ObtenerValorAzul(color);
inline BYTE ObtenerValorAlfa(color);
inline color ModificarValorRojo(color, BYTE);
inline color ModificarValorVerde(color, BYTE);
inline color ModificarValorAzul(color, BYTE);
inline color ModificarValorAlfa(color, BYTE);

int main() {
    color c1 = 0x80fedc12;

    cout << "Color: " << dec << c1 << " - " << hex << c1 << endl;
    cout << "Rojo:  " << dec << (int)ObtenerValorRojo(c1) << " - " << hex << (int)ObtenerValorRojo(c1) << endl;
    cout << "Verde: " << dec << (int)ObtenerValorVerde(c1) << " - " << hex << (int)ObtenerValorVerde(c1) << endl;
    cout << "Azul:  " << dec << (int)ObtenerValorAzul(c1) << " - " << hex << (int)ObtenerValorAzul(c1) << endl;
    cout << "Alfa:  " << dec << (int)ObtenerValorAlfa(c1) << " - " << hex << (int)ObtenerValorAlfa(c1) << endl;

    c1 = ModificarValorRojo(c1, 0x42);
    c1 = ModificarValorVerde(c1, 0xde);
    cout << "Color: " << dec << c1 << " - " << hex << c1 << endl;
    cout << "Rojo:  " << dec << (int)ObtenerValorRojo(c1) << " - " << hex << (int)ObtenerValorRojo(c1) << endl;
    cout << "Verde: " << dec << (int)ObtenerValorVerde(c1) << " - " << hex << (int)ObtenerValorVerde(c1) << endl;
    cout << "Azul:  " << dec << (int)ObtenerValorAzul(c1) << " - " << hex << (int)ObtenerValorAzul(c1) << endl;
    cout << "Alfa:  " << dec << (int)ObtenerValorAlfa(c1) << " - " << hex << (int)ObtenerValorAlfa(c1) << endl;

    return 0;
}

inline BYTE ObtenerValorRojo(color c) {
   return (BYTE)(c);
}

inline BYTE ObtenerValorVerde(color c) {
   return (BYTE)(c >> 8);
}

inline BYTE ObtenerValorAzul(color c) {
    return (BYTE)(c >> 16);
}

inline BYTE ObtenerValorAlfa(color c) {
    return (BYTE)(c >> 24);
}

inline color ModificarValorRojo(color c, BYTE r) {
   return (c & 0xffffff00) | (color)r;
}

inline color ModificarValorVerde(color c, BYTE g) {
   return (c & 0xffff00ff) | (color)(g << 8);
}

inline color ModificarValorAzul(color c, BYTE b) {
   return (c & 0xff00ffff) | (color)(b << 16);
}

inline color ModificarValorAlfa(color c, BYTE a) {
   return (c & 0x00ffffff) | (color)(a << 24);
}


Output:
1
2
3
4
5
6
7
8
9
10
Color: 2164186130 - 80fedc12
Rojo:  18 - 12
Verde: 220 - dc
Azul:  254 - fe
Alfa:  128 - 80
Color: 2164186690 - 80fede42
Rojo:  66 - 42
Verde: 222 - de
Azul:  254 - fe
Alfa:  128 - 80


Create a new paste based on this one


Comments: