I'm working in a large program. The problem is that I have to redraw the screen from time to time. Go back to draw with SetPixel is too time consuming. With C++ I used putimage and getimage without any problem, but I can't find the equivalent instructions in windows programming or C++ Builder.
Sorry, I didn't include the edit3d-2.cpp file with functions on this post 'cause is too long.
Infinte thanks.
#include <vcl.h>
#include <windows.h>
#include <DOS.H>
#include <MEM.H>
#include <STDLIB.H>
#include <STDIO.H>
#include <CONIO.H>
#include <STRING.H>
#include <MATH.H>
#include <TIME.H>
#include <process.h>
#pragma hdrstop
#define PINTANDO_PINCEL 100
#define ID_PINTAPINCEL 101
#define ID_SCRIPT 200
#define ID_POS_SCRIPT 201
#define ID_GUARDA_TEMP_SCRIPT 202
#define ID_DIBUJALIN3D 400
#define ID_LAYER 501
#define ID_NEXTLAYER 502
#define ID_LAYER_CREA 504
#define ID_LAYER_CREA_TERMINARADIAL 505
#define ID_EDIT_LAYER_PUNTOSARADIAL 506
#define RADIALZFIJO 700
#define ID_LAYER_SHOW 800
#define ID_DEF_X 801
#define ID_DEF_Y 802
#define ID_DEF_Z 803
#define ID_AXIS_SHOW 1000
#define ID_AXIS_HIDE 1001
#define ID_ANGLEX_PLUS 1002
#define ID_ANGLEX_MINUS 1003
#define ID_ANGLEY_PLUS 1004
#define ID_ANGLEY_MINUS 1005
#define ID_ANGLEZ_PLUS 1006
#define ID_ANGLEZ_MINUS 1007
#define ID_MOVE_RIGHT 1008
#define ID_MOVE_LEFT 1009
#define ID_MOVE_DOWN 1010
#define ID_MOVE_UP 1011
#define ID_MOVE_FAREST 1012
#define ID_MOVE_NEAREST 1013
#define ID_EXAMPLE 2000
#define ID_ERASE 2001
#define ID_EXAMPLE_RESOLUTION5 2002
#define ID_SAVE_DRAW2D 3000
#define ID_SAVE_LAYER 3001
#define ID_SAVE_LAYGRP 3002
#define ID_GUARDA 3004
#define ID_EDIT 3005
#define ID_OPEN_DRAW2D 3100
#define ID_OPEN_LAYER 3101
#define ID_OPEN_LAYGRP 3102
#define ID_ABRIR_BMP 3103
#define ID_EFECTO 4000
#define ID_SCREEEN3D 5000
#define OP_MENU1 7001
#define OP_MENU2 7002
#define OP_MENU3 7003
#define OP_MENU4 7004
#define OP_MENU5 7005
#define OP_MENU6 7006
#define OP_MENU7 7007
#define OP_MENU8 7008
#define OP_MENU9 7009
#define OP_MENU10 7010
#define OP_MENU11 7011
#define OP_MENU12 7012
#define OP_MENU13 7013
#define OP_MENU14 7014
#define OP_MENU15 7015
#define OP_MENU16 7016
#define OP_MENU_LAYER1 7101
#define OP_MENU_LAYER2 7102
#define OP_MENU_LAYER3 7103
#define OP_MENU_LAYER4 7104
#define OP_MENU_LAYER5 7105
#define OP_MENU_LAYER6 7106
#define ID_CUENTAGOTAS 8000
#define ID_AIRBRUSH 8001
#define ID_PINCEL 8002
#define ID_LINEA 8003
#define ID_AIRBRUSH_EXE 8004
#define FIG_GEOM 8005
#define SECUNDARIO 8006
#define ID_FILE_EXIT 9001
#define ID_STUFF_GO 9002
#define ID_REDRAW 10000
#define ID_REDRAWALL 10001
#define ID_REDRAWMENUS 10002
#define CuadLayerX1 980
#define CuadLayerX2 1135
#define CuadLayerY1 100
#define CuadLayerY2 CuadLayerY1+200
#define CuadLayerY3 CuadLayerY2+200
#define CuadLayerY4 CuadLayerY3+200
#define CLayerYincr 30
#define xMenuLayer1 CuadLayerX1+5
#define xMenuLayer2 CuadLayerX1+25
#define xMenuLayer3 CuadLayerX1+35
#define xMenuLayer4 CuadLayerX1+55
#define xMenuLayer5 CuadLayerX1+65+10
#define xMenuLayer6 CuadLayerX1+85+10
#define xMenuLayer7 CuadLayerX1+95+10
#define xMenuLayer8 CuadLayerX1+115+10
#define xMenuLayer9 CuadLayerX1+125+20
#define xMenuLayer10 CuadLayerX1+145+20
#define xMenuLayer11 CuadLayerX1+155+20
#define xMenuLayer12 CuadLayerX1+175+20
#define yMenuLayer1 CuadLayerY1-20
#define yMenuLayer2 CuadLayerY1-2
#define yMenuLayer3 CuadLayerY2-20+CLayerYincr
#define yMenuLayer4 CuadLayerY2-2+CLayerYincr
#define yMenuLayer5 CuadLayerY3-20+CLayerYincr*2
#define yMenuLayer6 CuadLayerY3-2+CLayerYincr*2
#define GETMAXX 1150
#define GETMAXY 1150
#define WHITE 255,255,255
#define MINXDIB 5
#define MINYDIB 120
#define MAXXDIB 975
#define MAXYDIB 790
#define POS_Y_ESTADO1 40
#define CHICO 0
#define MEDIANO 1
#define GRANDE 2
#include "e:\editor3d\builder6\20ag2010\edit3d-2.cpp"
int colorMarcoMenu=1;
int anchoCuadroMenu=20;
int altoCuadroMenu=15;
int menuArribaX=10;
int menuArribaY=55;
int xM=0,yM=0;
int xMousScript=0, yMousScript=0,xMousScriptAnt=900, yMousScriptAnt=500;
int ayCambio=0;
//------------------------- LRESULT ------------------------------------
LRESULT CALLBACK WndProc(HWND hwnd, UINT Message, WPARAM wParam, LPARAM lParam)
{
switch(Message)
{
case WM_CREATE:
{
HMENU hMenu, hSubMenu;
HICON hIcon, hIconSm;
hMenu = CreateMenu();
hSubMenu = CreatePopupMenu();
AppendMenu(hMenu, MF_STRING | MF_POPUP, (UINT)hSubMenu, "&File");
AppendMenu(hSubMenu, MF_STRING, ID_FILE_EXIT, "&New");
AppendMenu(hSubMenu, MF_STRING, ID_FILE_EXIT, "&Save");
AppendMenu(hSubMenu, MF_STRING, ID_FILE_EXIT, "&Save as");
AppendMenu(hSubMenu, MF_STRING, ID_FILE_EXIT, "&Save masque");
AppendMenu(hSubMenu, MF_STRING, ID_SAVE_DRAW2D, "&Save 2D Draw");
AppendMenu(hSubMenu, MF_STRING, ID_SAVE_LAYER, "&Save Layer");
AppendMenu(hSubMenu, MF_STRING, ID_SAVE_LAYGRP, "&Save Layer Group");
AppendMenu(hSubMenu, MF_STRING, ID_OPEN_DRAW2D, "&Open 2D Draw");
AppendMenu(hSubMenu, MF_STRING, ID_OPEN_LAYER, "&Open Layer");
AppendMenu(hSubMenu, MF_STRING, ID_FILE_EXIT, "&Import");
AppendMenu(hSubMenu, MF_STRING, ID_FILE_EXIT, "&Print");
AppendMenu(hSubMenu, MF_STRING, ID_FILE_EXIT, "&Exit");
hSubMenu = CreatePopupMenu();
AppendMenu(hMenu, MF_STRING | MF_POPUP, (UINT)hSubMenu, "&Edit");
AppendMenu(hSubMenu, MF_STRING, ID_STUFF_GO, "&Copy");
AppendMenu(hSubMenu, MF_STRING, ID_STUFF_GO, "&Paste");
AppendMenu(hSubMenu, MF_STRING, ID_STUFF_GO, "&Paste object");
AppendMenu(hSubMenu, MF_STRING, ID_STUFF_GO, "&Insert");
AppendMenu(hSubMenu, MF_STRING, ID_STUFF_GO, "&Select");
AppendMenu(hSubMenu, MF_STRING, ID_STUFF_GO, "&Create 3d node");
AppendMenu(hSubMenu, MF_STRING, ID_STUFF_GO, "&Redefine 3d node");
hSubMenu = CreatePopupMenu();
AppendMenu(hMenu, MF_STRING | MF_POPUP, (UINT)hSubMenu, "&DrawTools");
AppendMenu(hSubMenu, MF_STRING, ID_LINEA, "&Line");
AppendMenu(hSubMenu, MF_STRING, ID_STUFF_GO, "&Square");
AppendMenu(hSubMenu, MF_STRING, ID_STUFF_GO, "&Rectangle");
AppendMenu(hSubMenu, MF_STRING, ID_STUFF_GO, "&Poligon");
AppendMenu(hSubMenu, MF_STRING, ID_STUFF_GO, "&Circle");
AppendMenu(hSubMenu, MF_STRING, ID_STUFF_GO, "&Ellipse");
AppendMenu(hSubMenu, MF_STRING, ID_STUFF_GO, "&Sphere");
AppendMenu(hSubMenu, MF_STRING, ID_STUFF_GO, "&Ellipsoid");
AppendMenu(hSubMenu, MF_STRING, ID_STUFF_GO, "&Plane");
AppendMenu(hSubMenu, MF_STRING, ID_STUFF_GO, "&X lay");
AppendMenu(hSubMenu, MF_STRING, ID_STUFF_GO, "&Y lay");
AppendMenu(hSubMenu, MF_STRING, ID_STUFF_GO, "&Z lay");
AppendMenu(hSubMenu, MF_STRING, ID_STUFF_GO, "&Grid");
hSubMenu = CreatePopupMenu();
AppendMenu(hMenu, MF_STRING | MF_POPUP, (UINT)hSubMenu, "&PaintTools");
AppendMenu(hSubMenu, MF_STRING, ID_CUENTAGOTAS, "&CuentaGotas");
AppendMenu(hSubMenu, MF_STRING, ID_PINCEL, "&Pincel");
AppendMenu(hSubMenu, MF_STRING, ID_STUFF_GO, "&Water");
AppendMenu(hSubMenu, MF_STRING, ID_STUFF_GO, "&Oil");
AppendMenu(hSubMenu, MF_STRING, ID_AIRBRUSH, "&Air brush");
AppendMenu(hSubMenu, MF_STRING, ID_STUFF_GO, "&Erase");
AppendMenu(hSubMenu, MF_STRING, ID_STUFF_GO, "&Set drawing color");
AppendMenu(hSubMenu, MF_STRING, ID_STUFF_GO, "&Set back color");
AppendMenu(hSubMenu, MF_STRING, ID_STUFF_GO, "&Set fill color");
hSubMenu = CreatePopupMenu();
AppendMenu(hMenu, MF_STRING | MF_POPUP, (UINT)hSubMenu, "&Sculpt");
AppendMenu(hSubMenu, MF_STRING, ID_STUFF_GO, "&Repujado sphere");
AppendMenu(hSubMenu, MF_STRING, ID_STUFF_GO, "&Repujado transversal bar");
AppendMenu(hSubMenu, MF_STRING, ID_STUFF_GO, "&Repujado cilinder");
AppendMenu(hSubMenu, MF_STRING, ID_STUFF_GO, "&Aspirator sphere");
AppendMenu(hSubMenu, MF_STRING, ID_STUFF_GO, "&Aspirator transversal bar");
AppendMenu(hSubMenu, MF_STRING, ID_STUFF_GO, "&Aspirator cilinder");
AppendMenu(hSubMenu, MF_STRING, ID_STUFF_GO, "&Cincel");
AppendMenu(hSubMenu, MF_STRING, ID_STUFF_GO, "&Metal brush");
AppendMenu(hSubMenu, MF_STRING, ID_STUFF_GO, "&Paste");
AppendMenu(hSubMenu, MF_STRING, ID_STUFF_GO, "&Heat");
hSubMenu = CreatePopupMenu();
AppendMenu(hMenu, MF_STRING | MF_POPUP, (UINT)hSubMenu, "&Layer");
//AppendMenu(hSubMenu, MF_STRING, ID_LAYER_CREATE, "&Create Layer");
AppendMenu(hSubMenu, MF_STRING, ID_LAYER_SHOW, "&Show Layer");
AppendMenu(hSubMenu, MF_STRING, ID_DEF_X, "&Define x");
AppendMenu(hSubMenu, MF_STRING, ID_DEF_Y, "&Define y");
AppendMenu(hSubMenu, MF_STRING, ID_DEF_Z, "&Define z");
hSubMenu = CreatePopupMenu();
AppendMenu(hMenu, MF_STRING | MF_POPUP, (UINT)hSubMenu, "&Move 3d");
AppendMenu(hSubMenu, MF_STRING, ID_AXIS_SHOW, "&Show axis");
AppendMenu(hSubMenu, MF_STRING, ID_AXIS_HIDE, "&Hide axis");
AppendMenu(hSubMenu, MF_STRING, ID_MOVE_UP, "&Up");
AppendMenu(hSubMenu, MF_STRING, ID_MOVE_DOWN, "&Down");
AppendMenu(hSubMenu, MF_STRING, ID_MOVE_RIGHT, "&Right");
AppendMenu(hSubMenu, MF_STRING, ID_MOVE_LEFT, "&Left");
AppendMenu(hSubMenu, MF_STRING, ID_MOVE_NEAREST, "&Nearest");
AppendMenu(hSubMenu, MF_STRING, ID_MOVE_FAREST, "&Farest");
AppendMenu(hSubMenu, MF_STRING, ID_ANGLEX_PLUS, "&AngleX +");
AppendMenu(hSubMenu, MF_STRING, ID_ANGLEX_MINUS, "&AngleX -");
AppendMenu(hSubMenu, MF_STRING, ID_ANGLEY_PLUS, "&AngleY +");
AppendMenu(hSubMenu, MF_STRING, ID_ANGLEY_MINUS, "&AngleY -");
AppendMenu(hSubMenu, MF_STRING, ID_ANGLEZ_PLUS, "&AngleZ +");
AppendMenu(hSubMenu, MF_STRING, ID_ANGLEZ_MINUS, "&AngleZ -");
AppendMenu(hSubMenu, MF_STRING, ID_STUFF_GO, "&Redraw");
hSubMenu = CreatePopupMenu();
AppendMenu(hMenu, MF_STRING | MF_POPUP, (UINT)hSubMenu, "&Object");
AppendMenu(hSubMenu, MF_STRING, ID_STUFF_GO, "&Create cube");
AppendMenu(hSubMenu, MF_STRING, ID_STUFF_GO, "&Create sphere");
AppendMenu(hSubMenu, MF_STRING, ID_STUFF_GO, "&Create ellipsoid");
AppendMenu(hSubMenu, MF_STRING, ID_STUFF_GO, "&Delete");
hSubMenu = CreatePopupMenu();
AppendMenu(hMenu, MF_STRING | MF_POPUP, (UINT)hSubMenu, "&Script");
AppendMenu(hSubMenu, MF_STRING, ID_STUFF_GO, "&New");
AppendMenu(hSubMenu, MF_STRING, ID_STUFF_GO, "&See all");
AppendMenu(hSubMenu, MF_STRING, ID_STUFF_GO, "&Action object");
AppendMenu(hSubMenu, MF_STRING, ID_STUFF_GO, "&Rewind");
AppendMenu(hSubMenu, MF_STRING, ID_STUFF_GO, "&Choose time");
AppendMenu(hSubMenu, MF_STRING, ID_STUFF_GO, "&End");
hSubMenu = CreatePopupMenu();
AppendMenu(hMenu, MF_STRING | MF_POPUP, (UINT)hSubMenu, "&View");
AppendMenu(hSubMenu, MF_STRING, ID_SCREEEN3D, "&Screen 3d");
AppendMenu(hSubMenu, MF_STRING, ID_STUFF_GO, "&RGB Pallete");
AppendMenu(hSubMenu, MF_STRING, ID_STUFF_GO, "&Objects");
AppendMenu(hSubMenu, MF_STRING, ID_EXAMPLE, "&Ejemplo");
AppendMenu(hSubMenu, MF_STRING, ID_EXAMPLE_RESOLUTION5, "&Ejem Resolution.5");
AppendMenu(hSubMenu, MF_STRING, ID_ERASE, "&Borra");
AppendMenu(hSubMenu, MF_STRING, ID_REDRAW, "&Mostrar color");
AppendMenu(hSubMenu, MF_STRING, ID_REDRAWMENUS, "&Mostrar menús");
AppendMenu(hSubMenu, MF_STRING, ID_REDRAWALL, "&Redibujar");
SetMenu(hwnd, hMenu);
hIcon = (HICON)LoadImage(NULL, "menu_two.ico", IMAGE_ICON, 32, 32, LR_LOADFROMFILE);
//hIcon = (HICON)LoadImage(NULL, "menu_two.bmp", IMAGE_ICON, 32, 32, LR_LOADFROMFILE);
if(hIcon) {SendMessage(hwnd, WM_SETICON, ICON_BIG, (LPARAM)hIcon);}
else {MessageBox(hwnd, "Could not load large icon! Is it in the current working directory?", "Error", MB_OK | MB_ICONERROR);}
hIconSm = (HICON)LoadImage(NULL, "menu_two.ico", IMAGE_ICON, 16, 16, LR_LOADFROMFILE);
//hIcon = (HICON)LoadImage(NULL, "menu_two.bmp", IMAGE_ICON, 16, 16, LR_LOADFROMFILE);
if(hIconSm){SendMessage(hwnd, WM_SETICON, ICON_SMALL, (LPARAM)hIconSm);}
else{MessageBox(hwnd, "Could not load small icon! Is it in the current working directory?", "Error", MB_OK | MB_ICONERROR);}
}
break;
case WM_COMMAND:
switch(LOWORD(wParam))
{
case ID_SAVE_DRAW2D:procesoGlobal= ID_SAVE_DRAW2D; break;
case ID_SAVE_LAYER:procesoGlobal= ID_SAVE_LAYER; break;
case ID_SAVE_LAYGRP:procesoGlobal= ID_SAVE_LAYGRP; break;
case ID_OPEN_LAYER:procesoGlobal= ID_OPEN_LAYER; break;
case ID_OPEN_DRAW2D:procesoGlobal= ID_OPEN_DRAW2D; break;
case ID_FILE_EXIT:PostMessage(hwnd, WM_CLOSE, 0, 0); break;
case ID_STUFF_GO: procesoGlobal= 0;MessageBox(hwnd, "You clicked 1!", "Woo!", MB_OK); break;
case ID_CUENTAGOTAS:procesoGlobal= ID_CUENTAGOTAS; break;
case ID_AIRBRUSH:procesoGlobal= ID_AIRBRUSH; break;
case ID_PINCEL:procesoGlobal= ID_PINCEL; break;
case ID_LINEA:procesoGlobal= ID_LINEA; break;
case ID_LAYER:procesoGlobal= ID_LAYER; break;
case ID_MOVE_NEAREST:procesoGlobal= ID_MOVE_NEAREST; break;
case ID_MOVE_FAREST:procesoGlobal= ID_MOVE_FAREST; break;
case ID_MOVE_RIGHT: procesoGlobal= ID_MOVE_RIGHT; break;
case ID_MOVE_LEFT: procesoGlobal= ID_MOVE_LEFT; break;
case ID_ANGLEX_PLUS: procesoGlobal= ID_ANGLEX_PLUS; break;
case ID_ANGLEX_MINUS:procesoGlobal= ID_ANGLEX_MINUS; break;
case ID_ANGLEY_PLUS: procesoGlobal= ID_ANGLEY_PLUS; break;
case ID_ANGLEY_MINUS:procesoGlobal= ID_ANGLEY_MINUS; break;
case ID_ANGLEZ_PLUS: procesoGlobal= ID_ANGLEZ_PLUS; break;
case ID_ANGLEZ_MINUS:procesoGlobal= ID_ANGLEZ_MINUS; break;
case ID_MOVE_DOWN:procesoGlobal= ID_MOVE_DOWN; break;
case ID_MOVE_UP:procesoGlobal= ID_MOVE_UP; break;
case ID_EXAMPLE:procesoGlobal= ID_EXAMPLE; break;
case ID_EXAMPLE_RESOLUTION5:procesoGlobal= ID_EXAMPLE_RESOLUTION5; break;
case ID_ERASE:procesoGlobal= ID_ERASE; break;
case ID_AXIS_SHOW: procesoGlobal= ID_AXIS_SHOW; break;
case ID_AXIS_HIDE: procesoGlobal= ID_AXIS_HIDE; break;
case ID_LAYER_SHOW: procesoGlobal= ID_LAYER_SHOW; break;
case ID_REDRAWALL: procesoGlobal= ID_REDRAWALL; break;
case ID_REDRAW: procesoGlobal= ID_REDRAW; break;
case ID_REDRAWMENUS: procesoGlobal= ID_REDRAWMENUS; break;
case ID_SCREEEN3D:
spawnl(P_NOWAITO, "Screen3d.exe", "Screen3d.exe", NULL);
break;
}
break;
case WM_CLOSE: DestroyWindow(hwnd);break;
case WM_DESTROY:PostQuitMessage(0);break;
//BEGIN MOUSE EVENTS--------------------------------------------
case WM_PAINT:
procesoGlobal= ID_REDRAW;
break;
case WM_LBUTTONDOWN:
flag = true;
xMouse = LOWORD(lParam);
yMouse = HIWORD(lParam);
// LAYERS DERECHA --------------------------------------------------------
if(xMouse>xMenuLayer1&&yMouse>yMenuLayer1&&xMouse<xMenuLayer2&&yMouse<yMenuLayer2)
procesoGlobal=OP_MENU_LAYER1;
if(xMouse>xMenuLayer3&&yMouse>yMenuLayer1&&xMouse<xMenuLayer4&&yMouse<yMenuLayer2)
procesoGlobal=OP_MENU_LAYER2;
if(xMouse>xMenuLayer5&&yMouse>yMenuLayer1&&xMouse<xMenuLayer6&&yMouse<yMenuLayer2)
procesoGlobal=OP_MENU_LAYER3;
if(xMouse>xMenuLayer7&&yMouse>yMenuLayer1&&xMouse<xMenuLayer8&&yMouse<yMenuLayer2)
procesoGlobal=OP_MENU_LAYER4;
if(xMouse>xMenuLayer9&&yMouse>yMenuLayer1&&xMouse<xMenuLayer10&&yMouse<yMenuLayer2)
procesoGlobal=OP_MENU_LAYER5;
if(xMouse>xMenuLayer11&&yMouse>yMenuLayer1&&xMouse<xMenuLayer12&&yMouse<yMenuLayer2)
procesoGlobal=OP_MENU_LAYER6;
// MOVIMIENTO --------------------------------------------------------
colorMarcoMenu=1;
anchoCuadroMenu=20;
altoCuadroMenu=15;
menuArribaX=10;
menuArribaY=55;
register int con;
for(con=0;con<17;con++)
{
int xm1, ym1, xm2, ym2;
xm1=menuArribaX+con*anchoCuadroMenu*2+1;
xm2=menuArribaX+con*anchoCuadroMenu*2+36+1;
ym1=menuArribaY+2;
ym2=menuArribaY+18+2;
if(xMouse>xm1&&yMouse>ym1&&xMouse<xm2&&yMouse<ym2)
switch(con){
case 0: break;
case 1: break;
case 2:procesoGlobal=ID_MOVE_FAREST; break;
case 3:procesoGlobal=ID_MOVE_NEAREST;break;
case 4:procesoGlobal=ID_MOVE_LEFT; break;
case 5:procesoGlobal=ID_MOVE_RIGHT; break;
case 6:procesoGlobal=ID_MOVE_UP; break;
case 7:procesoGlobal=ID_MOVE_DOWN; break;
case 8:procesoGlobal=ID_ANGLEX_PLUS; break;
case 9:procesoGlobal=ID_ANGLEX_MINUS; break;
case 10:procesoGlobal=ID_ANGLEY_PLUS; break;
case 11:procesoGlobal=ID_ANGLEY_MINUS; break;
case 12:procesoGlobal=ID_ANGLEZ_PLUS; break;
case 13:procesoGlobal=ID_ANGLEZ_MINUS; break;
case 14: break;
case 15:procesoGlobal=ID_EXAMPLE; break;
case 16: procesoGlobal=ID_ERASE; break;
}
}
// HERRAMIENTAS PRINCIPAL --------------------------------------------------------
colorMarcoMenu=1;
anchoCuadroMenu=20;
altoCuadroMenu=15;
menuArribaX=10;
menuArribaY=2;
for(con=0;con<28;con++)
{
int xm1, ym1, xm2, ym2;
xm1=menuArribaX+con*anchoCuadroMenu*2+1;
xm2=menuArribaX+con*anchoCuadroMenu*2+37+1;
ym1=menuArribaY+2;
ym2=menuArribaY+19+2;
if(xMouse>xm1&&yMouse>ym1&&xMouse<xm2&&yMouse<ym2)
switch(con){
case 0: procesoGlobal=ID_SCRIPT; break;
case 1: break;
case 2: /*procesoGlobal=ID_GUARDA;*/ break;
case 3: break;
case 4:procesoGlobal=OP_MENU14; break;//principalTool=ID_PINCEL;
case 5:procesoGlobal=ID_EFECTO; principalTool=ID_EFECTO; break;//dibuja20x38(efecto,con,0);
case 6:procesoGlobal=OP_MENU13; break;//principalTool=ID_AIRBRUSH;
case 7:{procesoGlobal=ID_CUENTAGOTAS;//CUENTAGOTAS
lastTool=principalTool;
principalTool=ID_CUENTAGOTAS;
}break;
case 8: break;//dibuja20x38(goma,con,0);
//case 9:procesoGlobal=ID_LINEA; break;//LINEA//principalTool=ID_LINEA;
case 9: procesoGlobal=FIG_GEOM; principalTool=FIG_GEOM; break;//LINEA//principalTool=ID_LINEA;
case 10:break;//dibuja20x38(rectangle,con,0);
case 11:break;//dibuja20x38(ellipse,con,0);
case 12:break; //dibuja20x38(polig,con,0);
case 13:break;
case 14:break;//dibuja20x38(screen3D,con,0);
case 15:break;//dibuja20x38(screen3D,con,0);
case 16:procesoGlobal= ID_LAYER_SHOW;break;//procesoGlobal=ID_LAYER;
case 17://procesoGlobal=ID_LAYER;//LAYER//dibuja20x38(layer,con,0);
//procesoGlobal= ID_NEXTLAYER;
//procesoGlobal= ID_LAYER_SHOW;
procesoGlobal= ID_OPEN_LAYER;
break;
//---------------------- HERRAMIENTAS SECUNDARIO -------------------------------------
case 19: //rejilla, radial, siguiente, incremento, color
switch(principalTool) // cuadrado, redondo, rastrillo, diag izq, diag der, ovalado
{
case ID_PINCEL: dibujaSIoNO=1;outext("brocha ",10,POS_Y_ESTADO1,0,0,0);dibujaSIoNO=0;break;
case ID_GUARDA: dibujaSIoNO=1;outext("guardar 2d ",10,POS_Y_ESTADO1,0,0,0);dibujaSIoNO=0;break;
case ID_LAYER: dibujaSIoNO=1; outext("rejilla ",10,POS_Y_ESTADO1,0,0,0);dibujaSIoNO=0;break;
case ID_EDIT: dibujaSIoNO=1; outext("editar layer ",10,POS_Y_ESTADO1,0,0,0);dibujaSIoNO=0;break;
case ID_EFECTO: dibujaSIoNO=1;outext("contraste ",10,POS_Y_ESTADO1,0,0,0);dibujaSIoNO=0;break;
} break;
case 20:
switch(principalTool)
{
case ID_PINCEL: dibujaSIoNO=1;outext("acuarela ",10,POS_Y_ESTADO1,0,0,0);dibujaSIoNO=0;break;
case ID_GUARDA: dibujaSIoNO=1;outext("guarda 3d ",10,POS_Y_ESTADO1,0,0,0);dibujaSIoNO=0;break;
case ID_LAYER: dibujaSIoNO=1; outext("radial ",10,POS_Y_ESTADO1,0,0,0);dibujaSIoNO=0;break;
case ID_EDIT: dibujaSIoNO=1; outext("editar script ",10,POS_Y_ESTADO1,0,0,0);dibujaSIoNO=0;break;
case ID_EFECTO: dibujaSIoNO=1;outext("resta ",10,POS_Y_ESTADO1,0,0,0);dibujaSIoNO=0;break;
} break;
case 21:
switch(principalTool)
{
case ID_PINCEL: dibujaSIoNO=1;outext("oleo ",10,POS_Y_ESTADO1,0,0,0);dibujaSIoNO=0;break;
case ID_GUARDA: dibujaSIoNO=1;outext("guarda layer ",10,POS_Y_ESTADO1,0,0,0);dibujaSIoNO=0;break;
case ID_LAYER: dibujaSIoNO=1; outext("radial z fijo ",10,POS_Y_ESTADO1,0,0,0);dibujaSIoNO=0;secondaryTool= RADIALZFIJO;procesoGlobal=RADIALZFIJO;break;
case ID_EFECTO: dibujaSIoNO=1;outext("negativo ",10,POS_Y_ESTADO1,0,0,0);dibujaSIoNO=0;break;
} break;
case 22:
switch(principalTool)
{
case ID_PINCEL: principalTool=ID_AIRBRUSH;procesoGlobal=OP_MENU13;
ayCambio=1;
dibujaSIoNO=1;outext("air brush ",10,POS_Y_ESTADO1,0,0,0);dibujaSIoNO=0;break;//principalTool=ID_AIRBRUSH;
case ID_GUARDA: dibujaSIoNO=1;outext("guarda grupo layers ",10,POS_Y_ESTADO1,0,0,0);dibujaSIoNO=0;break;
case ID_LAYER: dibujaSIoNO=1; outext("incremento layer z ",10,POS_Y_ESTADO1,0,0,0);dibujaSIoNO=0;break;
case ID_EFECTO: dibujaSIoNO=1;outext("alargar pincelada ",10,POS_Y_ESTADO1,0,0,0);dibujaSIoNO=0;break;
} break;
case 23:
switch(principalTool)
{
case ID_PINCEL: dibujaSIoNO=1;outext("pastel ",10,POS_Y_ESTADO1,0,0,0);dibujaSIoNO=0;break;
case ID_GUARDA: dibujaSIoNO=1;outext("guarda bmp ",10,POS_Y_ESTADO1,0,0,0);dibujaSIoNO=0;break;
case ID_LAYER_CREA_TERMINARADIAL:
case ID_LAYER: dibujaSIoNO=1; outext("crea nodos radiales ",10,POS_Y_ESTADO1,0,0,0);dibujaSIoNO=0;
//xM=xMouse;yM=yMouse;
procesoGlobal=ID_LAYER_CREA;//ly.creaLayerRadial();
break;
} break;
case 24:
switch(principalTool)
{
case ID_PINCEL: dibujaSIoNO=1;outext("gis ",10,POS_Y_ESTADO1,0,0,0);dibujaSIoNO=0;break;
case ID_GUARDA: dibujaSIoNO=1;outext("guarda script ",10,POS_Y_ESTADO1,0,0,0);dibujaSIoNO=0;break;
case ID_LAYER: dibujaSIoNO=1; outext("incremento radial ",10,POS_Y_ESTADO1,0,0,0);dibujaSIoNO=0;break;
} break;
case 25:
switch(principalTool)
{
case ID_PINCEL: dibujaSIoNO=1;outext("carboncillo ",10,POS_Y_ESTADO1,0,0,0);dibujaSIoNO=0;break;
case ID_LAYER: dibujaSIoNO=1; outext("valor z individual ",10,POS_Y_ESTADO1,0,0,0);dibujaSIoNO=0;break;
} break;
case 26:
switch(principalTool)
{
case ID_LAYER: dibujaSIoNO=1; outext("abre layer original ",10,POS_Y_ESTADO1,0,0,0);dibujaSIoNO=0;
procesoGlobal=ID_EDIT_LAYER_PUNTOSARADIAL; break;
} break;
case 27:
switch(principalTool)
{
case ID_LAYER: dibujaSIoNO=1; outext("suaviza color x100 ",10,POS_Y_ESTADO1,0,0,0);dibujaSIoNO=0;break;
} break;
}
}
// PRINCIPAL ABAJO --------------------------------------------------------
colorMarcoMenu=1;
anchoCuadroMenu=20;
altoCuadroMenu=15;
//menuArribaX=170;
menuArribaY=24;
for(con=0;con<4;con++)
{
int xm1, ym1, xm2, ym2;
xm1=menuArribaX+con*anchoCuadroMenu*2+1; // 10 + 2*20*2 + 3
xm2=menuArribaX+con*anchoCuadroMenu*2+38; // 10 + 2*20*2 +38 = 128
ym1=menuArribaY+2;
ym2=menuArribaY+19+2;
if(xMouse>xm1&&yMouse>ym1&&xMouse<xm2&&yMouse<ym2)
switch(con){
case 0: break;
case 1: break;
case 2: procesoGlobal=ID_GUARDA; principalTool=ID_GUARDA; break; // 97 27
case 3: break;
}
}
// VALORES ARRIBA --------------------------------------------------------
for(con=8;con<36;con++)
{
int xm1, ym1, xm2, ym2;
xm1=menuArribaX+con*anchoCuadroMenu+1; // 10 + 2*20 +1 = 51
xm2=menuArribaX+con*anchoCuadroMenu+18+1; // 10 + 2*20 +19= 69
ym1=menuArribaY+2;
ym2=menuArribaY+19+2;
if(xMouse>xm1&&yMouse>ym1&&xMouse<xm2&&yMouse<ym2)
switch(con){
case 8:procesoGlobal=OP_MENU15; break;//dibuja10x10(masGrandePincel,con,0);
case 9:procesoGlobal=OP_MENU16; break;//dibuja10x10(masChicoPincel,con,0);
case 10: break;//dibuja10x10(masGrandePincel,con,0);
case 11: break;//dibuja10x10(masChicoPincel,con,0);
case 12: dimAirBrush+=3; break;//cantAirBrush=20,
case 13: if(dimAirBrush>3)dimAirBrush-=3; break;//dibuja10x10(masChicoPincel,con,0);
case 14: break;//dibuja10x10(masGrandePincel,con,0);
case 15: break;//dibuja10x10(masChicoPincel,con,0);
case 16: break;//dibuja10x10(masGrandePincel,con,0);
case 17: break;//dibuja10x10(masChicoPincel,con,0);
case 18: break;//dibuja10x10(masGrandePincel,con,0);
case 19: break;//dibuja10x10(masChicoPincel,con,0);
case 20: break;//dibuja10x10(masGrandePincel,con,0);
case 21: break;//dibuja10x10(masChicoPincel,con,0);
case 22: break;//dibuja10x10(masGrandePincel,con,0);
case 23: break;//dibuja10x10(masChicoPincel,con,0);
case 24: break;//dibuja10x10(masGrandePincel,con,0);
case 25: break;//dibuja10x10(masChicoPincel,con,0);
case 30:procesoGlobal=OP_MENU4;break;//dibuja10x10(masRojo10,con,0);
case 31:procesoGlobal=OP_MENU5;break;//dibuja10x10(masVerde10,con,0);
case 32:procesoGlobal=OP_MENU6;break;//dibuja10x10(masAzul10,con,0);
case 33:procesoGlobal=OP_MENU10;break;//dibuja10x10(menosRojo10,con,0);
case 34:procesoGlobal=OP_MENU11;break;//dibuja10x10(menosVerde10,con,0);
case 35:procesoGlobal=OP_MENU12;break;//dibuja10x10(menosAzul10,con,0);
}
}
// VALORES ABAJO --------------------------------------------------------
menuArribaY=39;
menuArribaX=170;
for(con=0;con<28;con++)
{
int xm1, ym1, xm2, ym2;
xm1=menuArribaX+con*anchoCuadroMenu+1; // 613 41 ::: 10 + 22*20 + 1 = 451
xm2=menuArribaX+con*anchoCuadroMenu+18+1; // 170 + 440 + 1 = 611 // 613 - 441 = 172
ym1=menuArribaY+2;
ym2=menuArribaY+19+2;
if(xMouse>xm1&&yMouse>ym1&&xMouse<xm2&&yMouse<ym2)
switch(con){
case 0: break;//dibuja10x10(masGrandePincel,con,0);
case 1: break;//dibuja10x10(masChicoPincel,con,0);
case 2: break;//dibuja10x10(masGrandePincel,con,0);
case 3: break;//dibuja10x10(masChicoPincel,con,0);
case 4: cantAirBrush+=15; break;//dibuja10x10(masGrandePincel,con,0);
case 5: if(cantAirBrush>15) cantAirBrush-=15; break;//dibuja10x10(masChicoPincel,con,0);
case 6: break;//dibuja10x10(masGrandePincel,con,0);
case 7: break;//dibuja10x10(masChicoPincel,con,0);
case 22: procesoGlobal=OP_MENU1; break;//dibuja10x10(masRojo1,con,0);
case 23: procesoGlobal=OP_MENU2;break;//dibuja10x10(masVerde1,con,0);
case 24: procesoGlobal=OP_MENU3;break;//dibuja10x10(masAzul1,con,0);
case 25: procesoGlobal=OP_MENU7;
//if(ActRed>0)ActRed--; color = RGB(ActRed,ActGreen,ActBlue);
break;//dibuja10x10(menosRojo1,con,0);
case 26: procesoGlobal=OP_MENU8;
//if(ActGreen>0)ActGreen--; color = RGB(ActRed,ActGreen,ActBlue);
break;//dibuja10x10(menosVerde1,con,0);
case 27: procesoGlobal=OP_MENU9;
//if(ActBlue>0)ActBlue--; color = RGB(ActRed,ActGreen,ActBlue);
break;//dibuja10x10(menosAzul1,con,0);
}
}
// PRINCIPAL TOOL --------------------------------------------------------
if(xMouse>MINXDIB&&xMouse<MAXXDIB&&yMouse>MINYDIB&&yMouse<MAXYDIB)
switch(principalTool)
{
case ID_SCRIPT:
xMousScriptAnt=xMousScript; yMousScriptAnt=yMousScript;
xMousScript= xMouse;yMousScript= yMouse; //procesoGlobal= ID_POS_SCRIPT;
linea2D(GUARDA,xMousScriptAnt+1,yMousScriptAnt+1,xMousScript+1,yMousScript+1,ActRed, ActGreen, ActBlue);
procesoGlobal=ID_GUARDA_TEMP_SCRIPT;
break;
case ID_AIRBRUSH:
procesoGlobal=ID_AIRBRUSH_EXE;
//dibujaSIoNO=0;
//airBrush(0, cantAirBrush, dimAirBrush, color, xMouse, yMouse);
break;
case ID_CUENTAGOTAS:
{
colores cols;
cols=get_pixel(xMouse, yMouse);
ActBlue=cols.blueCol;
ActGreen=cols.greenCol;
ActRed=cols.redCol;
color=RGB(ActRed,ActGreen,ActBlue);
principalTool=lastTool;
} //principalTool=0;
break;
case ID_PINCEL:
//pincel(0,gruesoPincel,color, xMouse, yMouse);
procesoGlobal=ID_PINTAPINCEL;
break;
case ID_LINEA:
numPointsLine++;
pointX[numPointsLine]=xMouse;
pointY[numPointsLine]=yMouse;
if(pointX[numPointsLine]==pointX[numPointsLine-1]&&pointY[numPointsLine]==pointY[numPointsLine-1])
{principalTool=0; numPointsLine=0; break;}
if(numPointsLine>1&&numPointsLine<MAXLINEASTODO)
linea2D(GUARDA,pointX[numPointsLine-1],pointY[numPointsLine-1],pointX[numPointsLine],pointY[numPointsLine],ActRed, ActGreen, ActBlue);
//displayLineYX(GUARDA,pointX[numPointsLine-1],pointY[numPointsLine-1],pointX[numPointsLine],pointY[numPointsLine],ActRed, ActGreen, ActBlue);
//lineaPuntual2D(GUARDA,pointX[numPointsLine-1],pointY[numPointsLine-1],pointX[numPointsLine],pointY[numPointsLine],ActRed, ActGreen, ActBlue);
//lineaPuntual2D(GUARDA,100,100,200,200,ActRed, ActGreen, ActBlue);
break;
case ID_LAYER://xM= coordX*factorConvLayer; yM= 777-coordY*factorConvLayer
pointX[numPointsLayer]=(double)xMouse/factorConvLayer;
pointY[numPointsLayer]=(double)((double)(777-yMouse))/factorConvLayer;
pointZ[numPointsLayer]=incrLayerZ;
arrXMouse[numPointsLayer]=(double)xMouse;
arrYMouse[numPointsLayer]=(double)yMouse;
if(numPointsLayer>0)
if(pointX[numPointsLayer]==pointX[numPointsLayer-1]&&pointY[numPointsLayer]==pointY[numPointsLayer-1])
{FILE *out;
if ((out = fopen("layerTemp.txt", "a"))== NULL)
{fprintf(stderr, "Cannot open layerTemp.txt.");return 1;}
int i=0;
while( i<numPointsLayer )
fprintf(out,"%f,%f,%f\n",pointX[i],pointY[i],pointZ[i++]);
fclose(out);
principalTool=0; numPointsLayer=0;
break;
}
if(numPointsLayer>0&&numPointsLayer<MAXLINEASTODO)
{
linea2D(GUARDA,arrXMouse[numPointsLayer-1],arrYMouse[numPointsLayer-1],arrXMouse[numPointsLayer],arrYMouse[numPointsLayer],ActRed, ActGreen, ActBlue);
procesoGlobal=ID_DIBUJALIN3D;
break;
}
numPointsLayer++;
break;
case ID_LAYER_CREA: xM=xMouse;yM=yMouse; procesoGlobal=ID_LAYER_CREA_TERMINARADIAL; break;
}
break;
case WM_RBUTTONDOWN:
flag = true;
xMouse = LOWORD(lParam);
yMouse = HIWORD(lParam);
break;
case WM_LBUTTONUP: flag = false; break; // Sets the flag to false so that we know the right mouse button was released
case WM_RBUTTONUP: flag = false; break; // Controls the mouse movement and shows its current position on the Window title
case WM_MOUSEMOVE:
if(flag)
{
AnsiString strTitle;
xMouse = LOWORD(lParam);
yMouse = HIWORD(lParam);
switch(principalTool)
{
case 0: break;
case ID_SCRIPT:
xMousScriptAnt=xMousScript; yMousScriptAnt=yMousScript;
xMousScript= xMouse;yMousScript= yMouse; //procesoGlobal= ID_POS_SCRIPT;
linea2D(GUARDA,xMousScriptAnt+1,yMousScriptAnt+1,xMousScript+1,yMousScript+1,ActRed, ActGreen, ActBlue);
procesoGlobal=ID_GUARDA_TEMP_SCRIPT;
break;
case ID_AIRBRUSH: procesoGlobal=ID_AIRBRUSH_EXE; break;
case ID_PINCEL:
procesoGlobal=PINTANDO_PINCEL;
break;
}
}
else
{
AnsiString strTitle;
xMouse = LOWORD(lParam);
yMouse = HIWORD(lParam);
}
break;
//END MOUSE EVENTS--------------------------------------------
//case 'k': dibujaSIoNO=1; outext("herr k ",10,POS_Y_ESTADO1,0,0,0);dibujaSIoNO=0; break;
//case VK_RETURN:dibujaSIoNO=1; outext("herr k ",10,POS_Y_ESTADO1,0,0,0);dibujaSIoNO=0; break;
//
//case OnKeyDown:dibujaSIoNO=1; outext("herr k ",10,POS_Y_ESTADO1,0,0,0);dibujaSIoNO=0; break;
default: return DefWindowProc(hwnd, Message, wParam, lParam);
}
return 0;
};
//==============================================================================
//==============================================================================
//==============================================================================
//==============================================================================
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance,
LPSTR lpCmdLine, int nCmdShow){
WNDCLASSEX wc;
HWND hwnd;
MSG Msg;
TerceraDimension td;
GraficosMenu gm;
Layer lay;
Colors col;
Fonts fs;
Redibuja rd;
Script sc;
Dibujando db;
wc.cbSize = sizeof(WNDCLASSEX);
wc.style = 0;
wc.lpfnWndProc = WndProc;
wc.cbClsExtra = 0;
wc.cbWndExtra = 0;
wc.hInstance = hInstance;
wc.hIcon = NULL;
wc.hCursor = LoadCursor(NULL, IDC_ARROW);
wc.hbrBackground = (HBRUSH)(COLOR_WINDOW+1);
wc.lpszMenuName = NULL;
wc.lpszClassName = g_szClassName;
wc.hIconSm = NULL;
if(!RegisterClassEx(&wc))
{
MessageBox(NULL, "Window Registration Failed!", "Error!",
MB_ICONEXCLAMATION | MB_OK);
return 0;
}
hwnd = CreateWindowEx(
WS_EX_CLIENTEDGE,
g_szClassName,
"Editor 3d",
WS_OVERLAPPEDWINDOW,
CW_USEDEFAULT, CW_USEDEFAULT, GETMAXX, GETMAXY,
NULL, NULL, hInstance, NULL);
if(hwnd == NULL)
{
MessageBox(NULL, "Window Creation Failed!", "Error!",
MB_ICONEXCLAMATION | MB_OK);
return 0;
}
ShowWindow(hwnd, nCmdShow);
UpdateWindow(hwnd);
td.distejpanx1 = 50;
td.distejpanz1 = 3;
td.distejpany1 = 0;
td.angejex=3.141592654/8.0;
//td.angejex=3.141592654;
ActRed=0, ActGreen=0, ActBlue=0;
color = RGB(ActRed,ActGreen,ActBlue);
td.alf_iGl=0; td.bet_iGl=PI/2;td.gam_iGl=PI/2;
td.alf_jGl=PI/2; td.bet_jGl=0; td.gam_jGl=PI/2;
td.alf_kGl=PI+PI/2;td.bet_kGl=PI/2;td.gam_kGl=0;
td.alf_iRel=0; td.bet_iRel=PI/2;td.gam_iRel=PI/2;
td.alf_jRel=PI/2; td.bet_jRel=0; td.gam_jRel=PI/2;
td.alf_kRel=PI/2; td.bet_kRel=PI/2;td.gam_kRel=0;
td.xAbs=0;td.yAbs=0;td.zAbs=0;
td.alf_iAnt=td.alf_iGl;td.bet_iAnt=td.bet_iGl;td.gam_iAnt=td.gam_iGl;
td.alf_jAnt=td.alf_jGl;td.bet_jAnt=td.bet_jGl;td.gam_jAnt=td.gam_jGl;
td.alf_kAnt=td.alf_kGl;td.bet_kAnt=td.bet_kGl;td.gam_kAnt=td.gam_kGl;
cantAirBrush=150, dimAirBrush=10;
int axR=5,axB=20,axG=20;
int axRR=5,axRB=20,axRG=20;
int i=0,j=0;
/*
xMenu1=15;yMenu1=15; xMenu2=33;yMenu2=33;
xMenu3=35;yMenu3=15; xMenu4=53;yMenu4=33;
xMenu5=55;yMenu5=15; xMenu6=73;yMenu6=33;
xMenu7=75;yMenu7=15; xMenu8=93;yMenu8=33;
xMenu9=95;yMenu9=15; xMenu10=113;yMenu10=33;
xMenu11=115;yMenu11=15; xMenu12=133;yMenu12=33;
xMenu15=15;yMenu15=35; xMenu16=33;yMenu16=53;
xMenu17=35;yMenu17=35; xMenu18=53;yMenu18=53;
xMenu19=55;yMenu19=35; xMenu20=73;yMenu20=53;
xMenu21=75;yMenu21=35; xMenu22=93;yMenu22=53;
xMenu23=95;yMenu23=35; xMenu24=113;yMenu24=53;
xMenu25=115;yMenu25=35; xMenu26=133;yMenu26=53;*/
xMenu13=135;yMenu13=15; xMenu14=153;yMenu14=53;
numPointsLine=0;
numPointsLayer=0;
for(i=0;i<MAXLINEASTODO;i++)
{pointX[i]=0; pointY[i]=0; pointZ[i]=0;}
dibujaSIoNO=0;
int dibujaLinea=0;
int herramienta=0;
{
int i=0,j=0;
matRed=(int**)malloc(GETMAXY*sizeof(int*));
for(i=0;i<GETMAXX;i++)
matRed[i]=(int*)malloc(GETMAXX*sizeof(int));
matGreen=(int**)malloc(GETMAXY*sizeof(int*));
for(i=0;i<GETMAXX;i++)
matGreen[i]=(int*)malloc(GETMAXX*sizeof(int));
matBlue=(int**)malloc(GETMAXY*sizeof(int*));
for(i=0;i<GETMAXX;i++)
matBlue[i]=(int*)malloc(GETMAXX*sizeof(int));
int e=255;
for(i=0;i<GETMAXY;i++)
for(j=0;j<GETMAXX;j++)
{
matRed[i][j]=e;
matGreen[i][j]=e;
matBlue[i][j]=e;
}
}
procesoGlobal= ID_REDRAWMENUS;
int xMouseAnt=0, yMouseAnt=0;
int posTextMouseX=10,posTextMouseY=53;
int escribio=0;
int ActRedAnt=0,ActGreenAnt=0,ActBlueAnt=0;
lay.incrNodosRadiales=.05;
while(GetMessage(&Msg, NULL, 0, 0) > 0)
{
TranslateMessage(&Msg);
DispatchMessage(&Msg);
dibujaSIoNO=0;
colorMarcoMenu=1;
anchoCuadroMenu=20;
altoCuadroMenu=15;
menuArribaX=10;
menuArribaY=55;
if(xMouse>MINXDIB&&xMouse<MAXXDIB&&yMouse>MINYDIB&&yMouse<MAXYDIB)
{dibujaSIoNO=1;outext(" ",10,POS_Y_ESTADO1,0,0,0);dibujaSIoNO=0;}
if((xMouse!=xMouseAnt)||(yMouse!=yMouseAnt))
{
int i,j;
dibujaSIoNO=1;
for(i=posTextMouseX;i<posTextMouseX+80;i++)
for(j=posTextMouseY+4;j<posTextMouseY+16;j++)
put_pixel(200,200,200,i,j);
fs.outextInt(xMouse,posTextMouseX,posTextMouseY,0,0,0);
fs.outextInt(yMouse,posTextMouseX+50,posTextMouseY,0,0,0);
xMouseAnt=xMouse;yMouseAnt=yMouse;
dibujaSIoNO=0;
}
// ETIQUETAS DEL MENÚ ----------------------------------------------
colorMarcoMenu=1;
anchoCuadroMenu=20;
altoCuadroMenu=15;
menuArribaX=10;
menuArribaY=55;
register int con;
for(con=0;con<17;con++)
{
int xm1, ym1, xm2, ym2;
xm1=menuArribaX+con*anchoCuadroMenu*2+1;
xm2=menuArribaX+con*anchoCuadroMenu*2+36+1;
ym1=menuArribaY+2;
ym2=menuArribaY+18+2;
if(xMouse>xm1&&yMouse>ym1&&xMouse<xm2&&yMouse<ym2)
switch(con){
case 0: break;
case 1: break;
case 2:if(escribio==1)break;escribio=1;dibujaSIoNO=1;outext("+ lejos ",10,POS_Y_ESTADO1,0,0,0);dibujaSIoNO=0;break;
case 3:if(escribio==2)break;escribio=2;dibujaSIoNO=1;outext("+ cerca ",10,POS_Y_ESTADO1,0,0,0);dibujaSIoNO=0;break;
case 4:if(escribio==3)break;escribio=3;dibujaSIoNO=1;outext("izquierda ",10,POS_Y_ESTADO1,0,0,0);dibujaSIoNO=0;break;
case 5:if(escribio==4)break;escribio=4;dibujaSIoNO=1;outext("derecha ",10,POS_Y_ESTADO1,0,0,0);dibujaSIoNO=0;break;
case 6:if(escribio==5)break;escribio=5;dibujaSIoNO=1;outext("arriba ",10,POS_Y_ESTADO1,0,0,0);dibujaSIoNO=0;break;
case 7:if(escribio==6)break;escribio=6;dibujaSIoNO=1;outext("abajo ",10,POS_Y_ESTADO1,0,0,0);dibujaSIoNO=0;break;
// case 8: break;
// case 9: break;
case 8:if(escribio==7)break;escribio=7;dibujaSIoNO=1;outext("angulo x + ",10,POS_Y_ESTADO1,0,0,0);dibujaSIoNO=0;break;
case 9:if(escribio==8)break;escribio=8;dibujaSIoNO=1;outext("angulo x - ",10,POS_Y_ESTADO1,0,0,0);dibujaSIoNO=0;break;
case 10:if(escribio==9)break;escribio=9;dibujaSIoNO=1;outext("angulo y + ",10,POS_Y_ESTADO1,0,0,0);dibujaSIoNO=0;break;
case 11:if(escribio==10)break;escribio=10;dibujaSIoNO=1;outext("angulo x - ",10,POS_Y_ESTADO1,0,0,0);dibujaSIoNO=0;break;
case 12:if(escribio==11)break;escribio=11;dibujaSIoNO=1;outext("angulo z + ",10,POS_Y_ESTADO1,0,0,0);dibujaSIoNO=0;break;
case 13:if(escribio==12)break;escribio=12;dibujaSIoNO=1;outext("angulo z - ",10,POS_Y_ESTADO1,0,0,0);dibujaSIoNO=0;break;
case 14: break;
case 15:if(escribio==13)break;escribio=13;dibujaSIoNO=1;outext("ejemplo ",10,POS_Y_ESTADO1,0,0,0);dibujaSIoNO=0;break;
case 16:if(escribio==14)break;escribio=14;dibujaSIoNO=1;outext("borra ejemplo ",10,POS_Y_ESTADO1,0,0,0);dibujaSIoNO=0;break;
}
}
// HERRAMIENTAS PRINCIPAL --------------------------------------------------------
colorMarcoMenu=1;
anchoCuadroMenu=20;
altoCuadroMenu=15;
menuArribaX=10;
menuArribaY=2;
for(con=0;con<28;con++)
{
int xm1, ym1, xm2, ym2;
xm1=menuArribaX+con*anchoCuadroMenu*2+1;
xm2=menuArribaX+con*anchoCuadroMenu*2+37+1;
ym1=menuArribaY+2;
ym2=menuArribaY+19+2;
if(xMouse>xm1&&yMouse>ym1&&xMouse<xm2&&yMouse<ym2)
switch(con){
case 0: if(escribio==15)break;escribio=15;dibujaSIoNO=1;outext("script ",10,POS_Y_ESTADO1,0,0,0);dibujaSIoNO=0;break;
case 1: if(escribio==16)break;escribio=16;break;
case 2: if(escribio==17)break;escribio=17;/*procesoGlobal=ID_GUARDA;*/ break;
case 3: if(escribio==18)break;escribio=18;break;
case 4:if(escribio==19)break;escribio=19;dibujaSIoNO=1;outext("pincel ",10,POS_Y_ESTADO1,0,0,0);dibujaSIoNO=0;break;
case 5:if(escribio==20)break;escribio=20;dibujaSIoNO=1;outext("efecto ",10,POS_Y_ESTADO1,0,0,0);dibujaSIoNO=0;break;
case 6:if(escribio==21)break;escribio=21;dibujaSIoNO=1;outext("air brush ",10,POS_Y_ESTADO1,0,0,0);dibujaSIoNO=0;break;
case 7:if(escribio==22)break;escribio=22;dibujaSIoNO=1;outext("cuenta gotas ",10,POS_Y_ESTADO1,0,0,0);dibujaSIoNO=0;break;
case 8:if(escribio==23)break;escribio=23;dibujaSIoNO=1;outext("goma ",10,POS_Y_ESTADO1,0,0,0);dibujaSIoNO=0;break;
case 9:if(escribio==24)break;escribio=24;dibujaSIoNO=1;outext("figuras geometricas ",10,POS_Y_ESTADO1,0,0,0);dibujaSIoNO=0;break;
case 10:if(escribio==25)break;escribio=25;break;//dibuja20x38(rectangle,con,0);
case 11:if(escribio==26)break;escribio=26;break;//dibuja20x38(ellipse,con,0);
case 12:if(escribio==27)break;escribio=27;break; //dibuja20x38(polig,con,0);
case 13:if(escribio==28)break;escribio=28;break;
case 14:if(escribio==29)break;escribio=29;break;//dibuja20x38(screen3D,con,0);
case 15:if(escribio==30)break;escribio=30;break;//dibuja20x38(screen3D,con,0);
case 16:if(escribio==31)break;escribio=31;dibujaSIoNO=1;outext("layer ",10,POS_Y_ESTADO1,0,0,0);dibujaSIoNO=0;break;
case 17:if(escribio==32)break;escribio=32;dibujaSIoNO=1;outext("abre layer screen ",10,POS_Y_ESTADO1,0,0,0);dibujaSIoNO=0;break;
}
//---------------------- HERRAMIENTAS SECUNDARIO -------------------------------------
if(xMouse>xm1+7&&yMouse>ym1&&xMouse<xm2+7&&yMouse<ym2)
switch(con){
case 19: //rejilla, radial, siguiente, incremento, color
switch(principalTool) // cuadrado, redondo, rastrillo, diag izq, diag der, ovalado
{
case ID_PINCEL: if(escribio==33)break;escribio=33;dibujaSIoNO=1;outext("pincel cuadrado ",10,POS_Y_ESTADO1,0,0,0);dibujaSIoNO=0;break;
case ID_GUARDA: if(escribio==34)break;escribio=34;dibujaSIoNO=1;outext("guardar 2d ",10,POS_Y_ESTADO1,0,0,0);dibujaSIoNO=0;break;
case ID_LAYER: if(escribio==35)break;escribio=35;dibujaSIoNO=1; outext("rejilla ",10,POS_Y_ESTADO1,0,0,0);dibujaSIoNO=0;break;
case ID_EDIT: if(escribio==36)break;escribio=36;dibujaSIoNO=1; outext("editar layer ",10,POS_Y_ESTADO1,0,0,0);dibujaSIoNO=0;break;
case ID_EFECTO: if(escribio==37)break;escribio=37;dibujaSIoNO=1;outext("contraste ",10,POS_Y_ESTADO1,0,0,0);dibujaSIoNO=0;break;
} break;
case 20:
switch(principalTool)
{
case ID_PINCEL: if(escribio==38)break;escribio=38;dibujaSIoNO=1;outext("pincel redondo ",10,POS_Y_ESTADO1,0,0,0);dibujaSIoNO=0;break;
case ID_GUARDA: if(escribio==39)break;escribio=39;dibujaSIoNO=1;outext("guarda 3d ",10,POS_Y_ESTADO1,0,0,0);dibujaSIoNO=0;break;
case ID_LAYER: if(escribio==40)break;escribio=40;dibujaSIoNO=1; outext("radial ",10,POS_Y_ESTADO1,0,0,0);dibujaSIoNO=0;break;
case ID_EDIT: if(escribio==41)break;escribio=41;dibujaSIoNO=1; outext("editar script ",10,POS_Y_ESTADO1,0,0,0);dibujaSIoNO=0;break;
case ID_EFECTO: if(escribio==42)break;escribio=42;dibujaSIoNO=1;outext("resta ",10,POS_Y_ESTADO1,0,0,0);dibujaSIoNO=0;break;
} break;
case 21:
switch(principalTool)
{
case ID_PINCEL: if(escribio==43)break;escribio=43;dibujaSIoNO=1;outext("pincel rastrillo ",10,POS_Y_ESTADO1,0,0,0);dibujaSIoNO=0;break;
case ID_GUARDA: if(escribio==44)break;escribio=44;dibujaSIoNO=1;outext("guarda layer ",10,POS_Y_ESTADO1,0,0,0);dibujaSIoNO=0;break;
case ID_LAYER: if(escribio==45)break;escribio=45;dibujaSIoNO=1; outext("siguiente layer ",10,POS_Y_ESTADO1,0,0,0);dibujaSIoNO=0;break;
case ID_EFECTO: if(escribio==46)break;escribio=46;dibujaSIoNO=1;outext("negativo ",10,POS_Y_ESTADO1,0,0,0);dibujaSIoNO=0;break;
} break;
case 22:
switch(principalTool)
{
case ID_PINCEL: if(escribio==47)break;escribio=47;dibujaSIoNO=1;outext("pincel diagonal izq ",10,POS_Y_ESTADO1,0,0,0);dibujaSIoNO=0;break;
case ID_GUARDA: if(escribio==48)break;escribio=48;dibujaSIoNO=1;outext("guarda grupo layers ",10,POS_Y_ESTADO1,0,0,0);dibujaSIoNO=0;break;
case ID_LAYER: if(escribio==49)break;escribio=49;dibujaSIoNO=1; outext("incremento layer z ",10,POS_Y_ESTADO1,0,0,0);dibujaSIoNO=0;break;
case ID_EFECTO: if(escribio==50)break;escribio=50;dibujaSIoNO=1;outext("alargar pincelada ",10,POS_Y_ESTADO1,0,0,0);dibujaSIoNO=0;break;
} break;
case 23:
switch(principalTool)
{
case ID_PINCEL: if(escribio==51)break;escribio=51;dibujaSIoNO=1;outext("pincel diagonal der ",10,POS_Y_ESTADO1,0,0,0);dibujaSIoNO=0;break;
case ID_GUARDA: if(escribio==52)break;escribio=52;dibujaSIoNO=1;outext("guarda bmp ",10,POS_Y_ESTADO1,0,0,0);dibujaSIoNO=0;break;
//case ID_LAYER_CREA_TERMINARADIAL:
case ID_LAYER: if(escribio==53)break;escribio=53;dibujaSIoNO=1; outext("pts layer radial ",10,POS_Y_ESTADO1,0,0,0);dibujaSIoNO=0;break;
} break;
case 24:
switch(principalTool)
{
case ID_PINCEL: if(escribio==54)break;escribio=54;dibujaSIoNO=1;outext("pincel ovalado hor ",10,POS_Y_ESTADO1,0,0,0);dibujaSIoNO=0;break;
case ID_GUARDA: if(escribio==55)break;escribio=55;dibujaSIoNO=1;outext("guarda script ",10,POS_Y_ESTADO1,0,0,0);dibujaSIoNO=0;break;
case ID_LAYER: if(escribio==56)break;escribio=56;dibujaSIoNO=1; outext("incremento radial ",10,POS_Y_ESTADO1,0,0,0);dibujaSIoNO=0;break;
} break;
case 25:
switch(principalTool)
{
case ID_PINCEL: if(escribio==57)break;escribio=57;dibujaSIoNO=1;outext("pincel ovalado vert",10,POS_Y_ESTADO1,0,0,0);dibujaSIoNO=0;break;
case ID_LAYER: if(escribio==58)break;escribio=58;dibujaSIoNO=1; outext("valor z individual ",10,POS_Y_ESTADO1,0,0,0);dibujaSIoNO=0;break;
} break;
case 26:
switch(principalTool)
{
case ID_LAYER: if(escribio==59)break;escribio=59;dibujaSIoNO=1; outext("abre layer original ",10,POS_Y_ESTADO1,0,0,0);dibujaSIoNO=0;break;
} break;
case 27:
switch(principalTool)
{
case ID_LAYER: if(escribio==60)break;escribio=60;dibujaSIoNO=1; outext("suaviza color x100 ",10,POS_Y_ESTADO1,0,0,0);dibujaSIoNO=0;break;
} break;
}
}
// HERRAMIENTAS EN VALORES ARRIBA PRINCIPAL --------------------------------------------------------
colorMarcoMenu=1;
anchoCuadroMenu=20;
altoCuadroMenu=15;
//menuArribaX=170;
menuArribaY=24;
for(con=0;con<4;con++)
{
int xm1, ym1, xm2, ym2;
xm1=menuArribaX+con*anchoCuadroMenu*2+1; // 10 + 2*20*2 + 3
xm2=menuArribaX+con*anchoCuadroMenu*2+38; // 10 + 2*20*2 +38 = 128
ym1=menuArribaY+2;
ym2=menuArribaY+19+2;
if(xMouse>xm1&&yMouse>ym1&&xMouse<xm2&&yMouse<ym2)
switch(con){
case 0: break;
case 1: break;
case 2: if(escribio==56)break;escribio=56;dibujaSIoNO=1; outext("guardar ",10,POS_Y_ESTADO1,0,0,0);dibujaSIoNO=0;break;
case 3: break;
}
}
//=================================================================================================
//===================================