Necesito información para continuar con mi API

Iniciado por anonimo12121, 4 Julio 2011, 19:33 PM

0 Miembros y 1 Visitante están viendo este tema.

anonimo12121

Buenas a todos, como bien explica el titulo del post quiero hacer una API para uso personal vamos así aumentar mi aprendizaje tambien, lo que quiero hacer básicamente es una interfaz que mediante cortos codigos escrito en mi programa cree un boton, pero no se como hacerlo para que realmente sea óptimo se comunique todo o algo así, no creo que me haya explicado bien xD.

Voy a copiaros un código de lo que he hecho hasta ahora por aburrimiento. ADVIERTO QUE MI CÓDIGO NO SON MUY BUENOS.
Código (cpp) [Seleccionar]
#include <SDL/SDL.h>
#include <SDL/SDL_image.h>
#include <SDL/SDL_ttf.h>
#include <iostream>
#include <fstream>
#define Rojo {255,0,0}
using namespace std;
class interfaz {
   private:
       SDL_Surface *SFuente,*scrd;
       TTF_Font *TTFuente;
       SDL_Color Color;
       SDL_Rect Rect;
       char *Fuente;
       int interruptor;
       int tipo; // 1 boton 2 cuadro de texto
   public:
       interfaz();
       void on();
       void off();
       int MouseOver(SDL_Event evento);
       int MouseClick(SDL_Event evento);
       int Mouse(SDL_Event evento);
       void CargarFuente(char *nombre);
       void ColorBoton(SDL_Surface *screen);
       void TextSelColor(int r,int g,int b);
       void Boton(char *texto,int size,int posx,int posy);
       void Texto(char *texto,int size,int posx,int posy);
       void Act(SDL_Surface *screen);
};
interfaz::interfaz(){
   interruptor=0;
   Color.r=0;
   Color.g=0;
   Color.b=0;
};
void interfaz::on(){
   interruptor=1;
};
void interfaz::off(){
   interruptor=0;
};
int interfaz::MouseOver(SDL_Event evento){
   if((evento.motion.x >= Rect.x-2 && evento.motion.x <= Rect.x+Rect.w+1)
   && (evento.motion.y >= Rect.y-2 && evento.motion.y <= Rect.y+Rect.h+3)){
       on();
       return 1;
   }
   else {
       off();
       return 0;
   }
};
int interfaz::MouseClick(SDL_Event evento){
   if(MouseOver(evento)==1 && evento.button.button == SDL_BUTTON_LEFT){
       return 1;
   }
   else return 0;
};
int interfaz::Mouse(SDL_Event evento){
   if(MouseClick(evento) ==1){
       return 1;
   }
   
   else return 0;
};
void interfaz::CargarFuente(char *nombre){
   Fuente=nombre;
};
void interfaz::ColorBoton(SDL_Surface *screen){
   int r,g,b;
   if(interruptor==1){r=243;g=148;b=0;}
   else {r=0;g=0;b=0;}
   SDL_Rect x;
   x.x=Rect.x-1;
   x.y=Rect.y-1;
   x.w=Rect.w+2;
   x.h=Rect.h+2-(Rect.h/2);
   SDL_FillRect(screen,&x,SDL_MapRGB(screen->format,223,235,253));
   x.y=x.y+x.h;
   SDL_FillRect(screen,&x,SDL_MapRGB(screen->format,212,230,255));
   x.x=x.x-1;
   x.y=Rect.y-2;
   x.w=x.w+2;
   x.h=1;
   SDL_FillRect(screen,&x,SDL_MapRGB(screen->format,r,g,b));
   x.y=Rect.y+Rect.h+3;
   SDL_FillRect(screen,&x,SDL_MapRGB(screen->format,r,g,b));
   x.x=Rect.x-2;
   x.y=Rect.y-1;
   x.w=1;
   x.h=Rect.h+4;
   SDL_FillRect(screen,&x,SDL_MapRGB(screen->format,r,g,b));
   x.x=Rect.x+Rect.w+1;
   SDL_FillRect(screen,&x,SDL_MapRGB(screen->format,r,g,b));
};
   
