void clearworkarea( void ) { struct viewporttype t; getviewsettings( &t ); setviewport( 1 + align, 25, 638 + align, 346, 0 ); clearviewport( ); setviewport( t.left, t.top, t.right, t.bottom, t.clip ); }
/************************************************************************* * *N draw_text_row * *:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: * * Purpose: *P * This function draws annotation for a given row in the text * pseudo-primitive table. *E *:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: * * Parameters: *A * row <input>==(row_type) row of the text table. * table <input>==(vpf_table_type) text primitive table. * return <output>==(int) 0 if the user escapes, 1 upon successful * completion. *E *:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: * * History: *H * Barry Michaels August 1991 DOS Turbo C *E *************************************************************************/ int draw_text_row( row_type row, vpf_table_type table ) { int xscr,yscr, shape_pos, text_pos; ossim_int32 n, nshape; coordinate_type *shape_line; char *text; struct viewporttype vp; shape_pos = table_pos("SHAPE_LINE",table); /**** MUST CHECK FOR 'Z', 'B', AND 'Y' TYPES - SEE VPFPRIM.C ****/ shape_line = (coordinate_type *)get_table_element(shape_pos,row,table, NULL,&nshape); text_pos = table_pos("STRING",table); text = (char *)get_table_element(text_pos,row,table,NULL,&n); screenxy(shape_line[0].x,shape_line[0].y,&xscr,&yscr); getviewsettings(&vp); if ((gpgetfont() != DEFAULT_FONT) || (yscr > gptextheight(text))) { hidemousecursor(); gptext(xscr,yscr,text); showmousecursor(); } free(shape_line); free(text); while (kbhit()) { if (getch()==27) { return 0; } } return 1; }
void WorkArea::draw() { struct viewporttype vp; getviewsettings(&vp); setviewport(x1, y1, x2, y2, 1); setfillstyle(SOLID_FILL, bgCol); bar(x1, y1, x2, y2); items->drawAll(); setviewport(vp.left, vp.top, vp.right, vp.bottom, vp.clip); }
void WorkArea::clear() { delete items; struct viewporttype vp; getviewsettings(&vp); setviewport(x1, y1, x2, y2, 1); items = new List(); clearviewport(); setviewport(vp.left, vp.top, vp.right, vp.bottom, vp.clip); }
void DrawBorder(void) { struct viewporttype vp; setcolor( MaxColors - 1 ); /* Set current color to white */ setlinestyle( SOLID_LINE, 0, NORM_WIDTH ); getviewsettings( &vp ); rectangle( 0, 0, vp.right-vp.left, vp.bottom-vp.top ); }
void DrawFrame(HWND Window,int DrawLeft,int DrawTop, int DrawRight,int DrawBottom) { int SaveColor; struct viewporttype TmpViewPort; int Left,Top,Right,Bottom; MouseHidden(); SaveColor=getcolor(); getviewsettings(&TmpViewPort); WindowGetRealRect(Window,&Left,&Top,&Right,&Bottom); DrawLeft+=Left; DrawTop+=Top; DrawRight+=Left; DrawBottom+=Top; setviewport(DrawLeft,DrawTop,DrawRight,DrawBottom,1); Left-=DrawLeft; Top-=DrawTop; Right-=DrawLeft; Bottom-=DrawTop; setfillstyle(1,FRAMEBKCOLOR); bar(Left,Top,Right,Bottom); setcolor(FRAMECOLOR); Left+=2; Top+=2+CHARHEIGHT/2; Right-=2; Bottom-=2; if (Left<=2) Vline3DDown(DrawLeft,DrawTop,DrawRight,DrawBottom,Left,Top,Bottom); if (Right>=Right-Left-3) Vline3DDown(DrawLeft,DrawTop,DrawRight,DrawBottom,Right-1,Top,Bottom); if (Top<=2+CHARHEIGHT/2) Hline3DDown(DrawLeft,DrawTop,DrawRight,DrawBottom,Left+1,Right,Top); if (DrawBottom>=Bottom-Top-3) Hline3DDown(DrawLeft,DrawTop,DrawRight,DrawBottom,Left+2,Right-1,Bottom); ViewportDisplayString(WindowGetTitle(Window),Left+8,Top-CHARHEIGHT/2, FRAMECOLOR,FRAMEBKCOLOR); setviewport(TmpViewPort.left,TmpViewPort.top,TmpViewPort.right, TmpViewPort.bottom,TmpViewPort.clip); setcolor(SaveColor); MouseShow(); return; }
static long StatusProcedure(HWND Window,HMSG Message,long Param1,long Param2) { switch (Message) { case MOUSELEFTDOUBLE: MessageInsert(1,MENUCOMMAND,MENU_GOTOPAGE,0); return 0L; case WINDOWINIT: case WMPAINT: case REDRAWMESSAGE: case DRAWWINDOW: if (GlobalCurrentPage > 0) { struct viewporttype TmpViewPort; int Left,Top,Right,Bottom; char msg[80]; int pn; pn = PageHandleToNumber(GlobalCurrentPage)+1; if(TotalPage<pn) TotalPage=pn; // ByHance, 96,4.4 sprintf(msg,"ÇáËÉÅÅ°æ: µÚ%dÒ³,¹²%dÒ³",pn,TotalPage); if(fEditor) { //-- "±à¼" --- msg[4]='±'; msg[5]='à'; msg[6]='¼'; msg[7]=''; sprintf(&msg[strlen(msg)]," ÐÐ:%d",CurrentRow); } if (TextIsOverwrite()) strcat(msg," ¸Äд"); WindowDefaultProcedure(Window,Message,Param1,Param2); getviewsettings(&TmpViewPort); MouseHidden(); WindowGetRealRect(Window,&Left,&Top,&Right,&Bottom); setcolor(EGA_BLACK); rectangle(Left,Top,Right,Bottom); setviewport(Left+1,Top+1,Right-1,Bottom-1,1); setfillstyle(1,EGA_LIGHTGRAY); bar(0,0,Right-Left-3,Bottom-Top-3); ViewportDisplayString(msg,5,1,EGA_BLACK,EGA_LIGHTGRAY); setviewport(TmpViewPort.left,TmpViewPort.top,TmpViewPort.right, TmpViewPort.bottom,TmpViewPort.clip); MouseShow(); } break; default: return(WindowDefaultProcedure(Window,Message,Param1,Param2)); } return 0L; }
void main() { int gd=DETECT,gm,i,j,x,y,color,startcolor,height,width; struct palettetype palette; struct viewporttype vp; initgraph(&gd,&gm,"d:\\tc\\bgi"); getpalette(&palette); rectangle(0,20,639,479); outtextxy(200,10,"Palette demonstration"); getviewsettings(&vp); width=(vp.right-vp.left)/16; height=(vp.bottom-vp.top-20)/16; x=0; y=20; startcolor=0; for(j=0;j<=15;j++) { color=startcolor; for(i=0;i<=15;i++) { setfillstyle(SOLID_FILL,color++); bar(x,y,x+width,y+height); x=x+width+1; } startcolor++; x=0; y+=height+1; } getch(); while(!kbhit()) setpalette(random(16),random(65)); setallpalette(&palette); getch(); closegraph(); restorecrtmode(); }
void AmbienteProvas (void) { register char *pch; CriaJanelaGrafica (ESFORCO, 0, 0, MAXX, MAXY, 0, ""); AtivaJanelaGrafica(ESFORCO, 0); setcolor ( bea_color[14] ); Moldura(); setcolor ( bea_color[12] ); getviewsettings(&vp); pch = "ESC - Desiste F1 - Help ENTER - Continua DEL - Repete Ponto"; gprintf( DELTA_X(50) - textwidth(pch)/2, DELTA_Y(99) - CharH, pch); setcolor ( bea_color[15] ); } /* End of AmbienteProvas () */
void SayGoodbye(void) { struct viewporttype viewinfo; /* Structure to read viewport */ int h, w; MainWindow( "== Finale ==" ); getviewsettings( &viewinfo ); /* Read viewport settings */ changetextstyle( TRIPLEX_FONT, HORIZ_DIR, 4 ); settextjustify( CENTER_TEXT, CENTER_TEXT ); h = viewinfo.bottom - viewinfo.top; w = viewinfo.right - viewinfo.left; outtextxy( w/2, h/2, "That's all, folks!" ); StatusLine( "Press any key to EXIT" ); getch(); cleardevice(); /* Clear the graphics screen */ }
void TellFileName() // ByHance, 95,12.18 { #define X 32 #define Y 8 #define MAXLEN 26 char name[128]; int SaveColor=getcolor(); struct viewporttype ViewInformation; if(!DebugFileName[0]) strcpy(name,"ÎļþδÃüÃû"); else { int len; strcpy(name,DebugFileName); if( (len=strlen(name))>MAXLEN) // only display 32 chars memmove(name,&name[len-MAXLEN],MAXLEN+1); strupr(name); } getviewsettings(&ViewInformation); MouseHidden(); setviewport(0,0,getmaxx(),getmaxy(),1); setcolor(EGA_BLUE); bar(X,Y,X+MAXLEN*ASC16WIDTH,Y+ASC16HIGHT); DisplayString(name,X,Y,EGA_WHITE,EGA_BLUE); setcolor(SaveColor); setviewport(ViewInformation.left,ViewInformation.top, ViewInformation.right,ViewInformation.bottom, ViewInformation.clip); MouseShow(); #undef Y #undef X #undef MAXLEN } /* TellFileName */
static void DrawLine(int x0,int y0,int x1,int y1,int color) { int SaveColor; struct viewporttype SaveViewPort; MouseHidden(); getviewsettings(&SaveViewPort); SaveColor=getcolor(); setviewport(ScreenX,ScreenY,ScreenX+mXw-1,ScreenY+mYw-1,1); if (color<0) { setwritemode(XOR_PUT); color=-color; } else setwritemode(COPY_PUT); setcolor(color); line(x0,y0,x1,y1); setwritemode(COPY_PUT); setcolor(SaveColor); setviewport(SaveViewPort.left,SaveViewPort.top,SaveViewPort.right, SaveViewPort.bottom,SaveViewPort.clip); MouseShow(); }
void DadosPaciente() { char Resposta[2]; char t[46]; char *p_ch; int li, co, li_1, co_1, li_2, co_2, cor; t[0] = NULL; if (Primpac && !DadosPacienteOk) { novopac = TRUE; Primpac = FALSE; } else novopac = NovoPaciente(); AmbientePaciente(); setcolor (bea_color[15]); getviewsettings ( &vp ); do { /* ============ ENTRADA DO NOME DO PACIENTE ============== */ do { strcpy( t, Paciente.Nome ); LEITURA( 'c', textwidth("NOME: ") + DELTA_X ( 5), DELTA_Y ( 5), Paciente.Nome, 45, 0L, 0L ); if (Paciente.Nome[0] == ESC) { if (novopac) { /* Se ja tinha pac mas queria inserir outro */ zeraPaciente(); novopac=FALSE; Primpac=TRUE; } else { strcpy(Paciente.Nome, t); return; } /* devolve nome original */ } } while (*Paciente.Nome == NULL); do { /* ========= ENTRADA DO No PRONTUARIO DO PACIENTE ============== */ strcpy( t, Paciente.Prontuario ); LEITURA( 'n', textwidth("No DO PRONTUARIO: ") + DELTA_X (5), DELTA_Y (10), Paciente.Prontuario, 7, 0L, MAXLONG ); if (Paciente.Prontuario[0] == ESC) { if (novopac) { /* Se ja tinha pac mas queria inserir outro */ zeraPaciente(); novopac=FALSE; Primpac=TRUE; } else { strcpy(Paciente.Prontuario, t); return; } /* devolve nome original */ } LEITURA( 'n', textwidth("No DO PRONTUARIO: 1234567 ") + DELTA_X ( 5), DELTA_Y (10), digito, 1, 0L, 9L); if (digito[0] == ESC) { if (novopac) { /* Se ja tinha pac mas queria inserir outro */ zeraPaciente(); novopac=FALSE; Primpac=TRUE; } else { strcpy(Paciente.Prontuario, t); return; } /* devolve nome original */ } strcat(Paciente.Prontuario,digito); } while (*Paciente.Prontuario == NULL); /* ========= ENTRADA DO SEXO DO PACIENTE ============== */ strcpy( t, Paciente.Sexo ); co = textwidth("SEXO: ") + DELTA_X ( 5); li = DELTA_Y (15); do { LEITURA( 'c', co, li, Paciente.Sexo,1,0L,0L); if (Paciente.Sexo[0] == ESC) { if (novopac) { /* Se ja tinha pac mas queria inserir outro */ zeraPaciente(); novopac=FALSE; Primpac=TRUE; } else { strcpy(Paciente.Sexo,t); return; /* devolve nome original */ } } ApagaWord(co, li, 8); } while ( (Paciente.Sexo[0] != 'M') && (Paciente.Sexo[0] != 'F') ); if ( Paciente.Sexo[0] != 'M' ) outtextxy(co, li, " Feminino" ); else outtextxy(co, li, "Masculino"); /* ========= ENTRADA DA DATA DE NASCIMENTO ================ */ strcpy( t, Paciente.Dia ); co = textwidth("DATA DE NASCIMENTO: ") + DELTA_X ( 5); li = DELTA_Y (20); do { LEITURA( 'n', co, li, Paciente.Dia, 2, 1L, 31L); if (Paciente.Dia[0] == ESC) { if (novopac) { /* Se ja tinha pac mas queria inserir outro */ zeraPaciente(); novopac = FALSE; Primpac = TRUE; } else { strcpy(Paciente.Dia,t); return; } /* devolve nome original */ } } while (Paciente.Dia == NULL); chama( Paciente.Dia, co, li ); co += textwidth("00/"); strcpy( t, Paciente.Mes ); do { LEITURA( 'n', co, li, Paciente.Mes,2,1L,12L); if (Paciente.Mes[0]==ESC) { if (novopac) { /* Se ja tinha pac mas queria inserir outro */ zeraPaciente(); novopac=FALSE; Primpac=TRUE; } else { strcpy( Paciente.Mes, t ); return; } /* devolve nome original */ } } while (Paciente.Mes==NULL); chama(Paciente.Mes, co, li); co += textwidth("00/"); strcpy(t,Paciente.Ano); do { LEITURA( 'n', co, li, Paciente.Ano,2,1L,99L); if (Paciente.Ano[0]==ESC) { if (novopac) { /* Se ja tinha pac mas queria inserir outro */ zeraPaciente(); novopac=FALSE; Primpac=TRUE; } else { strcpy(Paciente.Ano,t); return; } /* devolve nome original */ } chama(Paciente.Ano, co, li); CalculaIdade(); ApagaWord( DELTA_X (50) + textwidth("IDADE: "), li, 2 ); gprintf ( DELTA_X (50) + textwidth("IDADE: "), li, "%2s", PacienteIdade); } while ( (atoi(PacienteIdade) < 5) || (atoi(PacienteIdade) > 90) ); co = textwidth("ADULTO ou CRIANCA ? (A/C): ") + DELTA_X ( 5); li = DELTA_Y (25); if ( (atoi(PacienteIdade) < 17) && (atoi(PacienteIdade) > 14) ) { do{ LEITURA( 'c', co, li, Paciente.Fase,1,0L,0L); } while ( (Paciente.Fase[0] != 'A') && (Paciente.Fase[0] != 'C') ); ApagaWord( co, li, 7 ); if (pertence(Paciente.Fase[0],"Aa" )) { outtextxy( co, li, " Adulto"); } else { outtextxy( co, li, "Crianca"); } } else { if (atoi(PacienteIdade) <= 14) *Paciente.Fase='C'; else *Paciente.Fase='A'; ApagaWord( co, li, 7 ); if (Paciente.Fase[0] == 'A') gprintf( co, li, " Adulto"); else gprintf( co, li, "Crianca"); } /* ========= ENTRADA DA ALTURA =============== */ co_1 = co; li_1 = li; co = textwidth("ALTURA (cm): ") + DELTA_X ( 5); li = DELTA_Y (30); LEITURA('n', co, li, Paciente.Altura, 3, 110L, 210L); if (Paciente.Altura[0] == ESC) { if (novopac) { /* Se ja tinha pac mas queria inserir outro */ zeraPaciente(); novopac=FALSE; Primpac=TRUE; } else { strcpy(Paciente.Altura,t); return; } /* devolve nome original */ } if (atoi(Paciente.Altura) > 170) { *Paciente.Fase='A'; ApagaWord(co_1, li_1, 7); gprintf(co_1, li_1, " Adulto"); } /* ========= ENTRADA DO PESO =============== */ co = textwidth("PESO (Kg): ") + DELTA_X ( 5); li = DELTA_Y (35); LEITURA('n',co, li, Paciente.Peso, 3, 16L, 150L); if (Paciente.Peso[0] == ESC) { if (novopac) { /* Se ja tinha pac mas queria inserir outro */ zeraPaciente(); novopac = FALSE; Primpac = TRUE; } else { strcpy(Paciente.Peso,t); return; } /* devolve nome original */ } CalculaSupCorporea(); co_1 = DELTA_X (50) + textwidth("SUPERFICIE CORPORAL: "); ApagaWord( co_1, li, 5); gprintf(co_1, li, "%-5.2f", SupCorp); /* ========= ENTRADA DE SE FUMANTE =============== */ co = textwidth("FUMANTE ? (S/N/E): ") + DELTA_X ( 5); li = DELTA_Y (40); if ( test( 'c',co, li, Paciente.Fumante , 1, 0L, 0L)); else return; co = DELTA_X (50); li = DELTA_Y (40); li_1 = DELTA_Y (43); li_2 = DELTA_Y (46); ApagaWord( co, li, 38 ); ApagaWord( co, li_1, 25 ); ApagaWord( co, li_2, 25 ); if (pertence(Paciente.Fumante[0],"Ss")) { co = DELTA_X (50) + textwidth("HA QUANTOS ANOS ? : "); co_1 = DELTA_X (50) + textwidth("No CIGARROS/DIA : "); co_2 = DELTA_X (50); cor = getcolor(); setcolor( bea_color[14] ); gprintf(co_2, li ,"HA QUANTOS ANOS ? : "); gprintf(co_2, li_1,"No CIGARROS/DIA : "); setcolor(cor); gprintf(co , li ,"%s", Paciente.tempfumo); gprintf(co_1, li_1,"%s", Paciente.cigardia); LEITURA('n',co , li , Paciente.tempfumo, 2, 1L, 99L); LEITURA('n',co_1, li_1, Paciente.cigardia, 2, 1L, 99L); } else if (pertence(Paciente.Fumante[0],"Ee")) { cor = getcolor(); setcolor( bea_color[14] ); gprintf(co, li , "HA QUANTO TEMPO PAROU ? : "" ANOS "); gprintf(co, li_1, "QUANTOS ANOS FUMOU ? : "); gprintf(co, li_2, "No CIGARROS/DIA : "); setcolor(cor); co = DELTA_X (50) + textwidth("HA QUANTO TEMPO PAROU ? : "); co_1 = DELTA_X (50) + textwidth("QUANTOS ANOS FUMOU ? : "); co_2 = DELTA_X (50) + textwidth("No CIGARROS/DIA : "); gprintf(co , li , "%s", Paciente.deixfumoA ); gprintf(co_1, li_1, "%s", Paciente.tempfumo ); gprintf(co_2, li_2, "%s", Paciente.cigardia ); LEITURA('n', co , li , Paciente.deixfumoA, 2, 1L, 99L); LEITURA('n', co_1, li_1, Paciente.tempfumo , 2, 1L, 99L); LEITURA('n', co_2, li_2, Paciente.cigardia , 2, 1L, 99L); } /* ========= ENTRADA DOS DADOS RESTANTES ========= */ p_ch = "TOSSE OU EXPECTORACAO (S/N): "; co = DELTA_X ( 5) + textwidth (p_ch); li = DELTA_Y (45); do LeituraC( co, li, TosseOuExpec, "SsNn" ); while (*TosseOuExpec == '\0'); p_ch = "CONVENIO: "; co = DELTA_X ( 5) + textwidth (p_ch); li = DELTA_Y (50); Leitura ( co, li, institu, 45 ); p_ch = "PACIENTE INTERNO OU AMBULATORIAL ? (I/A): "; LeituraC ( DELTA_X ( 5) + textwidth (p_ch), DELTA_Y (55), IouA, "IiAa" ); p_ch = "JUSTIFICATIVA PARA O EXAME: "; co = DELTA_X ( 5) + textwidth (p_ch); li = DELTA_Y (60); Leitura ( co, li, justif, 32); p_ch = "MEDICO REQUISITANTE: "; co = DELTA_X ( 5) + textwidth (p_ch); li = DELTA_Y (65); Leitura( co, li, medico, 38 ); p_ch = "SERVICO REQUISITANTE: "; co = DELTA_X ( 5) + textwidth (p_ch); li = DELTA_Y (70); Leitura( co, li, servico, 38 ); p_ch = "PACIENTE COM ALGUM DIAGNOSTICO DE DOENCA PULMONAR ? (S/N): "; LeituraC( DELTA_X ( 5) + textwidth (p_ch), DELTA_Y (75), temdiag, "SsNn" ); if (pertence(temdiag[0], "Ss" )) { cor = getcolor(); setcolor(bea_color[14]); p_ch = "DIAGNOSTICO: "; gprintf( DELTA_X ( 5), DELTA_Y (80), p_ch ); setcolor(cor); Leitura( DELTA_X ( 5) + textwidth (p_ch), DELTA_Y (80), diagnost, 30 ); } else { ApagaWord( DELTA_X ( 5), DELTA_Y (80), 45 ); } cor = getcolor(); setcolor(bea_color[14]); p_ch = "CIRURGIA PREVISTA - ESTIMATIVA DO RISCO CIRURGICO ? (S/N): "; gprintf( DELTA_X ( 5), DELTA_Y (85), p_ch ); setcolor(cor); LeituraC( DELTA_X ( 5) + textwidth (p_ch), DELTA_Y (85), RiscoCir, "SsNn" ); if ( (RiscoCir[0] == 'N') || (RiscoCir[0] == 'n') ) *RiscoCir = NULL; if ( *RiscoCir != NULL ) { cor = getcolor(); setcolor (bea_color[14]); p_ch = "CIRURGIA: (1 - ABDOMINAL ALTA 2 - TORACICA 3 - OUTRA): "; gprintf( DELTA_X ( 5), DELTA_Y (90), p_ch ); setcolor (cor); LeituraC( DELTA_X ( 5) + textwidth (p_ch), DELTA_Y (90), RiscoCir, "123" ); } else { ApagaWord( DELTA_X ( 5), DELTA_Y (90), 75 ); ApagaWord( DELTA_X ( 5), DELTA_Y (95), 18 ); } Resposta[0] = 'S'; Resposta[1] = NULL; cor = getcolor(); setcolor (bea_color[12]); p_ch = "Dados Corretos ? (S/N) "; co = DELTA_X(50) - (textwidth(p_ch))/2; co_1 = DELTA_X(50) + (textwidth(p_ch))/2; li = DELTA_Y(95); outtextxy( co, li, p_ch ); setcolor (cor); LeituraC( co_1, li, Resposta, "SsNn"); ApagaWord( co, li, 25 ); } while ( pertence(*Resposta,"Nn") ); CalculaCVteorico(); CalculaVVMteorico(); CalculaFLUXteorico(); DadosPacienteOk = TRUE; if (novopac) ZeraProvas(); } /* End of DadosPaciente() */
void VentVol ( void ) { int opcao1, opcao2; float far *apt1; float far *apt2; float far *apt3; float far *apt4; inicVVM1 = ApontVVM; inicVVM1Int = ApontVVMInt; menuVVM[0] = "EXECUTAR TESTE"; menuVVM[1] = " RETORNAR "; AmbienteVentVolMax(); getviewsettings(&vp); if (*inicVVM1 != NULL) { teste1VVM = TRUE ; GraficoVVMSecund(); grafSecundVVM = TRUE; } else { ManobVVMAtiva = 1; NumManobVVM = 0; teste1VVM = grafSecundVVM = FALSE; } teste2VVM = FALSE; do { Abortou = FALSE; LimpaBufferTeclado(); opcao1 = MenuVentVolMax(); if (opcao1 == EXECUTAR) { DesativaJanelaGrafica(MENU_3); if ((teste1VVM)&&(!grafSecundVVM)) { GraficoVVMSecund(); grafSecundVVM = TRUE; } else if (teste2VVM) { MelhorProvaVVM (ManobVVMAtiva, NumManobVVM); teste2VVM = FALSE; teste1VVM = TRUE ; #ifdef MODO_VGA_640X480_HIG AmbienteVentVolMax(); #endif MODO_VGA_640X480_HIG GraficoVVMSecund(); } AtivaJanelaGrafica(GRAF1,0); setcolor ( bea_color[14] ); clearviewport(); ProcuraZero(); if (ZeroOk) { inicVVM2 = inicVVM1; inicVVM1 = (inicVVM1 == areaTampao) ? areaVVM : areaTampao; inicVVM2Int = inicVVM1Int; inicVVM1Int = (inicVVM1Int == areaTampaoInt) ? areaVVMInt : areaTampaoInt; clearviewport(); getviewsettings(&vp); DesenhaEixos( DELTA_X( 4), DELTA_X(96), DELTA_Y( 4), DELTA_Y(98), DELTA_X( 2), DELTA_Y(24), DELTA_X(22), DELTA_Y(14) ); ScalaVVM(); DesativaJanelaGrafica(GRAF1); AtivaJanelaGrafica(MENU_3, 0); setcolor ( bea_color[14] ); menuVVM[0] = " INICIAR "; menuVVM[1] = " ANULAR "; do { ++NumManobVVM; testVVMOk = FALSE; LimpaBufferTeclado(); opcao2 = MenuVentVolMax(); if (opcao2 == INICIAR) { DesativaJanelaGrafica(MENU_3); AtivaJanelaGrafica(GRAF1, 0); setcolor ( bea_color[14] ); /* --------------- */ /* Executa Manobra */ /* --------------- */ Ventilation(); testVVMOk = TRUE; DesativaJanelaGrafica(GRAF1); } } while((opcao2 != ANULAR)&&(!testVVMOk)); if ((opcao2 == ANULAR)||(Abortou)) { --NumManobVVM; inicVVM1 = inicVVM2; inicVVM2 = NULL ; inicVVM1Int = inicVVM2Int; inicVVM2Int = NULL ; } ApontVVM = inicVVM1; ApontVVMInt = inicVVM1Int; AtivaJanelaGrafica(MENU_3,0); setcolor ( bea_color[14] ); menuVVM[0] = "EXECUTAR TESTE"; menuVVM[1] = " RETORNAR "; } else DesativaJanelaGrafica(GRAF1); } } while(opcao1 != RETORNAR); setcolor(bea_color[14]); if (teste2VVM) MelhorProvaVVM (ManobVVMAtiva, NumManobVVM); if (inicVVM1 == areaTampao) { for ( apt1 = areaTampao,apt2=areaVVM; apt1 != areaTampao+NUMMAXPONTOSINF; apt1++, apt2++ ) { *apt2 = *apt1; } ApontVVM = areaVVM; for ( apt3 = areaTampaoInt,apt4 = areaVVMInt; apt3 != areaTampaoInt + NUMMAXPONTOSINF; apt3++, apt4++) { *apt4 = *apt3; } ApontVVMInt = areaVVMInt; } else { ApontVVM = inicVVM1; ApontVVMInt = inicVVM1Int; } inicVVM1 = NULL; inicVVM2 = NULL; inicVVM1Int = NULL; inicVVM2Int = NULL; } /* VentVol */
void MelhorProvaVVM(int old, int nnew) { register int i, ncol, nlin, escala, y0, y1, y2; int y_ini0, y_ini1; int cor; int janelaAtiva; float far *apt; float far *aptaux; register float flux, sum_flux; float sum[4]; char *p_ch; char setaE[2], setaD[2]; setaE[0] = 27; setaD[0] = 26; setaE[1] = setaD[1] = '\0'; #ifndef MODO_VGA_640X480_HIG setactivepage(1); setvisualpage(1); #else MODO_VGA_640X480_HIG LimpaTela(); #endif MODO_VGA_640X480_HIG setviewport ( 0, 0, MAXX, MAXY, 1 ); clearviewport (); cor = getcolor(); setcolor (bea_color[12]); CriaJanelaGrafica( MANOB1, 0, 0, (int) ((MAXX * 49L)/100), (int) ((MAXY * 90L)/100), 0, "MANOBRA %02d", old ); clearviewport(); CriaJanelaGrafica( MANOB2, (int) ((MAXX * 51L)/100), 0, MAXX, (int) ((MAXY * 90L)/100), 0, "MANOBRA %02d", nnew ); clearviewport(); setcolor (cor); AtivaJanelaGrafica(MANOB1,0); setcolor ( bea_color[14] ); getviewsettings (&vp); DesenhaEixos( DELTA_X(2), DELTA_X(96), DELTA_Y(4), DELTA_Y(98), DELTA_X(6), DELTA_Y(22), DELTA_X(22),DELTA_Y(14) ); sum_flux = 0.0; escala = DELTA_Y(14); coluna = DELTA_X( 8); y0 = y_ini0 = DELTA_Y(76); y2 = y1 = y_ini1 = DELTA_Y(92); apt = inicVVM2; aptaux = inicVVM2Int; sum[0] = sum[1] = sum[2] = sum[3] = 0.0; ScalaVVMBetter(); for ( i = 0; (*apt != FIM_1) && (apt < inicVVM2 + NUMMAXPONTOSINF); apt++, i++ ) { flux = *aptaux; aptaux++; #ifdef VVM_ALCAP_ sum_flux += flux / SampleRatio; sum[0] = (.01 * sum_flux) + (.19 * sum[1]) + (.30 * sum[2]) + (.50 * sum[3]); sum[3] = sum[2]; sum[2] = sum[1]; sum[1] = sum[0]; #else VVM_ALCAP_ sum_flux = sum_flux; flux = flux; y_ini1 = y_ini1; y0 = y0; y1 = y1; y2 = y2; #endif VVM_ALCAP_ ncol = (int) ( (((long) i) * DELTA_X(88))/2400 + DELTA_X( 8) ); if ( ncol != coluna ) { cor = getcolor(); /* -------------------------- */ /* Tracado do Volume Expirado */ /* -------------------------- */ nlin = (int) ((y_ini0 - (((long) escala ) * (*apt))/10)); moveto(coluna, y0); lineto( coluna, nlin ); y0 = nlin; #ifdef VVM_ALCAP_ setcolor (bea_color[ 7]); /* ----------------------------- */ /* Tracado do Volume (Invertido) */ /* ----------------------------- */ nlin = (int) ((y_ini1 + (((long) escala ) * (sum_flux))/2)); moveto(coluna, y1); lineto( coluna, nlin ); y1 = nlin; setcolor (bea_color[11]); /* -------------------------------------------------- */ /* Tracado Valor Medio filtrado do Volume (Invertido) */ /* -------------------------------------------------- */ nlin = (int) ((y_ini1 + (((long) escala ) * (sum[0]))/2)); moveto(coluna, y2); lineto( coluna, nlin ); y2 = nlin; #endif VVM_ALCAP_ setcolor (cor); coluna = ncol; } } outtextxy(DELTA_X(10) , DELTA_Y(10), "Param Teor Calc %"); cor = getcolor (); setcolor (bea_color[15]); gprintf( DELTA_X(10), DELTA_Y(11) + CharH, "VVM %6.2f %6.2f %4.0f", VentVolMaxteorico, VentVolMax2, (VentVolMaxpercen2 + 0.5) ); #ifdef VVM_ALCAP_ gprintf (DELTA_X(10), DELTA_Y(12) + 2 * CharH, "ALCAP -- %7.2f - ", VolAlcaponado2); #endif VVM_ALCAP_ /* -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= */ setcolor (cor); AtivaJanelaGrafica(MANOB2,0); setcolor ( bea_color[14] ); getviewsettings (&vp); DesenhaEixos( DELTA_X(2), DELTA_X(96), DELTA_Y(4), DELTA_Y(98), DELTA_X(6), DELTA_Y(22), DELTA_X(22),DELTA_Y(14) ); sum_flux = 0.0; escala = DELTA_Y(14); coluna = DELTA_X( 8); y0 = y_ini0 = DELTA_Y(76); y2 = y1 = y_ini1 = DELTA_Y(92); apt = inicVVM1; aptaux = inicVVM1Int; sum[0] = sum[1] = sum[2] = sum[3] = 0.0; ScalaVVMBetter(); for ( i = 0; (*apt != FIM_1) && (apt < inicVVM1 + NUMMAXPONTOSINF); apt++, i++ ) { flux = *aptaux; aptaux++; #ifdef VVM_ALCAP_ sum_flux += flux / SampleRatio; sum[0] = (.01 * sum_flux) + (.19 * sum[1]) + (.30 * sum[2]) + (.50 * sum[3]); sum[3] = sum[2]; sum[2] = sum[1]; sum[1] = sum[0]; #endif VVM_ALCAP_ ncol = (int) ( (((long) i) * DELTA_X(88))/2400 + DELTA_X( 8) ); if ( ncol != coluna ) { cor = getcolor(); /* -------------------------- */ /* Tracado do Volume Expirado */ /* -------------------------- */ nlin = (int) ((y_ini0 - (((long) escala ) * (*apt))/10)); moveto(coluna, y0); lineto( coluna, nlin ); y0 = nlin; #ifdef VVM_ALCAP_ setcolor (bea_color[ 7]); /* ----------------------------- */ /* Tracado do Volume (Invertido) */ /* ----------------------------- */ nlin = (int) ((y_ini1 + (((long) escala ) * (sum_flux))/2)); moveto(coluna, y1); lineto( coluna, nlin ); y1 = nlin; setcolor (bea_color[11]); /* -------------------------------------------------- */ /* Tracado Valor Medio filtrado do Volume (Invertido) */ /* -------------------------------------------------- */ nlin = (int) ((y_ini1 + (((long) escala ) * (sum[0]))/2)); moveto(coluna, y2); lineto( coluna, nlin ); y2 = nlin; #endif VVM_ALCAP_ setcolor (cor); coluna = ncol; } } outtextxy(DELTA_X(10) , DELTA_Y(10), "Param Teor Calc %"); cor = getcolor (); setcolor (bea_color[15]); gprintf( DELTA_X(10) , DELTA_Y(11) + CharH, "VVM %6.2f %6.2f %4.0f", VentVolMaxteorico, VentVolMax, (VentVolMaxpercent + 0.5) ); #ifdef VVM_ALCAP_ gprintf (DELTA_X(10), DELTA_Y(12) + 2 * CharH, "ALCAP -- %7.2f - ", VolAlcaponado); #endif VVM_ALCAP_ setcolor (cor); DesativaJanelaGrafica(MANOB2); cor = getcolor(); setcolor (bea_color[12]); p_ch = "ESCOLHA DA MELHOR MANOBRA (%1s %1s)"; gprintf((MAXX - textwidth(p_ch))/2, (int) ((MAXY * 95L)/100), p_ch, setaE, setaD); AtivaJanelaGrafica(MANOB1,0); setcolor ( bea_color[14] ); janelaAtiva = 0; do { LimpaBufferTeclado(); sc.c = LeTeclado(); if (sc.ch[0] == 0) if (sc.ch[1]==75 || sc.ch[1]==77) { DesativaJanelaGrafica(janelaAtiva); janelaAtiva = (janelaAtiva + 1) % 2; AtivaJanelaGrafica(janelaAtiva,0); setcolor ( bea_color[14] ); } } while(sc.ch[0] != ENTER); setcolor (cor); DesativaJanelaGrafica(janelaAtiva); if (janelaAtiva == 0) { inicVVM1 = inicVVM2; inicVVM1Int = inicVVM2Int; VentVolMax = VentVolMax2; VentVolMaxpercent = VentVolMaxpercen2 ; VolAlcaponado = VolAlcaponado2; } else ManobVVMAtiva = nnew; #ifndef MODO_VGA_640X480_HIG setactivepage(0); setvisualpage(0); #endif MODO_VGA_640X480_HIG } /* MelhorProvaVVM */
void GraficoVVMSecund (void) { register int i, ncol, nlin, escala, y0, y1, y2; int y_ini0, y_ini1; int cor; float far *apt; float far *aptaux; register float flux, sum_flux; float sum[4]; inicVVM2 = inicVVM1; inicVVM2Int = inicVVM1Int; AtivaJanelaGrafica(GRAF2,0); setcolor ( bea_color[14] ); clearviewport(); getviewsettings (&vp); DesenhaEixos( DELTA_X( 5), DELTA_X(97), DELTA_Y( 4), DELTA_Y(80), DELTA_X( 4), DELTA_Y(20), DELTA_X(22), DELTA_Y(11) ); sum_flux = 0.0; escala = DELTA_Y(11); coluna = DELTA_X( 9); y0 = y_ini0 = DELTA_Y(60); y2 = y1 = y_ini1 = DELTA_Y(75); apt = inicVVM2; aptaux = inicVVM2Int; sum[0] = sum[1] = sum[2] = sum[3] = 0.0; ScalaVVMSecund(); for ( i = 0; (*apt != FIM_1) && (apt < inicVVM2 + NUMMAXPONTOSINF); apt++, i++ ) { flux = *aptaux; aptaux++; #ifdef VVM_ALCAP_ sum_flux += flux / SampleRatio; sum[0] = (.01 * sum_flux) + (.19 * sum[1]) + (.30 * sum[2]) + (.50 * sum[3]); sum[3] = sum[2]; sum[2] = sum[1]; sum[1] = sum[0]; #else VVM_ALCAP_ sum_flux = sum_flux; flux = flux; y_ini1 = y_ini1; y0 = y0; y1 = y1; y2 = y2; #endif VVM_ALCAP_ ncol = (int) ( (((long) i) * DELTA_X(88))/2400 + DELTA_X( 9) ); if ( ncol != coluna ) { cor = getcolor(); /* -------------------------- */ /* Tracado do Volume Expirado */ /* -------------------------- */ nlin = (int) ((y_ini0 - (((long) escala ) * (*apt))/10)); moveto(coluna, y0); lineto( coluna, nlin ); y0 = nlin; #ifdef VVM_ALCAP_ setcolor (bea_color[ 7]); /* ----------------------------- */ /* Tracado do Volume (Invertido) */ /* ----------------------------- */ nlin = (int) ((y_ini1 + (((long) escala ) * (sum_flux))/2)); moveto(coluna, y1); lineto( coluna, nlin ); y1 = nlin; setcolor (bea_color[11]); /* -------------------------------------------------- */ /* Tracado Valor Medio filtrado do Volume (Invertido) */ /* -------------------------------------------------- */ nlin = (int) ((y_ini1 + (((long) escala ) * (sum[0]))/2)); moveto(coluna, y2); lineto( coluna, nlin ); y2 = nlin; #endif VVM_ALCAP_ setcolor (cor); coluna = ncol; } } VentVolMax2 = VentVolMax; VentVolMaxpercen2 = VentVolMaxpercent; VolAlcaponado2 = VolAlcaponado; outtextxy( DELTA_X ( 5), DELTA_Y (85), "Param Teor Calc %"); cor = getcolor (); setcolor (bea_color[15]); gprintf( DELTA_X ( 5), DELTA_Y (87) + CharH, "VVM %6.2f %6.2f %4.0f", VentVolMaxteorico, VentVolMax2, (VentVolMaxpercen2 + 0.5)); #ifdef VVM_ALCAP_ gprintf (DELTA_X( 5), DELTA_Y(89) + 2 * CharH, "ALCAP -- %7.2f - ", VolAlcaponado2); #endif VVM_ALCAP_ setcolor (cor); DesativaJanelaGrafica(GRAF2); } /* GraficoVVMSecund */
void Ventilation (void) { register int flagvvm = 0; register int ncol, nlin, escala, y0, y1, y2; int y_ini0, y_ini1; int cor; float far *apt; float far *aptaux; register float flux, sum_flux; float sum[4]; #ifdef BYPASS_VVM int step = 0; int offset = 0; #endif BYPASS_VVM LeData (); getviewsettings (&vp); VentVolMax = sum_flux = 0.0; NumeroSinal = 0; escala = DELTA_Y(14); coluna = DELTA_X( 6); y0 = y_ini0 = DELTA_Y(74); y2 = y1 = y_ini1 = DELTA_Y(90); apt = inicVVM1; aptaux = inicVVM1Int; Atendeu = FALSE; sum[0] = sum[1] = sum[2] = sum[3] = 0.0; LinBaseVVM1 = LinBaseVVM2 =0.0; #ifndef BYPASS_HADWARE #ifndef BYPASS_VVM IniAquisition(); EnableInt(); #endif BYPASS_VVM #endif BYPASS_HADWARE do { #ifndef BYPASS_VVM DisableInt(); #endif BYPASS_VVM Help = kbhit() && (ESC == getch()); #ifndef BYPASS_VVM EnableInt(); #endif BYPASS_VVM if (Help) Abortou = TRUE; else { #ifndef BYPASS_VVM while(!Atendeu); Sinal -= (int)Zero; #else BYPASS_VVM Sinal = 14; #endif BYPASS_VVM Atendeu = FALSE; } } while( (abs(Sinal) < 10) && (!Abortou) ); if (!Abortou) { #ifdef GRAVACAO_DE_DADOS fprintf ( PDados, "\n\n\t %%%%%%%%%%% VENTVOL: %%%%%%%%%%%"); #endif GRAVACAO_DE_DADOS do { #ifndef BYPASS_VVM DisableInt(); #endif BYPASS_VVM Help = kbhit() && (ESC == getch()); #ifndef BYPASS_VVM EnableInt(); #endif BYPASS_VVM if (Help) Abortou = TRUE; else { #ifndef BYPASS_VVM while(!Atendeu); *aptaux = flux = (Sinal > Zero) ? VDxFluxo ( Sinal , GanhoExp ): VDxFluxo ( Sinal , GanhoIns ); #else BYPASS_VVM /* ----------------------------- */ /* Simulacao de um Alcaponamento */ /* ----------------------------- */ if (!(NumeroSinal % 15)) { offset = -1; } else { offset = 0; } if ( NumeroSinal > 1200 ) { offset = -2; } if ( NumeroSinal > 1300 ) { offset = 0; } *aptaux = flux = 10 * cos ( (M_PI * step++) /60) + offset; #endif BYPASS_VVM #ifdef GRAVACAO_DE_DADOS fprintf ( PDados, "\n\t%04X", Sinal); #endif GRAVACAO_DE_DADOS if (*aptaux > 0.0) { VentVolMax += flux / SampleRatio; flagvvm = 1; } #ifdef VVM_ALCAP_ sum_flux += flux / SampleRatio; sum[0] = (.01 * sum_flux) + (.19 * sum[1]) + (.30 * sum[2]) + (.50 * sum[3]); sum[3] = sum[2]; sum[2] = sum[1]; sum[1] = sum[0]; /* --------------------------- */ /* Calculo das Linhas de Base */ /* para obtencao do valor do */ /* volume Alcaponado. */ /* */ /* Convecionou-se: */ /* LBASE1 -> Volume Medio Entre*/ /* 2 e 3 segundos. */ /* */ /* LBASE2 -> Volume Medio Entre*/ /* 10 e 11 segundos. */ /* */ /* Volume Acapondado Extrapola-*/ /* do a um minuto sera a dife- */ /* das das linhas de Base vezes*/ /* 7.5 (que e'60/8) */ /* --------------------------- */ if ( (NumeroSinal >= 200) && (NumeroSinal < 400) ) /* ------- */ /* LBASE_1 */ /* ------- */ { LinBaseVVM1 += sum[0]; } else if ( (NumeroSinal >= 2000) && (NumeroSinal < 2200) ) /* ------- */ /* LBASE_2 */ /* ------- */ { LinBaseVVM2 += sum[0]; } #else VVM_ALCAP_ sum_flux = sum_flux; y_ini1 = y_ini1; y0 = y0; y1 = y1; y2 = y2; #endif VVM_ALCAP_ if (flagvvm) { *apt = VentVolMax; /* --------------------------- */ /* Um ponto chega a cada 5ms */ /* Totalizando 2400 ptos em 12s*/ /* Os 12s medem DELTA_X(88), */ /* logo a coluna atual depende */ /* de NumSinal segundo a formu-*/ /* la abaixo: */ /* --------------------------- */ ncol = (int) ( (((long) NumeroSinal) * DELTA_X(88))/2400 + DELTA_X( 6) ); if ( ncol != coluna ) { cor = getcolor(); /* -------------------------- */ /* Tracado do Volume Expirado */ /* -------------------------- */ nlin = (int) ((y_ini0 - (((long) escala ) * VentVolMax)/10)); moveto(coluna, y0); lineto( coluna, nlin ); y0 = nlin; #ifdef VVM_ALCAP_ setcolor (bea_color[ 7]); /* ----------------------------- */ /* Tracado do Volume (Invertido) */ /* ----------------------------- */ nlin = (int) ((y_ini1 + (((long) escala ) * (sum_flux))/2)); moveto(coluna, y1); lineto( coluna, nlin ); y1 = nlin; setcolor (bea_color[11]); /* -------------------------------------------------- */ /* Tracado Valor Medio Filtrado do Volume (Invertido) */ /* -------------------------------------------------- */ nlin = (int) ((y_ini1 + (((long) escala ) * (sum[0]))/2)); moveto(coluna, y2); lineto( coluna, nlin ); y2 = nlin; #endif VVM_ALCAP_ setcolor (cor); coluna = ncol; } ++NumeroSinal; } ++apt; ++aptaux; Atendeu = FALSE; } } while ( (NumeroSinal != NUMMAXPONTOSINF-1) && (coluna != DELTA_X(88) + DELTA_X( 6)) && (!Abortou) ); #ifndef BYPASS_VVM DisableInt(); #endif BYPASS_VVM for (; apt<inicVVM1+NUMMAXPONTOSINF; apt++) { *apt = FIM_1; } *aptaux = END; *(aptaux+1) = TempAmb; *(aptaux+2) = UmidRel; *(aptaux+3) = PresBar; if (!Abortou) { if (FlagIntegridade) ReCalcula(); CalculaParamVVM(); CalculaVVMpercent(); outtextxy(DELTA_X(25) , DELTA_Y( 5), "Param Teorico Calculado %"); cor = getcolor(); setcolor(bea_color[15]); gprintf (DELTA_X(25) , DELTA_Y( 6) + CharH, "VVM %6.2f %6.2f %4.0f", VentVolMaxteorico, VentVolMax, (VentVolMaxpercent+0.5)); #ifdef VVM_ALCAP_ gprintf (DELTA_X(25) , DELTA_Y( 7) + 2 * CharH, "ALCAP -- %7.2f - ", VolAlcaponado); #endif VVM_ALCAP_ setcolor(cor); if (teste1VVM) { teste2VVM = TRUE; teste1VVM = FALSE; } else teste1VVM = TRUE; } } #ifndef BYPASS_VVM else DisableInt(); #endif BYPASS_VVM } /* Ventilation */
int MenuVentVolMax ( void ) { int Cont = 0, Lin[2], alt; Lin[0] = 35; Lin[1] = 60; AtivaJanelaGrafica(MENU_3,0); setcolor ( bea_color[14] ); getviewsettings(&vp); alt = CharH; setviewport( vp.left , vp.top + DELTA_Y(Lin[Cont]) - 1, vp.right, vp.top + DELTA_Y(Lin[Cont]) + 1 + alt, 1); clearviewport(); setfillstyle(1, bea_color[14]); floodfill(1,1,1); setcolor(bea_color[ 0]); outtextxy( DELTA_X(50) - textwidth(menuVVM[Cont])/2, 2, menuVVM[Cont]); setviewport( vp.left , vp.top + DELTA_Y(Lin[1]) - 1, vp.right, vp.top + DELTA_Y(Lin[1]) + 1 + alt, 1); clearviewport(); setfillstyle(1, bea_color[0]); floodfill(1,1,1); setcolor(bea_color[14]); outtextxy( DELTA_X(50) - textwidth(menuVVM[1])/2, 2, menuVVM[1]); do { LimpaBufferTeclado(); sc.c = LeTeclado(); if (sc.ch[0] == 0) if (sc.ch[1]==72 || sc.ch[1]==80) { setviewport( vp.left , vp.top + DELTA_Y(Lin[Cont]) - 1, vp.right, vp.top + DELTA_Y(Lin[Cont]) + 1 + alt, 1); clearviewport(); setcolor(bea_color[14]); outtextxy( DELTA_X(50) - textwidth(menuVVM[Cont])/2, 2, menuVVM[Cont]); Cont = (Cont + 1) % 2; setviewport( vp.left , vp.top + DELTA_Y(Lin[Cont]) - 1, vp.right, vp.top + DELTA_Y(Lin[Cont]) + 1 + alt, 1); clearviewport(); setfillstyle(1, bea_color[14]); floodfill(1,1,1); setcolor(bea_color[0]); outtextxy( DELTA_X(50) - textwidth(menuVVM[Cont])/2, 2, menuVVM[Cont]); } } while(sc.ch[0] != ENTER); setviewport(vp.left,vp.top,vp.right,vp.bottom,1); return(Cont); } /* MenuVentVolMax */
static int CreatDialogBox(Dialogs *DialogItems, HWND *DefaultActiveWindow) { HWND MidWindow; char *pImage; int i,j,TotalItem,CurrentDefaultClass=0; Function *fun=(DialogItems[0]).ItemProcedure; if(DialogImageN>=MAXIMAGENUM) return -1; i=imagesize( DialogItems[0].ItemLeft-1,DialogItems[0].ItemTop-1, DialogItems[0].ItemRight,DialogItems[0].ItemBottom ); pImage=(char *)malloc(i); //if(pImage==NULL) if(pImage<0x1000) { ReportMemoryError("creatdialog"); return -1; } { int Left,Top,Right,Bottom; struct viewporttype TmpViewPort; MouseHidden(); getviewsettings(&TmpViewPort); WindowGetRealRect(1,&Left,&Top,&Right,&Bottom); setviewport(Left,Top,Right,Bottom,1); getimage( DialogItems[0].ItemLeft-1,DialogItems[0].ItemTop-1, DialogItems[0].ItemRight,DialogItems[0].ItemBottom, pImage); setviewport(TmpViewPort.left,TmpViewPort.top,TmpViewPort.right, TmpViewPort.bottom,TmpViewPort.clip); MouseShow(); } if (fun==NULL) fun=(Function *)DialogDefaultProcedure; MidWindow=CreatWindow((DialogItems[0]).ItemLeft,(DialogItems[0]).ItemTop, (DialogItems[0]).ItemRight, (DialogItems[0]).ItemBottom,0, fun, 2|16|WindowSetIsFocusAlways, (DialogItems[0]).ItemTitle,NULL); if(MidWindow<0) // ByHnace { free(pImage); return(MidWindow); } DialogImage[DialogImageN++]=pImage; if ((DialogItems[0]).ItemType!=GLOBALITEM) return(MidWindow); else TotalItem=(DialogItems[0]).ItemTotal; for (i=1,j=0;j<TotalItem;j++) i+=CreatSubDialogBox(&DialogItems[i],MidWindow,DefaultActiveWindow, &CurrentDefaultClass); return(MidWindow); }
/************************************************************************* * *N displayerror * *:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: * * Purpose: *P * This function displays an error message when a disk error is detected. * It displays the given lines of text in a popup panel and waits for * the user to click on either retry or cancel. It returns 1 for retry * and 0 for cancel. Must be in graphics mode to call this function. * * text strings may contain embedded newlines, in which case text to the * right of the newline will be displayed on (what else?) a new line. *E *:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: * * Parameters: *A * text[] <input> == (char *) array of text strings to be displayed. * nlines <input> == (int) number of lines of text (this count ignores * newline characters embedded in the text * strings * return <output> == (VPF_BOOLEAN) 1 => retry, * 0 => cancel. *E *:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: * * History: *H * Barry Michaels July 1990 Prototype 3 DOS Turbo C *E *************************************************************************/ VPF_BOOLEAN displayerror( char *text[], int nlines ) { register int i; int maxw, height, x, y, pad, choice, n_real_lines; panel_type panel; int retry_button = 'r', cancel_button = 'c', msg_ar_sz = 10; char * walker, ** msgs; struct viewporttype view; getviewsettings( &view ); setviewport(0,0,getmaxx(),getmaxy(),1); settextstyle( SMALL_FONT, HORIZ_DIR, 4 ); msgs = (char **) vpfmalloc(msg_ar_sz * sizeof(char *)); maxw = height = 0; for (n_real_lines = i = 0; i < nlines; i++) { walker = text[i]; while (1) { size_t substr_len = strcspn(walker, "\n"); char plug; maxw = max(maxw, textwidth(walker)); height = height + textheight(walker) + 5; plug = walker[substr_len]; walker[substr_len] = '\0'; msgs[n_real_lines++] = strdup(walker); if (n_real_lines == msg_ar_sz) msgs = (char **) realloc(msgs, (msg_ar_sz += 5) * sizeof(char *)); if (plug == 0) break; walker[substr_len] = plug; walker += substr_len + 1; } } if (maxw < (textwidth("Retry") + textwidth("Cancel") + 20)) maxw = textwidth("Retry") + textwidth("Cancel") + 20; pad = (maxw*10)/100; maxw = maxw + (2*pad); height = height + 2*(textheight("Retry") + 5) + 1; maxw = min(getmaxx(), maxw); height = min(getmaxy()-10, height); create_panel( &panel, maxw, height, menucolor, menubordercolor ); for (y = i = 0; i < n_real_lines; i++) { create_label(msgs[i], pad, y, SMALL_FONT, 4, menutextcolor, &panel ); y += textheight(msgs[i]) + 3; } y = height-15; create_button( retry_button, "Retry", 3, y, SMALL_FONT, 4, menutextcolor, menucolor, menubordercolor, RELIEVED, &panel ); create_button( cancel_button, "Cancel", maxw - (textwidth("Cancel") + 13), y, SMALL_FONT, 4, menutextcolor, menucolor, menubordercolor, RELIEVED, &panel ); get_display_position( &x, &y, panel.window ); display_panel( &panel, x,y ); showmousecursor(); arrow_cursor(); choice = process_panel( &panel, 0 ); hidemousecursor(); destroy_panel( &panel ); close_panel( &panel ); setviewport(view.left,view.top,view.right,view.bottom,view.clip); for (i = 0; i < n_real_lines; i++) free(msgs[i]); free(msgs); return (choice == retry_button) ? 1 : 0; }
void WorkArea::load(FILE *f) { delete items; struct viewporttype vp; getviewsettings(&vp); setviewport(x1, y1, x2, y2, 1); items = new List(); clearviewport(); int fig, i, a[200]; char *stream = (char*) malloc(1000*sizeof(char)); char *n, *temp; while (fgets(stream, 1000, f)) { i = -1; temp = stream; while ((n = strtok(temp, " ")) != NULL) { if (i == -1) { i = 0; fig = atoi(n); } else a[i++] = atoi(n); temp = NULL; } switch (fig) { case LINE_ID: items->add(new Node(new Line(a))); break; case POLYLINE_ID: items->add(new Node(new Polyline(a))); break; case CIRCLE_ID: items->add(new Node(new Circle(a))); break; case ELLIPSE_ID: items->add(new Node(new Ellipse(a))); break; case RECTANGLE_ID: items->add(new Node(new Rectangle(a))); break; case FILLED_CIRCLE_ID: items->add(new Node(new FilledCircle(a))); break; case FILLED_ELLIPSE_ID: items->add(new Node(new FilledEllipse(a))); break; case FILLED_RECTANGLE_ID: items->add(new Node(new FilledRectangle(a))); break; } } free(stream); mouse_off(); items->drawAll(); mouse_on(); setviewport(vp.left, vp.top, vp.right, vp.bottom, vp.clip); }
static unsigned long DirectoryList(HWND Window,HMSG Message,long Param1,long Param2) { int hlist; switch (Message) { case WINDOWINIT: { //int i,j; char *dirs=NowOpenFile->dirs; char *drive=NowOpenFile->drive; #ifdef _TURBOC_ struct ffblk opffblk; #else struct find_t opffblk; #endif char fn[128]; int r; MessageGo(Window,LISTSETITEMHEIGHT,16,0); MessageGo(Window,LISTSETITEMLENGTH,13,0); /*------ ByHance, 96,3.25 ---- hlist = WindowList(Window); ListSetTotal(hlist,0); ListSetCurrent(hlist,0); ListSetTop(hlist,0); --------------------*/ MessageGo(Window,LISTDELETEALL,0L,0L); // _harderr(handler); if( ! drive[0] ) { // *drive = (char)getdisk()+'A'; *drive = (char)getdisk()+'A'-1; *(drive+1) = ':'; *(drive+2) = 0; } if( !dirs[0] ) { #ifdef __TURBOC__ getcurdir((int)(*drive-'A'+1), dirs); #else unsigned total,old; _dos_getdrive(&old); if(old!=*drive-'A'+1) _dos_setdrive( *drive-'A'+1 , &total ); getcwd(dirs, 64); memmove(dirs,dirs+3,61); // cancel "C:\" if(!dirs[0]) strcpy(dirs,"\\"); if(old!=*drive-'A'+1) _dos_setdrive( old, &total ); #endif } memset(&opffblk, 0, sizeof(opffblk)); strcpy(fn,drive); //if( strcmp(dirs,"\\") && strcmp(dirs,"/") ) //{ // strcat(fn,dirs); // strcat(fn,"\\"); //} if(dirs[0]) { char ch; int len; ch=dirs[0]; if(ch!='\\' && ch!='/') strcat(fn,"\\"); strcat(fn,dirs); len=strlen(fn); ch=fn[len-1]; if(ch!='\\' && ch!='/') strcat(fn,"\\"); } strcat(fn,"*.*"); r = findfirst(fn, &opffblk, FA_DIREC); while (!r) { if((opffblk.ff_attrib & FA_DIREC) && strcmp(opffblk.ff_name,".")) MessageGo(Window, LISTINSERTITEMSORTED, FP2LONG(opffblk.ff_name), 0L); r = findnext(&opffblk); } //MessageGo(Window,WMPAINT,0,ListGetHeight(hlist)*CHARHEIGHT); // ByHance, 95,12.11 MessageInsert(Window,REDRAWMESSAGE,0L, MAKELONG(WindowGetWidth(Window),WindowGetHeight(Window)) ); { /*--- display directory's name ----*/ #define max_n (304/ASC16WIDTH) int x,y,w,h; unsigned total,old; int len; int SaveColor; struct viewporttype TmpViewPort; char disk[20],dirs[64],file[14],ext[5]; strupr(fn); _splitpath(fn,disk,dirs,file,ext); _dos_getdrive(&old); if(old!=disk[0]-'A'+1) _dos_setdrive( disk[0]-'A'+1 , &total ); len=strlen(dirs); if(len>1) { char ch=dirs[len-1]; if(ch=='\\' || ch=='/') dirs[len-1]=0; } chdir(dirs); getcwd(dirs, 64); _dos_setdrive( old, &total ); MouseHidden(); SaveColor=getcolor(); getviewsettings(&TmpViewPort); setviewport(0,0,getmaxx(),getmaxy(),1); WindowGetRealRect(Window,&x,&y,&w,&h); y-=26; len=strlen(dirs); if(len>max_n) { int i; i=len-1; while(dirs[i]!='\\' && dirs[i]!='/' && i>max_n-12) i--; strcpy(dirs,"..."); strcat(dirs,&dirs[i]); } // WaitMessageEmpty(); setfillstyle(1,EGA_LIGHTGRAY); bar(x,y,x+304,y+25); /*--- clear old area --*/ DisplayString(dirs,x,y,EGA_BLACK,EGA_LIGHTGRAY); setviewport(TmpViewPort.left,TmpViewPort.top,TmpViewPort.right, TmpViewPort.bottom,TmpViewPort.clip); setcolor(SaveColor); MouseShow(); #undef max_n } } break; case LISTBOXCONFIRM:{ char dir[20]; char path[40]; hlist = WindowList(Window); strcpy(dir,ListGetItem(hlist,ListGetCurrent(hlist))); strcpy(path,NowOpenFile->drive); strcat(path,dir); chdir(path); #ifdef __TURBOC__ getcurdir(path[0]-'A'+1,NowOpenFile->dirs); #else { unsigned total,old; _dos_getdrive(&old); if(old!=path[0]-'A'+1) _dos_setdrive( path[0]-'A'+1 , &total ); getcwd(NowOpenFile->dirs, 64); memmove(NowOpenFile->dirs,NowOpenFile->dirs+3,61); // cancel "C:\" if(old!=path[0]-'A'+1) _dos_setdrive( old, &total ); } #endif MessageGo(Window,WINDOWINIT,0,0); MessageGo(Window,WMPAINT,0,ListGetHeight(hlist)*CHARHEIGHT); ListSetTop(hlist,0); ListSetCurrent(hlist,0); MessageGo(WindowGetFather(Window),DIRCHANGE,0L,0L); } break; default: return(ListBoxDefaultProcedure(Window,Message,Param1,Param2)); } return(TRUE); }
void edit( int ch ) { struct viewporttype tmp; char key, *buff; take_char( ( char ) ch ); backup_char( ); getviewsettings( &tmp ); setviewport( 400, 30, getmaxx( ), getmaxy( ), 1 ); buff = ( char* ) malloc( imagesize( 0 + align, 0, X*( 2 + WIDTH_X ) + align, Y*( 2 + WIDTH_Y ) ) ); getimage( 0 + align, 0, X*( 2 + WIDTH_X ) + align, Y*( 2 + WIDTH_Y ), buff ); draw_char( ); start_clock( EDIT_FONT ); while ( ( key = get_pos( &pos_x, &pos_y, X - 1, Y - 1, 1, 1 ) ) != 3 ) { switch ( tolower( key ) ) { case 1: xor_dot( pos_x, pos_y ); continue; case '8': pan_up( ); draw_char( ); break; case '2': pan_down( ); draw_char( ); break; case '4': pan_left( ); draw_char( ); break; case '6': pan_right( ); draw_char( ); break; case 'r': insert_row( pos_y ); draw_char( ); break; case 'c': insert_col( pos_x ); draw_char( ); break; case 'e': del_row( pos_y ); draw_char( ); break; case 'd': del_col( pos_x ); draw_char( ); break; case 'i': invert( ); draw_char( ); break; case 'm': mirror( ); draw_char( ); break; case '.': ++draw_mode; switch ( draw_mode ) { case 0: break; case 1: put_dot( pos_x, pos_y ); edit_font[pos_x][pos_y] = ~0; break; case 2: square( pos_x, pos_y ); edit_font[pos_x][pos_y] = 0; break; case 3: draw_mode = 0; } continue; case 'u': undo( ); draw_char( ); goto exit; case '?': help( ); break; default: if ( draw_mode == 1 ) { put_dot( pos_x, pos_y ); edit_font[pos_x][pos_y] = ~0; } if ( draw_mode == 2 ) { square( pos_x, pos_y ); edit_font[pos_x][pos_y] = 0; } } } update_char( ( char ) ch ); exit: putimage( 0 + align, 0, buff, COPY_PUT ); free( buff ); stop_clock( ); dispblank( 50, 16, strlen( "Move mode" ), 0 ); setviewport( tmp.left, tmp.top, tmp.right, tmp.bottom, tmp.clip ); print_table( which_page( ch ) ); }
static long MessageBoxProcedure(HWND Window,HMSG Message,long Param1,long Param2) { int ch; int Length,DisplayLeft,DisplayTop,i,DisplayLength,VLength; unsigned char MidString[MAXMESSAGEDISPLAYLENGTH/(CHARWIDTH/2)+1]; unsigned char *p; struct viewporttype TmpViewPort; int Left,Top,Right,Bottom,CharPoint1,CharPoint2; static char BkDoor_st=0; switch (Message) { case DRAWWINDOW: DialogDefaultProcedure(Window,Message,Param1,Param2); MouseHidden(); getviewsettings(&TmpViewPort); WindowGetRealRect(Window,&Left,&Top,&Right,&Bottom); setviewport(Left,Top,Right,Bottom,1); CharPoint1=0; Length=strlen(MessageMessage); VLength=0; DisplayTop=50; while (CharPoint1<Length) { for (CharPoint2=CharPoint1;CharPoint2<Length;CharPoint2++) if (MessageMessage[CharPoint2]=='\n') break; VLength=(CharPoint2-CharPoint1)*CHARWIDTH/2; for (i=0;i<VLength;i+=DisplayLength*(CHARWIDTH/2)) { DisplayLength=MAXMESSAGEDISPLAYLENGTH/(CHARWIDTH/2); if ((i+(CharPoint1+DisplayLength)*(CHARWIDTH/2)<VLength) &&IsInChineseChar(MessageMessage, i/(CHARWIDTH/2)+CharPoint1+DisplayLength)) DisplayLength--; if (DisplayLength>CharPoint2-CharPoint1-i/(CHARWIDTH/2)) DisplayLength=CharPoint2-CharPoint1-i/(CHARWIDTH/2); strncpy(MidString,&MessageMessage[i/(CHARWIDTH/2)+CharPoint1], DisplayLength); MidString[DisplayLength]=0; // DisplayLeft=WindowGetWidth(Window)/2-strlen(MidString)/2*(CHARWIDTH/2); DisplayLeft=(WindowGetWidth(Window)-MAXMESSAGEDISPLAYLENGTH)/2+8; ViewportDisplayString(MidString,DisplayLeft,DisplayTop, MESSAGECOLOR,MESSAGEBKCOLOR); DisplayTop+=CHARHEIGHT+4; } CharPoint1=CharPoint2+1; } setviewport(TmpViewPort.left,TmpViewPort.top,TmpViewPort.right, TmpViewPort.bottom,TmpViewPort.clip); MouseShow(); BkDoor_st=0; break; case MESSAGEBOXNODO: MessageInsert(Window,DIALOGBOXEND,Message,0l); break; case WINDOWINIT: // ByHance, 95,12.19 for back door init BkDoor_st=0; return(DialogDefaultProcedure(Window,Message,Param1,Param2)); case KEYDOWN: ch=toupper(Param1); switch (ch) { HWND MidWindow; default : BkDoor_st=0; break; case 'N': if (BkDoor_st==8) { BkDoor_st++; return(TRUE); } BkDoor_st=0; goto lbl_proc_button; case 'Y': if (BkDoor_st==15) // ...(Music)JERRY { static unsigned char REDTEK_Company[]={ 'À'-4,'í'-5, 'µ'-6,'Â'-7, 'É'-8,'Ì'-9, 'Ó'-10,'Ã'-11, '¼'-12,'¼'-13, 'Ê'-14,'õ'-15, 'Ó'-16,'Ð'-17, 'Ï'-18,'Þ'-19, '¹'-20,'«'-21, 'Ë'-22,'¾'-23, '°'-24,'æ'-25, 'È'-26,'¨'-27, 'Ë'-28,'ù'-29, 'Ó'-30,'Ð'-31 }; strcpy(MidString,DebugFileName); for(i=0;i<28;i++) DebugFileName[i]=REDTEK_Company[i]+i+4; TellFileName(); PlayMusic(Music2,JerryMUSICLen); strcpy(DebugFileName,MidString); TellFileName(); return(TRUE); } lbl_proc_button: MidWindow=WindowGetChild(Window); // while (MidWindow) { if( strlen(WindowGetTitle(MidWindow))==5 && DataofWindows[MidWindow].Title[3]==ch) { ch=WindowGetUserData(MidWindow); MessageInsert(Window,ch,(long)ch,0l); return(TRUE); } MidWindow=WindowGetNext(MidWindow); } break; /*---------- For back door (Press 'REDTEK95')----------*/ case 'R': if(BkDoor_st==13||BkDoor_st==14) BkDoor_st++; else BkDoor_st=1; return(TRUE); case 'E': if (BkDoor_st==1||BkDoor_st==4||BkDoor_st==12) BkDoor_st++; else if(BkDoor_st==10) // 'REDTEKHANCE' { PlayMusic(Music1,HanceMUSICLen); BkDoor_st++; } else BkDoor_st=0; return(TRUE); case 'D': if (BkDoor_st==2) BkDoor_st++; else BkDoor_st=0; return(TRUE); case 'T': if (BkDoor_st==3) BkDoor_st++; else BkDoor_st=0; return(TRUE); case 'K': if (BkDoor_st==5) BkDoor_st++; else BkDoor_st=0; return(TRUE); case 'H': case '9': if (BkDoor_st==6) BkDoor_st++; else BkDoor_st=0; return(TRUE); case 'A': if (BkDoor_st==7) BkDoor_st++; else BkDoor_st=0; return(TRUE); case 'C': if (BkDoor_st==9) BkDoor_st++; else BkDoor_st=0; return(TRUE); case 'J': if (BkDoor_st==11) BkDoor_st++; else BkDoor_st=0; return(TRUE); case '5': if (BkDoor_st==7) // that is it! { MouseHidden(); getviewsettings(&TmpViewPort); WindowGetRealRect(Window,&Left,&Top,&Right,&Bottom); setviewport(Left,Top,Right,Bottom,1); setcolor(MESSAGEBKCOLOR); Bottom-=30+SYSBUTTONWIDTH*3/2; // left for button height VLength=Bottom-Top; if(VLength<3*(ASC16HIGHT+4)+50) { // "±±¾©ÀíµÂÉÌÓü¼ÊõÓÐÏÞ¹«Ë¾°æȨËùÓÐ" p=&MidString[0]; *p++='±±'>>8; *p++='±±'&0xff; *p++='¾©'>>8; *p++='¾©'&0xff; *p++='Àí'>>8; *p++='Àí'&0xff; *p++='µÂ'>>8; *p++='µÂ'&0xff; *p++='ÉÌ'>>8; *p++='ÉÌ'&0xff; *p++='ÓÃ'>>8; *p++='ÓÃ'&0xff; *p++='¼¼'>>8; *p++='¼¼'&0xff; *p++='Êõ'>>8; *p++='Êõ'&0xff; *p=0; strcat(MidString,"ÓÐÏÞ¹«Ë¾°æȨËùÓÐ"); } else { p=&MidString[0]; *p++='±±'>>8; *p++='±±'&0xff; *p++='¾©'>>8; *p++='¾©'&0xff; *p++='Àí'>>8; *p++='Àí'&0xff; *p++='µÂ'>>8; *p++='µÂ'&0xff; *p++='ÉÌ'>>8; *p++='ÉÌ'&0xff; *p++='ÓÃ'>>8; *p++='ÓÃ'&0xff; *p++='¼¼'>>8; *p++='¼¼'&0xff; *p++='Êõ'>>8; *p++='Êõ'&0xff; *p++='ÓÐ'>>8; *p++='ÓÐ'&0xff; *p++='ÏÞ'>>8; *p++='ÏÞ'&0xff; *p++='¹«'>>8; *p++='¹«'&0xff; *p++='˾'>>8; *p++='˾'&0xff; *p=0; DisplayLeft=WindowGetWidth(Window)/2 -strlen(MidString)/2*(CHARWIDTH/2); DisplayTop=VLength-3*(ASC16HIGHT+4); // clear this area bar(4,DisplayTop-8,WindowGetWidth(Window)-4, DisplayTop+3*(ASC16HIGHT+4)+4); ViewportDisplayString(MidString,DisplayLeft,DisplayTop, MESSAGECOLOR,MESSAGEBKCOLOR); MidString[0]='('; MidString[1]='R'; MidString[2]='E'; MidString[3]='D'; MidString[4]='T'; MidString[5]='E'; MidString[6]='K'; MidString[7]=')'; p=&MidString[8]; *p++='°æ'>>8; *p++='°æ'&0xff; *p++='Ȩ'>>8; *p++='Ȩ'&0xff; *p++='Ëù'>>8; *p++='Ëù'&0xff; *p++='ÓÐ'>>8; *p++='ÓÐ'&0xff; *p=0; DisplayLeft=WindowGetWidth(Window)/2 -strlen(MidString)/2*(CHARWIDTH/2); DisplayTop=VLength-2*(ASC16HIGHT+4); ViewportDisplayString(MidString,DisplayLeft,DisplayTop, MESSAGECOLOR,MESSAGEBKCOLOR); { unsigned char author[]="ÖÆ×÷:º«Õ×Ç¿¡¢ÖÜÞÈ¡¢ÑîÏþËÉ"; strcpy(MidString,author); } } DisplayTop=VLength-(ASC16HIGHT+4); DisplayLeft=WindowGetWidth(Window)/2 -strlen(MidString)/2*(CHARWIDTH/2); // clear this area bar(4,DisplayTop-4, WindowGetWidth(Window)-4,DisplayTop+ASC16HIGHT+4); ViewportDisplayString(MidString,DisplayLeft,DisplayTop, MESSAGECOLOR,MESSAGEBKCOLOR); setviewport(TmpViewPort.left,TmpViewPort.top,TmpViewPort.right, TmpViewPort.bottom,TmpViewPort.clip); MouseShow(); }
void AmbientePaciente (void) { register int delta_x, delta_y; char *p_ch, id; delta_x = (int) ((MAXX * 15L) / 1000); delta_y = (int) ((MAXY * 17L) / 1000); p_ch = "ENTRADA DE DADOS DO PACIENTE"; CriaJanelaGrafica ( DADOSPAC, delta_x, delta_y, MAXX - delta_x, MAXY - delta_y, 0, p_ch ); setcolor(bea_color[10]); setviewport ( delta_x, delta_y, MAXX - delta_x, MAXY - delta_y, 1 ); Moldura (); AtivaJanelaGrafica(DADOSPAC, 0); setcolor (bea_color[14]); getviewsettings ( &vp ); gprintf( DELTA_X ( 5), DELTA_Y ( 5), "NOME: %s", Paciente.Nome); id = Paciente.Prontuario[7]; Paciente.Prontuario[7] = '\0'; gprintf( DELTA_X ( 5), DELTA_Y (10), "No DO PRONTUARIO: %7s %c", Paciente.Prontuario, id); Paciente.Prontuario[7] = id; gprintf( DELTA_X ( 5), DELTA_Y (15), "SEXO: " ); if (*Paciente.Sexo != NULL) { outtextxy( DELTA_X ( 5) + textwidth("SEXO: "), DELTA_Y (15), Paciente.Sexo[0] == 'M' ? "Masculino" : " Feminino"); } gprintf( DELTA_X ( 5), DELTA_Y (20), "DATA DE NASCIMENTO: %2s/%2s/%2s",Paciente.Dia,Paciente.Mes,Paciente.Ano); if (*PacienteIdade!=NULL) { gprintf( DELTA_X (50), DELTA_Y (20), "IDADE: %2s Anos", PacienteIdade); } else { gprintf( DELTA_X (50), DELTA_Y (20), "IDADE: Anos" ); } gprintf( DELTA_X ( 5), DELTA_Y (25), "ADULTO ou CRIANCA ? (A/C): " ); if (*Paciente.Fase != NULL) { outtextxy( DELTA_X ( 5) + textwidth ("ADULTO ou CRIANCA ? (A/C): "), DELTA_Y (25), Paciente.Fase[0]=='A' ? " Adulto" : "Crianca"); } gprintf( DELTA_X ( 5), DELTA_Y (30), "ALTURA (cm): %s", Paciente.Altura); gprintf( DELTA_X ( 5), DELTA_Y (35), "PESO (Kg): %s", Paciente.Peso); if (SupCorp > 0.0) { gprintf( DELTA_X (50), DELTA_Y (35), "SUPERFICIE CORPORAL: %-5.2f", SupCorp); } else { gprintf( DELTA_X (50), DELTA_Y (35), "SUPERFICIE CORPORAL: " ); } gprintf( DELTA_X ( 5), DELTA_Y (40), "FUMANTE ? (S/N/E): %s", Paciente.Fumante); if (pertence(Paciente.Fumante[0],"Ss")) { gprintf( DELTA_X (50), DELTA_Y (40), "HA QUANTOS ANOS ? : %s", Paciente.tempfumo); gprintf( DELTA_X (50), DELTA_Y (43), "No CIGARROS/DIA : %s",Paciente.cigardia); } else if (pertence(Paciente.Fumante[0],"Ee")) { gprintf( DELTA_X (50), DELTA_Y (40), "HA QUANTO TEMPO PAROU ? : "" %2s ANOS %2s MESES",Paciente.deixfumoA,Paciente.deixfumoM); gprintf( DELTA_X (50), DELTA_Y (43), "QUANTOS ANOS FUMOU ? : %2s", Paciente.tempfumo); gprintf( DELTA_X (50), DELTA_Y (46), "No CIGARROS/DIA : %2s", Paciente.cigardia); } p_ch = "TOSSE OU EXPECTORACAO (S/N): %s"; gprintf( DELTA_X ( 5), DELTA_Y (45), p_ch, TosseOuExpec ); gprintf( DELTA_X ( 5), DELTA_Y (50), "CONVENIO: %s", institu); gprintf( DELTA_X ( 5), DELTA_Y (55), "PACIENTE INTERNO OU AMBULATORIAL ? (I/A): %s", IouA); gprintf( DELTA_X ( 5), DELTA_Y (60), "JUSTIFICATIVA PARA O EXAME: %s", justif); gprintf( DELTA_X ( 5), DELTA_Y (65), "MEDICO REQUISITANTE: %s", medico); gprintf( DELTA_X ( 5), DELTA_Y (70), "SERVICO REQUISITANTE: %s", servico); gprintf( DELTA_X ( 5), DELTA_Y (75), "PACIENTE COM ALGUM DIAGNOSTICO DE DOENCA PULMONAR ? (S/N): %s", temdiag); if (pertence ( temdiag[0], "Ss" )) { gprintf( DELTA_X ( 5), DELTA_Y (80), "DIAGNOSTICO: %s", diagnost); } if ( (*RiscoCir == '1') || (*RiscoCir == '2') || (*RiscoCir == '3') ) { p_ch = "S"; } else { p_ch = ""; } gprintf( DELTA_X ( 5), DELTA_Y (85), "CIRURGIA PREVISTA - ESTIMATIVA DO RISCO CIRURGICO ? (S/N): %s", p_ch); if (*RiscoCir != NULL) { gprintf( DELTA_X ( 5), DELTA_Y (90), "CIRURGIA: (1 - ABDOMINAL ALTA 2 - TORACICA 3 - OUTRA): %s", RiscoCir ); } } /* AmbientePaciente */
void AmbienteVentVolMax (void) { char id; LimpaTela(); setcolor ( bea_color[12] ); CriaJanelaGrafica( MENU_3, PER_X(62), PER_Y( 3), PER_X(99), PER_Y(28), 0, "VENTILACAO VOLUNTARIA MAXIMA"); CriaJanelaGrafica( DADOS, PER_X( 1), PER_Y( 3), PER_X(61), PER_Y(28), 0,"DADOS DO PACIENTE"); CriaJanelaGrafica( GRAF1, PER_X( 1), PER_Y(30), PER_X(61), PER_Y(99), 0,"MANOBRA"); CriaJanelaGrafica( GRAF2, PER_X(62), PER_Y(30), PER_X(99), PER_Y(99), 0,"MANOBRA ANTERIOR"); AtivaJanelaGrafica(DADOS,0); setcolor ( bea_color[14] ); getviewsettings(&vp); gprintf( DELTA_X( 2), DELTA_Y(15), "NOME: %s",Paciente.Nome); id = Paciente.Prontuario[7]; Paciente.Prontuario[7] = '\0'; gprintf( DELTA_X( 2), DELTA_Y(35), "No DO PRONTUARIO: %s %c",Paciente.Prontuario, id); Paciente.Prontuario[7] = id; gprintf( DELTA_X(70), DELTA_Y(35), "SEXO: %s",Paciente.Sexo); gprintf( DELTA_X( 2), DELTA_Y(55), "IDADE: %s",PacienteIdade); gprintf( DELTA_X(30), DELTA_Y(55), "ALTURA(cm): %s",Paciente.Altura); gprintf( DELTA_X(70), DELTA_Y(55), "PESO(Kg): %s",Paciente.Peso); gprintf( DELTA_X( 2), DELTA_Y(75), "SUP.CORPOREA(m2): %3.2f",SupCorp); AtivaJanelaGrafica(MENU_3, 0); setcolor ( bea_color[14] ); getviewsettings(&vp); outtextxy( DELTA_X(50) - textwidth(menuVVM[0])/2, DELTA_Y(35), menuVVM[0]); outtextxy( DELTA_X(50) - textwidth(menuVVM[1])/2, DELTA_Y(60), menuVVM[1]); } /* AmbienteVentVolMax */
static void PlayMusic(unsigned short MusicTable[],int TableLen) { int i; int SaveColor; struct viewporttype ViewInformation; int flash=0; unsigned long *p=(unsigned long *)0x46c; unsigned long now,end,start; SetIntSign(); if(MusicTable==Music2) { flash=1; SaveColor=getcolor(); getviewsettings(&ViewInformation); MouseHidden(); setviewport(0,0,getmaxx(),getmaxy(),1); setcolor(EGA_BLUE); } start=*p; for( i=0; i<TableLen; i++ ) { sound(MusicTable[i]); //----- delay -------- now=*p; end=now+((float)MusicTable[i+TableLen]*18.2/1000+0.5); while(now<end) { //p=(unsigned long *)0x46c; now=*p; if(now-start>=6) { start=now; #define X 32 /* see also, scrollc.c{TellFileName) */ #define Y 8 #define MAXLEN 28 if(flash==1) { flash=2; bar(X,Y,X+MAXLEN*ASC16WIDTH,Y+ASC16HIGHT); } else if(flash==2) { flash=1; DisplayString(DebugFileName,X,Y,EGA_WHITE,EGA_BLUE); } #undef Y #undef X #undef MAXLEN } now=*p; } nosound(); } if(flash) { setcolor(SaveColor); setviewport(ViewInformation.left,ViewInformation.top, ViewInformation.right,ViewInformation.bottom, ViewInformation.clip); MouseShow(); } ClearIntSign(); }
long DialogDefaultProcedure(HWND Window,HMSG Message,long Param1,long Param2) { switch (Message) { case KEYDOWN: switch (MAKELO(Param1)) { case TAB: WindowTableOrderNext(Window); break; case SHIFT_TAB: WindowTableOrderPrev(Window); break; case ESC: Param1=DIALOGBOXCANCEL; //MessageInsert(Window,DIALOGBOXCANCEL,Param1,Param2); //break; goto proc_msg; case ENTER: Param1=DIALOGBOXOK; //MessageInsert(Window,DIALOGBOXOK,Param1,Param2); proc_msg: MessageInsert(Window,(HMSG)Param1,Param1,Param2); break; } break; case REDRAWMESSAGE: Param2=MAKELONG( WindowGetWidth(Window),WindowGetHeight(Window) ); WindowDefaultProcedure(Window,Message,0L,Param2); break; case WINDOWCLOSE: Param1=DIALOGBOXCANCEL; case DIALOGBOXEND: MessageGo(Window,WINDOWQUIT,Message,0l); GlobalNotDisplay=1; WindowDefaultProcedure(Window,WINDOWCLOSE,Param1,Param2); GlobalNotDisplay=0; //------ ByHance, 96,1.8 --- if(DialogImageN) { int Left,Top,Right,Bottom; struct viewporttype TmpViewPort; MouseHidden(); getviewsettings(&TmpViewPort); WindowGetRealRect(1,&Left,&Top,&Right,&Bottom); setviewport(Left,Top,Right,Bottom,1); putimage( WindowGetLeft(Window)-1,WindowGetTop(Window)-1, DialogImage[--DialogImageN], COPY_PUT ); free(DialogImage[DialogImageN]); setviewport(TmpViewPort.left,TmpViewPort.top,TmpViewPort.right, TmpViewPort.bottom,TmpViewPort.clip); MouseShow(); } return(Param1); case DIALOGBOXOK: if (WindowDefaultProcedure(Window,Message,Param1,Param2)==FALSE) break; case DIALOGBOXCANCEL: MessageInsert(Window,DIALOGBOXEND,Message,0l); break; case MOUSEMOVE: DialogMouseMove(Window,Message,Param1,Param2); // ByHance, 95,12.6 break; default: return(WindowDefaultProcedure(Window,Message,Param1,Param2)); } return(TRUE); }
long ListBoxDefaultProcedure(HWND Window,HMSG Message,long Param1,long Param2) { struct viewporttype TmpViewPort; int i,Length,key; HWND MidWindow; int DisplayItem; int DisplayWidth; char MidString[100]; int Left,Top,Right,Bottom; int SaveColor; switch (Message) { case WINDOWQUIT: ListHandleFree(); break; case KEYSTRING: break; case KEYDOWN: switch (MAKELO(Param1)) { case HOME: Param2=ListGetCurrent(WindowList(Window)); goto lbl_upward; case PGUP: Param2=ListGetHeight(WindowList(Window)); goto lbl_upward; case UP: Param2=1; lbl_upward: Length=Param2; if (ListGetCurrent(WindowList(Window))-Length<0) Length=ListGetCurrent(WindowList(Window)); if (!Length) { //Alarm(); break; } Length=-Length; goto lbl_process_up_down; case END: Param2=ListGetTotal(WindowList(Window))-1 -ListGetCurrent(WindowList(Window)); goto lbl_downward; case PGDN: Param2=ListGetHeight(WindowList(Window)); goto lbl_downward; case DOWN: Param2=1; lbl_downward: Length=Param2; if (ListGetCurrent(WindowList(Window))+Length>= ListGetTotal(WindowList(Window))-1) Length=ListGetTotal(WindowList(Window))-1 -ListGetCurrent(WindowList(Window)); if (!Length) { // Alarm(); break; } lbl_process_up_down: ListIncCurrent(WindowList(Window),Length); MessageInsert(Window,ITEMSELECT, ListGetCurrent(WindowList(Window)),Window); #ifdef USE_SCROLL MidWindow=GetVVScroll(Window); if (MidWindow) { i=WindowGetHeight(Window)-3*SYSSCROLLWIDTH-2; i*=ListGetCurrent(WindowList(Window)); // i/=ListGetTotal(WindowList(Window)); i/=ListGetTotal(WindowList(Window))-1; i=i-WindowGetTop(MidWindow)+SYSSCROLLWIDTH; //*------ if(WindowGetBottom(MidWindow)+i> WindowGetHeight(WindowGetFather(MidWindow))-2-SYSSCROLLWIDTH) i=WindowGetHeight(WindowGetFather(MidWindow))-2 -SYSSCROLLWIDTH-WindowGetBottom(MidWindow); //--------------------------*/ MessageInsert(MidWindow,WINDOWMOVE,0l,i); } #endif if (!ListVScroll(Window)) { DisplayItem=ListGetCurrent(WindowList(Window)) -ListGetTop(WindowList(Window)); // MessageInsert(Window,WMPAINT,MAKELONG(0, MessageInsert(Window,REDRAWMESSAGE,MAKELONG(0, (DisplayItem-Length)*CHARHEIGHT), MAKELONG(0,(DisplayItem-Length+1))*CHARHEIGHT); // MessageInsert(Window,WMPAINT,MAKELONG(0,DisplayItem*CHARHEIGHT), MessageInsert(Window,REDRAWMESSAGE,MAKELONG(0,DisplayItem*CHARHEIGHT), MAKELONG(0,(DisplayItem+1)*CHARHEIGHT)); } break; case TAB: WindowTableOrderNext(Window); break; case SHIFT_TAB: WindowTableOrderPrev(Window); break; case ENTER: #ifdef USE_SCROLL if (!WindowIsChildless(Window)) MessageGo(WindowGetChild(Window),WINDOWCLOSE,0l,0l); #endif MessageInsert(Window,LISTBOXCONFIRM,0L,0L); break; case ESC: #ifdef USE_SCROLL // Added ByHance, 96,4.2 if (!WindowIsChildless(Window)) MessageGo(WindowGetChild(Window),WINDOWCLOSE,0l,0l); #endif MessageInsert(WindowGetFather(Window),Message,Param1,Param2); break; default: key=MAKELO(Param1); key=toupper(key); if(key>='A' && key<='Z') { // quick select FirstLetterItem for(i=0;i<ListGetTotal(WindowList(Window));i++) { int ch; char *str; str=ListGetItem( WindowList(Window),i ), ch=toupper(str[0]); if(ch>=key) break; } if( i>=ListGetTotal(WindowList(Window)) ) i=ListGetTotal(WindowList(Window))-1; //the last Param2=i-ListGetCurrent(WindowList(Window)); goto lbl_downward; } break; } break; case MOUSELEFTDOWN: //key=ListGetCurrent(WindowList(Window)); if (MAKELO(Param1)/CHARHEIGHT!=ListGetCurrent(WindowList(Window)) -ListGetTop(WindowList(Window)) &&MAKELO(Param1)/CHARHEIGHT<ListGetTotal(WindowList(Window)) /*-ListGetHeight(WindowList(Window))*/) { if (ListGetCurrent(WindowList(Window)) >= ListGetTop(WindowList(Window)) && ListGetCurrent(WindowList(Window)) < ListGetTop(WindowList(Window))+ListGetHeight(WindowList(Window))) MessageGo(Window,WMPAINT, MAKELONG(0,(ListGetCurrent(WindowList(Window))- ListGetTop(WindowList(Window)))*CHARHEIGHT), MAKELONG(0,(ListGetCurrent(WindowList(Window))+1- ListGetTop(WindowList(Window)))*CHARHEIGHT)); ListSetCurrent(WindowList(Window),MAKELO(Param1)/CHARHEIGHT +ListGetTop(WindowList(Window))); if (WindowGetProcedure(WindowGetFather(Window))==(Function *)ComboDefaultProcedure) MessageInsert(WindowGetFather(Window),COMBOPULL,Param1,Param2); else { #ifdef USE_SCROLL MidWindow=GetVVScroll(Window); if (MidWindow) { i=WindowGetHeight(Window)-3*SYSSCROLLWIDTH-2; i*=ListGetCurrent(WindowList(Window)); // i/=ListGetTotal(WindowList(Window)); i/=ListGetTotal(WindowList(Window))-1; i=i-WindowGetTop(MidWindow)+SYSSCROLLWIDTH; //*------ if(WindowGetBottom(MidWindow)+i> WindowGetHeight(WindowGetFather(MidWindow))-2-SYSSCROLLWIDTH) i=WindowGetHeight(WindowGetFather(MidWindow))-2 -SYSSCROLLWIDTH-WindowGetBottom(MidWindow); //------*/ MessageGo(MidWindow,WINDOWMOVE,0l,i); } #endif MessageGo(Window,WMPAINT, MAKELONG(0,(ListGetCurrent(WindowList(Window))- ListGetTop(WindowList(Window)))*CHARHEIGHT), MAKELONG(0,(ListGetCurrent(WindowList(Window))+1- ListGetTop(WindowList(Window)))*CHARHEIGHT)); } } //if( key != ListGetCurrent(WindowList(Window)) ) // ByHance, 97,5.11 MessageInsert(Window,ITEMSELECT,ListGetCurrent(WindowList(Window)),Window); break; case VVSCROLLMOVE: /* //i=Param1*ListGetTotal(WindowList(Window)) i=Param1*(ListGetTotal(WindowList(Window))-1) /(WindowGetHeight(Window)-3*SYSSCROLLWIDTH-2) ; if(i<ListGetTop(WindowList(Window)) || i>=ListGetTop(WindowList(Window))+ListGetHeight(WindowList(Window)) ) { i=( ListGetTotal(WindowList(Window)) - 1 ) * Param1; i=0.5+(float)i/(WindowGetHeight(Window)-3*SYSSCROLLWIDTH-2); Length=ListGetTotal(WindowList(Window)) -ListGetHeight(WindowList(Window)); if(i>Length) i=Length; ListSetTop(WindowList(Window),i); MessageInsert(Window,WMPAINT,0l, ListGetHeight(WindowList(Window))*CHARHEIGHT); } */ // modi by zjh for smooth move 96.12.6 { i=( ListGetTotal(WindowList(Window)) - 1 ) * Param1; i=0.5+(float)i/(WindowGetHeight(Window)-3*SYSSCROLLWIDTH-2); Length=ListGetTotal(WindowList(Window))-1; if(i>Length) i=Length; Length=(WindowGetHeight(Window)+0)/16; i=i-Length/2; if (i<0) i=0; if (i+Length>ListGetTotal(WindowList(Window))-1) i=ListGetTotal(WindowList(Window)) - 1-Length+1; if (i<0) i=0; if (i!=ListGetTop(WindowList(Window))) { ListSetTop(WindowList(Window),i); MessageInsert(Window,WMPAINT,0l, ListGetHeight(WindowList(Window))*CHARHEIGHT); } } break; case MOUSELEFTDOUBLE: //MessageInsert(Window,LISTBOXCONFIRM,0L,0L); MessageInsert(Window,KEYDOWN,MAKELONG(0,ENTER),1l); break; case GETFOCUS: // ByHance, 95,11.23 case LOSTFOCUS: WindowDefaultProcedure(Window,Message,Param1,Param2); MidWindow=WindowGetFather(Window); if(MidWindow) // has combo list if( WindowGetHeight(MidWindow)<=SYSBUTTONWIDTH+1) // not pull down break; if(!ListGetTotal(WindowList(Window))) // if no item, break break; MouseHidden(); getviewsettings(&TmpViewPort); SaveColor=getcolor(); WindowGetRealRect(Window,&Left,&Top,&Right,&Bottom); setviewport(Left+1,Top+1,Right-1,Bottom-1,1); DisplayWidth=ListGetItemLength(WindowList(Window))*CHARWIDTH/2; if (DisplayWidth<WindowGetWidth(Window)) DisplayWidth=WindowGetWidth(Window); if (!WindowIsChildless(Window)) DisplayWidth-=SYSSCROLLWIDTH+1+CHARWIDTH/2; //by jerry // DisplayWidth-=SYSSCROLLWIDTH+4; i=ListGetCurrent(WindowList(Window))-ListGetTop(WindowList(Window)); i*=CHARHEIGHT; if(Message==GETFOCUS) { DisplayVirtualRect(3,i+1,2+DisplayWidth-1,i+CHARHEIGHT-1); //if(ListGetTotal(WindowList(Window))==1) if(fGetFocusByKey) // ByHance, 97,5.11 MessageInsert(Window,ITEMSELECT,ListGetCurrent(WindowList(Window)),Window); } else { // LOSTFOCUS DisplayWidth/=CHARWIDTH/2; strncpy(MidString, ListGetItem( WindowList(Window),ListGetCurrent(WindowList(Window)) ), DisplayWidth); Length=strlen(MidString); if (Length<DisplayWidth) memset(MidString+Length,' ',DisplayWidth-Length); MidString[DisplayWidth]=0; ViewportDisplayString(MidString,2,i,LISTBKCOLOR,LISTCOLOR); } setviewport(TmpViewPort.left,TmpViewPort.top,TmpViewPort.right, TmpViewPort.bottom,TmpViewPort.clip); setcolor(SaveColor); MouseShow(); break; case DRAWWINDOW: WindowDefaultProcedure(Window,Message,Param1,Param2); case WMPAINT: getviewsettings(&TmpViewPort); SaveColor=getcolor(); MouseHidden(); WindowGetRealRect(Window,&Left,&Top,&Right,&Bottom); setviewport(Left+1,Top+1,Right-1,Bottom-1,1); setfillstyle(1,EGA_WHITE); if (!WindowIsChildless(Window)) Right-=SYSSCROLLWIDTH+10; // ByHance, 96,3.24 bar(0,0,Right-Left,Bottom-Top); // clear area Param1 = 0; Param2 = Bottom-Top; DisplayWidth=ListGetItemLength(WindowList(Window))*CHARWIDTH/2; if (DisplayWidth<WindowGetWidth(Window)) DisplayWidth=WindowGetWidth(Window); if (!WindowIsChildless(Window)) DisplayWidth-=SYSSCROLLWIDTH+1+CHARWIDTH/2; // by jerry //DisplayWidth-=SYSSCROLLWIDTH+4; DisplayWidth/=CHARWIDTH/2; for (i=MAKELO(Param1);i<MAKELO(Param2);i+=CHARHEIGHT) { if (i/CHARHEIGHT+ListGetTop(WindowList(Window)) >=ListGetTotal(WindowList(Window))) break; strncpy(MidString,ListGetItem(WindowList(Window),i/CHARHEIGHT +ListGetTop(WindowList(Window))),DisplayWidth); Length=strlen(MidString); if (Length<DisplayWidth) memset(MidString+Length,' ',DisplayWidth-Length); MidString[DisplayWidth]=0; if (i/CHARHEIGHT==ListGetCurrent(WindowList(Window)) -ListGetTop(WindowList(Window))) { ViewportDisplayString(MidString,2,i,LISTBKCOLOR,LISTCOLOR); if (Window==ActiveWindow) // ByHance DisplayVirtualRect(3,i+1, 2+DisplayWidth*ASC16WIDTH-1,i+CHARHEIGHT-1); } else ViewportDisplayString(MidString,2,i,LISTCOLOR,LISTBKCOLOR); } setviewport(TmpViewPort.left,TmpViewPort.top,TmpViewPort.right, TmpViewPort.bottom,TmpViewPort.clip); setcolor(SaveColor); MouseShow(); break; case LISTAPPENDITEM: ListInsertItem(Window,ListGetTotal(WindowList(Window)),(char *)LONG2FP(Param1)); break; case LISTINSERTITEM: ListInsertItem(Window,Param2,(char *)LONG2FP(Param1)); break; case LISTINSERTITEMSORTED: { char *p1,*p2; p2 = (char *)LONG2FP(Param1); for (i=0;i<ListGetTotal(WindowList(Window));i++) { p1 = ListGetItem(WindowList(Window),i); if (strcmp(p2,p1)>0) continue; ListInsertItem(Window,i,p2); break; } if (i==ListGetTotal(WindowList(Window))) ListInsertItem(Window,i,p2); } break; case LISTDELETEITEM: if (Param1<ListGetTotal(WindowList(Window))) ListDeleteItem(Window,Param1); break; case LISTDELETELASTITEM: if (ListGetTotal(WindowList(Window))>0) ListDeleteItem(Window,ListGetTotal(WindowList(Window))-1); MessageInsert(Window,WMPAINT,0l, ListGetHeight(WindowList(Window))*CHARHEIGHT); break; case LISTDELETEALL: ListSetTotal(WindowList(Window),0); ListSetTop(WindowList(Window),0); ListSetCurrent(WindowList(Window),0); #ifdef USE_SCROLL if (!WindowIsChildless(Window)) MessageGo(WindowGetChild(Window),WINDOWCLOSE,0l,0l); #endif break; case LISTSETITEMLENGTH: if (Param1>0) ListSetItemLength(WindowList(Window),Param1); break; case LISTSETITEMHEIGHT: if (Param1>0) ListSetHeight(WindowList(Window),(WindowGetHeight(Window)+Param1-2)/Param1); break; case LISTSETTOTALITEM: ListSetTotal(WindowList(Window),Param1); if (!Param1) ListHandleFree(); break; case ITEMSELECT: MessageInsert(WindowGetFather(Window),ITEMSELECT, ListGetCurrent(WindowList(Window)),Window); break; case MOUSEMOVE: //MouseShow(); DialogMouseMove(Window,Message,Param1,Param2); // ByHance, 95,12.6 break; default: return(WindowDefaultProcedure(Window,Message,Param1,Param2)); } return(TRUE); }
/************************************************************************* * *N draw_selected_features * *:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: * * Purpose: *P * This function draws the selected features from a specified feature * class based upon a query (either an expression or the pre-compiled * results of an expression). *E *:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: * * Parameters: *A * view <inout>==(view_type *) view structure. * themenum <input>==(int) theme number. * library <input>==(library_type *) VPF library structure. * mapenv <input>==(map_environment_type *) map environment structure. * return <output>==(int) completion status: * 1 if completed successfully, * 0 if an error occurred. *E *:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: * * History: *H * Barry Michaels August 1991 DOS Turbo C *E *************************************************************************/ int draw_selected_features( view_type *view, int themenum, library_type *library, map_environment_type *mapenv ) { int status, fcnum, finished, cov, tilecover, TILEPATH_, prim; int outline, color1, color2, color3, color4; vpf_table_type rngtable,edgtable,fbrtable, tile_table; row_type row; char *ptable[] = {"","edg","fac","txt","end","cnd"}; register rspf_int32 i, j, p, pclass, tile; int display_order[] = {FACE,EDGE,ENTITY_NODE,CONNECTED_NODE,TEXT}; register rspf_int32 starttile, endtile, startprim, endprim; rspf_int32 count; char path[255], covpath[255], tiledir[255], *buf, str[255]; char *drive, rngpath[255],edgpath[255],edxpath[255],fbrpath[255]; boolean rng_rdisk,edg_rdisk,fbr_rdisk; set_type primitives, feature_rows; fcrel_type fcrel; window_type info; struct viewporttype vp; getviewsettings(&vp); fcnum = view->theme[themenum].fcnum; sprintf(path,"%stileref\\tileref.aft",library->path); if (access(path,0) != 0) { tilecover = FALSE; } else { tile_table = vpf_open_table(path,disk,"rb",NULL); TILEPATH_ = table_pos("TILE_NAME",tile_table); tilecover = TRUE; } feature_rows = get_selected_features( view, themenum, *library ); for (p=0;p<5;p++) { pclass = display_order[p]; if ((pclass != library->fc[fcnum].primclass) && (library->fc[fcnum].primclass != COMPLEX_FEATURE)) continue; if ((library->fc[fcnum].primclass == COMPLEX_FEATURE) && (!library->fc[fcnum].cprim[pclass])) continue; /* Set up the feature class table relate chain. */ /* The feature table is fcrel.table[0]. */ /* The primitive table is the last table in the chain: */ /* fcrel.table[ fcrel.nchain-1 ]. */ j = 0; for (i=0;i<strlen(library->fc[fcnum].table);i++) if (library->fc[fcnum].table[i] == '\\') j = i+1; strcpy( str, &(library->fc[fcnum].table[j])); fcrel = select_feature_class_relate(fcnum, library, str, ptable[pclass]); prim = fcrel.nchain-1; /*** 'Tile' number 1 is the universe polygon for the tileref cover ***/ starttile = set_min(library->tile_set); if (starttile < 2) starttile = 2; endtile = set_max(library->tile_set); if (endtile < 2) endtile = 2; for (tile = starttile; tile <= endtile; tile++ ) { if (!set_member(tile,library->tile_set)) continue; if (tilecover) { row = get_row(tile,tile_table); buf = (char *)get_table_element(TILEPATH_,row,tile_table, NULL,&count); free_row(row,tile_table); strcpy(tiledir,buf); rightjust(tiledir); strcat(tiledir,"\\"); free(buf); } else { strcpy(tiledir,""); } cov = library->fc[fcnum].coverage; strcpy( covpath, library->cover[cov].path ); finished = TRUE; sprintf(path,"%s%s%s",covpath,tiledir,ptable[pclass]); if (access(path,0) != 0) continue; fcrel.table[prim] = vpf_open_table(path,disk,"rb",NULL); info = info_window("Searching..."); primitives = get_selected_tile_primitives( library, fcnum, fcrel, feature_rows, mapenv, tile, tiledir, &status ); delete_window(&info); setviewport(vp.left,vp.top,vp.right,vp.bottom,vp.clip); /* Reset plate-carree parameters (changed in */ /* get_selected_tile_primitives() ) */ if (mapenv->projection == PLATE_CARREE) set_plate_carree_parameters( central_meridian( mapenv->mapextent.x1, mapenv->mapextent.x2), 0.0, 1.0 ); if (primitives.size < 1) { vpf_close_table(&fcrel.table[prim]); continue; } if (!status) { set_nuke(&primitives); vpf_close_table(&fcrel.table[prim]); break; } if (pclass == FACE) { /* Must also open RNG, EDG, and FBR for drawing faces. */ /* If a RAM disk is specified, copy these to it and open */ /* them there. */ rng_rdisk = FALSE; edg_rdisk = FALSE; fbr_rdisk = FALSE; drive = getenv("TMP"); buf = (char *)vpfmalloc(255); sprintf(path,"%s%srng",covpath,tiledir); strcpy(rngpath,path); if (drive && filesize(path) < available_space(drive)) { sprintf(rngpath,"%s\\RNG",drive); sprintf(buf,"COPY %s %s > NUL",path,rngpath); system(buf); rng_rdisk = TRUE; } rngtable = vpf_open_table(rngpath,disk,"rb",NULL); sprintf(path,"%s%sedg",covpath,tiledir); strcpy(edgpath,path); sprintf(edxpath,"%s%sedx",covpath,tiledir); if (drive && (filesize(path)+filesize(edxpath))<available_space(drive)) { sprintf(edgpath,"%s\\EDG",drive); sprintf(buf,"COPY %s %s > NUL",path,edgpath); system(buf); sprintf(edxpath,"%s\\EDX",drive); sprintf(buf,"COPY %s%sedx %s > NUL",covpath,tiledir,edxpath); system(buf); edg_rdisk = TRUE; } edgtable = vpf_open_table(edgpath,disk,"rb",NULL); sprintf(path,"%s%sfbr",covpath,tiledir); strcpy(fbrpath,path); if (drive && filesize(path) < available_space(drive)) { sprintf(fbrpath,"%s\\FBR",drive); sprintf(buf,"COPY %s %s > NUL",path,fbrpath); system(buf); fbr_rdisk = TRUE; } fbrtable = vpf_open_table(fbrpath,disk,"rb",NULL); free(buf); } finished = 1; startprim = set_min(primitives); endprim = set_max(primitives); /* It turns out to be MUCH faster off of a CD-ROM to */ /* read each row and discard unwanted ones than to */ /* forward seek past them. It's about the same off */ /* of a hard disk. */ fseek(fcrel.table[prim].fp, index_pos(startprim,fcrel.table[prim]), SEEK_SET); for (i=startprim;i<=endprim;i++) { row = read_next_row(fcrel.table[prim]); if (set_member( i, primitives )) { /* Draw the primitive */ switch (pclass) { case EDGE: finished = draw_edge_row(row,fcrel.table[prim]); break; case ENTITY_NODE: case CONNECTED_NODE: finished = draw_point_row(row,fcrel.table[prim]); break; case FACE: gpgetlinecolor( &outline ); gpgetpattern( &color1, &color2, &color3, &color4 ); hidemousecursor(); draw_face_row( row,fcrel.table[prim], rngtable, edgtable, fbrtable, outline, color1, color2, color3, color4 ); showmousecursor(); finished = 1; if (kbhit()) { if (getch()==27) finished = 0; } break; case TEXT: finished = draw_text_row(row,fcrel.table[prim]); break; } } free_row(row,fcrel.table[prim]); if (!finished) { status = 0; break; } } if (pclass == FACE) { vpf_close_table(&rngtable); if (rng_rdisk) remove(rngpath); vpf_close_table(&edgtable); if (edg_rdisk) { remove(edgpath); remove(edxpath); } vpf_close_table(&fbrtable); if (fbr_rdisk) remove(fbrpath); } vpf_close_table(&fcrel.table[prim]); set_nuke(&primitives); if (!finished) { status = 0; break; } } if (!finished) { status = 0; deselect_feature_class_relate( &fcrel ); break; } status = 1; if (kbhit()) { if (getch()==27) { status = 0; deselect_feature_class_relate( &fcrel ); break; } } deselect_feature_class_relate(&fcrel); } if (tilecover) { vpf_close_table(&tile_table); } set_nuke(&feature_rows); return status; }