void interfaz::TextSelColor(int r,int g,int b){
   Color.r=r;
   Color.g=g;
   Color.b=b;
};
void interfaz::Boton(char *texto,int size,int posx,int posy){
   tipo=1;
   TTFuente=TTF_OpenFont(Fuente, size);
   SFuente= TTF_RenderText_Blended(TTFuente,texto,Color);
   Rect.x=posx;
   Rect.y=posy;
   Rect.w=SFuente->w;
   Rect.h=SFuente->h;
};
void interfaz::Texto(char *texto,int size,int posx,int posy){
   tipo=2;
   TTFuente=TTF_OpenFont(Fuente, size);
   SFuente= TTF_RenderText_Blended(TTFuente,texto,Color);
   Rect.x=posx;
   Rect.y=posy;
   Rect.w=SFuente->w;
   Rect.h=SFuente->h;
};
void interfaz::Act(SDL_Surface *screen){
   if(tipo==1)ColorBoton(screen);
   SDL_BlitSurface(SFuente,0,screen,&Rect);
};
//lineas rojas///////////
SDL_Rect h={0,0,640,1};
SDL_Rect v={0,0,1,480};
/////////////////////////
//color de fondo
int br=0,bg=220,bb=0;
/////////////////////////
int main(int argc,char *argv[]) {
   //Variables
   SDL_Surface *screen;
   SDL_Event evento;//Estructura evento
   int start;
   SDL_Init(SDL_INIT_VIDEO);
   screen=SDL_SetVideoMode(640,480,32,SDL_SWSURFACE);
   TTF_Init();
   //FUENTE/////////////////////////////////////////////
   interfaz i;
   interfaz i2;
   interfaz i3;
   interfaz i4;
   //i.ini(screen);
   i.TextSelColor(0,0,0);
   i.CargarFuente("LCD.ttf");
   i2.CargarFuente("LCD.ttf");
   i3.CargarFuente("LCD.ttf");
   i4.CargarFuente("arial.ttf");
   i.Boton("Azul",24,50,50);
   i2.Boton("Verde",24,250,50);
   i3.Boton("Cerrar",12,400,400);
   i4.Texto("Texto",12,300,400);
   
   /////////////////////////////////////////////////////
   while(1){
       
       start=SDL_GetTicks();
       if(start%25==0){
           SDL_PollEvent(&evento);//devuelve 0 si no hay eventos
           v.x=evento.motion.x;
           h.y=evento.motion.y;
           if(evento.key.state==SDL_PRESSED){
                   if(evento.key.keysym.sym == SDLK_ESCAPE){
                       return 0;
                   }
           }
           if(i.Mouse(evento) ==1){br=0;bg=0;bb=255;}
           if(i2.Mouse(evento) ==1){br=0;bg=255;bb=0;}
           if(i3.Mouse(evento) ==1)return 0;
           SDL_FillRect(screen,0,SDL_MapRGB(screen->format,br,bg,bb));
           i.Act(screen);
           i2.Act(screen);
           i3.Act(screen);
           i4.Act(screen);
           SDL_FillRect(screen,&h,SDL_MapRGB(screen->format,255,0,0));
           SDL_FillRect(screen,&v,SDL_MapRGB(screen->format,255,0,0));
           SDL_Flip(screen);
       }
   }
   return 0;
}


Esto es lo que llevo hasta el momento paso a explicar directamente el main() y ya me decis vuestra opinión.


Las lineas siguientes son para crear objetos.
Código (cpp) [Seleccionar]
interfaz i;
   interfaz i2;
   interfaz i3;
   interfaz i4;

Esta linea es para darle color al texto
Código (cpp) [Seleccionar]
i.TextSelColor(0,0,0);
Estas lineas son para cargar la fuente de texto de cada objeto
Código (cpp) [Seleccionar]
i.CargarFuente("LCD.ttf");
   i2.CargarFuente("LCD.ttf");
   i3.CargarFuente("LCD.ttf");
   i4.CargarFuente("arial.ttf");

Estas lineas son para crear un boton y un texto.
Código (cpp) [Seleccionar]
i.Boton("Azul",24,50,50);
   i2.Boton("Verde",24,250,50);
   i3.Boton("Cerrar",12,400,400);
   i4.Texto("Texto",12,300,400);

y las lineas similares a
Código (cpp) [Seleccionar]
i.Mouse(evento)
Son para devolver información sobre el estado del raton
A y las estas son para visualizar el objeto
Código (cpp) [Seleccionar]
i.Act(screen);



Paso a decir un poco sobre algunas funciones de la clase.
esta funcion devuelve un valor si esta el raton encima del objeto.
Código (cpp) [Seleccionar]
MouseOver
Y esta funcion devuelve un valor si el raton a pulsado click izquierdo encima del objeto.
Código (cpp) [Seleccionar]
MouseClick




Me gustaría que me dierais vuesta opinión y tantos consejos como pudieran ser para aprender para próximas cosas.
Saludos
Página para ganar Bitcoins y Dinero: http://earnbit.hol.es/
Video de YouTube con Hack para el LoL: http://adf.ly/5033746/youtube-lolemuhack
Si quieres ganar dinero con adfly entra y registrate aquí -> http://adf.ly/?id=5033746