UINT calc_palette(UINT i, double Cfactor) { init_Cfactor = Cfactor; init_col_num = i; initpalette(tree); return init_col_num; }
main() { union REGS r; char b[128]; long table[16]; int i,j,n; clrscr(); initpalette(); /* do the screen */ for(i=0;i<16;++i) table[i]=RGB(0,0,i<<4); setuppalette(table); /*unusual loop */ for(b[0]=0;strlen[b]+4<=80;strcat(b,BLUE)); /* show */ for(i=0;i<16;++i) putline(0,2+i,i,b); getch(); /* animation */ for(n=0, j=1;!kbhit(); n+=j) { for(i=0;i<16;++i) table[i]=RGB(0,0,i*n); setuppalette(table); if(n>=16) j=-1; else if(n<=0) j=1; delay(50); } getch(); clrscr(); /* using designer palette*/ putbanner(2,1,"electric blue"); putbanner(3,2,"ocean green"); putbanner(4,3,"light green"); putbanner(5,4,"chalk"); putbanner(6,5,"autumn orange"); putbanner(7,6,"sand"); putbanner(8,7,"walnut"); putbanner(9,8,"crimson"); putbanner(10,9,"dusty rose"); putbanner(11,10,"neon purple"); putbanner(12,11,"black"); putbanner(13,12,"cyan"); putbanner(14,13,"green"); putbanner(15,14,"yellow"); putbanner(16,15,"white"); getch(); clrscr(); /* back to same colours */ r.x.ax=0X0003; int 86(0X10,&r,&r); }
static void initpalette(OCTREE tree) { UINT j; if (tree == NULL) return; if (tree->leaf || tree->level == leaflevel) { palette[init_col_num][RED] = (char) ((init_Cfactor * tree->rgbsum.r) / tree->colorcount + 0.5); palette[init_col_num][GREEN] = (char) ((init_Cfactor * tree->rgbsum.g) / tree->colorcount + 0.5); palette[init_col_num][BLUE] = (char) ((init_Cfactor * tree->rgbsum.b) / tree->colorcount + 0.5); tree->colorindex = init_col_num; tree->leaf = TRUE; init_col_num++; } else { for (j = 0; j < 8; j++) initpalette(tree->next[j]); } }
//if no palette data is supplied, //initialize hard coded default palette //which also corresponds to the default color labels //defined in vga.h void initpalette() { char palette[256][3]; initpaletteblock( 0, 0.0,0.0,0.0, 0.5,0.5,0.5, palette); initpaletteblock( 1, 0.1,0.0,0.0, 0.5,0.0,0.0, palette); initpaletteblock( 2, 0.0,0.1,0.0, 0.0,0.5,0.0, palette); initpaletteblock( 3, 0.0,0.0,0.1, 0.0,0.0,0.5, palette); initpaletteblock( 4, 0.9,0.1,0.0, 0.9,0.9,0.0, palette); initpaletteblock( 5, 0.0,0.5,0.0, 1.0,1.0,1.0, palette); initpaletteblock( 6, 0.0,0.0,0.5, 1.0,1.0,1.0, palette); initpaletteblock( 7, 0.5,0.0,0.0, 1.0,0.0,0.0, palette); initpaletteblock( 8, 0.0,0.5,0.0, 0.0,1.0,0.0, palette); initpaletteblock( 9, 0.0,0.0,0.5, 0.0,0.0,1.0, palette); initpaletteblock(10, 0.5,0.0,0.5, 1.0,0.0,1.0, palette); initpaletteblock(11, 0.5,0.5,0.0, 1.0,1.0,0.0, palette); initpaletteblock(12, 0.0,0.5,0.5, 0.0,1.0,1.0, palette); initpaletteblock(13, 0.5,0.5,0.5, 1.0,1.0,1.0, palette); initpaletteblock(14, 0.3,0.1,0.1, 1.0,0.0,0.0, palette); initpaletteblock(15, 0.5,0.0,0.0, 1.0,1.0,1.0, palette); initpalette(palette); }
//Draw time void clock_and_timer(char *wait) //kresleni casu a screensaver { #ifndef POSIX struct time t; #endif char cas2[32]; timestr(cas2); if (strcmp(lasttime,cas2) == 0 ) return; #ifndef CLEMTEST #ifndef AGB if((ScreenSaver>0l||lasttime[0]=='*') && SecondsSleeping>(long)ScreenSaver*60l) { /* if(1) { mouseoff(); // strcpy(buf,"system\\scrnsvrs\\stin.exe"); // closebat(buf,RESTART_REDRAW); // GLOBAL.willexecute=willexecute(buf); // GLOBAL.gotolocation=1; execl("system\\scrnsvrs\\stin.exe","system\\scrnsvrs\\stin.exe",NULL); graphicsinit(arachne.graphics); // XLOPIF SVGA GRAPHICS } else */ { int j; int fullscr[4]={0,0,0,0}; int x,y,px,py,done=0; fullscr[2]=x_maxx(); fullscr[3]=x_maxy(); { #define MAX_CERFS 20 #define MAX_TRACK 100 int xx[MAX_CERFS],yy[MAX_CERFS],xs[MAX_CERFS],ys[MAX_CERFS],col[MAX_CERFS]; int x2[MAX_CERFS],y2[MAX_CERFS],xs2[MAX_CERFS],ys2[MAX_CERFS]; int tracklen[MAX_CERFS]; int trackcnt[MAX_CERFS]; int trackbuf[MAX_CERFS]; int xtr[MAX_CERFS][MAX_TRACK],ytr[MAX_CERFS][MAX_TRACK]; int xt2[MAX_CERFS][MAX_TRACK],yt2[MAX_CERFS][MAX_TRACK]; int pom; int cerfs=MAX_CERFS/2; char barva0[6]={1,3,9,11,7,8}; char barva1[6]={1,2,3,6,10,14}; char *barva; char *value; #ifdef HICOLOR int dc=1,p=0; #endif //----------------------------screensaver mouseoff(); x_cleardev(); #ifdef LINUX #define RND(X) (random()*X) srandom(time(NULL)); #else #define RND(X) random(X) randomize(); #endif value=configvariable(&ARACHNEcfg,"ScreenSaverColors",NULL); if(value && *value=='1') barva=barva1; else barva=barva0; value=configvariable(&ARACHNEcfg,"ScreenSaverMess",NULL); if(value) { cerfs=atoi(value); if(cerfs<1) cerfs=1; if(cerfs>MAX_CERFS) cerfs=MAX_CERFS; } value=configvariable(&ARACHNEcfg,"ScreenSaverStyle",NULL); j=0; while(j<cerfs) //deklarace car { xx[j]=100+RND(fullscr[2]-200); yy[j]=100+RND(fullscr[3]-200); if(*value=='C') x2[j]=10+RND(fullscr[3]/3); else { x2[j]=120+RND(fullscr[2]-240); y2[j]=120+RND(fullscr[3]-240); } if(*value=='R') {xs[j]=RND(2);if(xs[j]==0)xs[j]=-1;} else {xs[j]=RND(3);if(xs[j]==2)xs[j]=-1;} ys[j]=RND(2);if(ys[j]==0)ys[j]=-1; xs2[j]=RND(2);if(xs2[j]==0)xs2[j]=-1; if(*value=='R') {ys2[j]=RND(2);if(ys2[j]==0)ys2[j]=-1;} else {ys2[j]=RND(3);if(ys2[j]==2)ys2[j]=-1;} col[j]=barva[RND(6)]; pom=RND(MAX_TRACK-10)+10; tracklen[j]=pom; trackcnt[j]=1; //odsud se bude cist trackbuf[j]=0; //sem se bude zapisovat while(pom>=0) { xtr[j][pom]=0; ytr[j][pom]=0; xt2[j][pom]=0; yt2[j][pom]=0; pom--; } j+=1; }//loop j=0; ImouseRead( &x, &y ); ImouseWait(); px=x;py=y; while(!done) //animace { if(wait!=NULL) { #ifdef POSIX time_t t=time(NULL); struct tm *gt=gmtime(&t); sprintf(cas2,"%2d:%02d:%02d", gt->tm_hour, gt->tm_min, gt->tm_sec ); #else gettime(&t); sprintf(cas2,"%2d:%02d:%02d", t.ti_hour, t.ti_min, t.ti_sec ); #endif if(strstr(wait,cas2)!=NULL)break; }//endif #ifndef LINUX if(g_PrtScr) { g_PrtScr = 0; PrintScreen2BMP(0); goto out; } #endif //mazani stopy x_setcolor(0); #ifndef LINUX if(*value=='C') x_circle(xtr[j][trackcnt[j]],ytr[j][trackcnt[j]],xt2[j][trackcnt[j]]); else #endif if(*value=='R') x_rect(xtr[j][trackcnt[j]],ytr[j][trackcnt[j]],xt2[j][trackcnt[j]],yt2[j][trackcnt[j]]); else x_line(xtr[j][trackcnt[j]],ytr[j][trackcnt[j]],xt2[j][trackcnt[j]],yt2[j][trackcnt[j]]); if(++trackcnt[j]>tracklen[j])trackcnt[j]=0; xtr[j][trackbuf[j]]=xx[j]; ytr[j][trackbuf[j]]=yy[j]; xt2[j][trackbuf[j]]=x2[j]; yt2[j][trackbuf[j]]=y2[j]; if(++trackbuf[j]>tracklen[j])trackbuf[j]=0; //kresleni nove cary x_setcolor(col[j]); #ifndef LINUX if(*value=='C') x_circle(xx[j],yy[j],x2[j]); else #endif if(*value=='R') x_rect(xx[j],yy[j],x2[j],y2[j]); else x_line(xx[j],yy[j],x2[j],y2[j]); xx[j]+=xs[j]; yy[j]+=ys[j]; x2[j]+=xs2[j]; y2[j]+=ys2[j]; if(xx[j]>=fullscr[2]||xx[j]<=0)xs[j]=-xs[j]; if(yy[j]>=fullscr[3]||yy[j]<=0)ys[j]=-ys[j]; if(x2[j]>=fullscr[2]||x2[j]<=0)xs2[j]=-xs2[j]; if(y2[j]>=fullscr[3]||y2[j]<=0)ys2[j]=-ys2[j]; j++; if(j==cerfs) j=0; if(*value=='C' || j%10==0) { //!!RAY: Sep 30, 2006 -- CTRL key will now deactivate the screensaver if((bioskey(1) || bioskey(2) &4) || ImouseRead( &x, &y ) || x!=px || y!=py) // if(bioskey(1) || ImouseRead( &x, &y ) || x!=px || y!=py) done=1; } px=x;py=y; #ifdef HICOLOR if(xg_256 == MM_Hic) { if(p>20*cerfs) { dc=-dc; p=0; } p++; if(p%cerfs==0) { int c=1; while(c<16) { if(c%2) dc=-dc; Iipal[c*3]+=dc; if(Iipal[c*3]>63) Iipal[c*3]=63; if(Iipal[c*3]<0) Iipal[c*3]=0; Iipal[c*3+1]+=dc; if(Iipal[c*3+1]>63) Iipal[c*3+1]=63; if(Iipal[c*3+1]<0) Iipal[c*3+1]=0; Iipal[c*3+2]+=dc; if(Iipal[c*3+2]>63) Iipal[c*3+2]=63; if(Iipal[c*3+2]<0) Iipal[c*3+2]=0; c++; }//loop } x_palett( 16, Iipal); } #endif }//loop if(bioskey(1))bioskey(0); ImouseWait(); out: #ifdef HICOLOR if(xg_256 == MM_Hic) initpalette(); #endif x_cleardev(); RedrawALL(); DrawTitle(1); if(lasttime[1]=='*') redraw=4; else redraw=3; } } SecondsSleeping=0l; }//endif screensaver #endif// AGB #endif// CLEMTEST #ifndef GGI //it doesn't make sense to show time in X11 app.. if(!fullscreen) { x_setfill(0,7); //sediva if(mousey>x_maxy()-30 && mousex>x_maxx()-230) mouseoff(); #ifdef CUSTOMER x_bar(x_maxx()-56,x_maxy()-13,x_maxx()-2,x_maxy()-2); x_setcolor(0); //cerna htmlfont(1,0); x_text_ib( x_maxx()-56,x_maxy()-15,(unsigned char *)cas2); #elif AGB x_bar(x_maxx()-56,x_maxy()-13,x_maxx()-2,x_maxy()-2); x_setcolor(0); //cerna htmlfont(1,0); x_text_ib( x_maxx()-56,x_maxy()-15,(unsigned char *)cas2); #else x_bar(x_maxx()-206,x_maxy()-13,x_maxx()-156,x_maxy()-2); x_setcolor(0); //cerna //!!glennmcc: Aug 22, 2005 //prevent fontshift >0 from causing the clock to go 'off the right' htmlfont(0-user_interface.fontshift,0); // htmlfont(1,0); x_text_ib( x_maxx()-206,x_maxy()-15,(unsigned char *)cas2); #endif if(mousey>x_maxy()-30 && mousex>x_maxx()-230) mouseon(); } #endif if(lasttime[0]) //not if time redraw was forced! { SecondsSleeping++; if(GLOBAL.timeout) GLOBAL.secondsleft--; if(ppplogtime && tcpip) draw_time_online(); } strcpy(lasttime,cas2); }//end sub
void newpalette(unsigned char *palette) { int i, j; GrColor colortable[4], nc; FILE *f; if (init_test & 2) { fprintf(errf, "New palette:\n"); for (i = 0; i < 256; i++) { fprintf(errf, " %3d: %3d %3d %3d\n", i, palette[i * 3], palette[i * 3 + 1], palette[i * 3 + 2]); } } w_newpalette(palette); my_assert( ( f = fopen(pig.bulbname, "rb") ) != NULL && fread(pig.bulb, 1, BULBSIZE * BULBSIZE, f) == BULBSIZE * BULBSIZE ); fclose(f); my_assert( ( f = fopen(pig.brokenbulbname, "rb") ) != NULL && fread(pig.brokenbulb, 1, BULBSIZE * BULBSIZE, f) == BULBSIZE * BULBSIZE ); fclose(f); colortable[0] = 0; colortable[1] = w_makecolor(100, 200, 255); colortable[2] = w_makecolor(255, 255, 0); for (i = 0; i < BULBSIZE * BULBSIZE; i++) { pig.bulb[i] = colortable[(int)pig.bulb[i]]; } colortable[0] = 0; colortable[1] = w_makecolor(75, 75, 75); colortable[2] = w_makecolor(100, 200, 255); colortable[3] = w_makecolor(255, 255, 255); for (i = 0; i < BULBSIZE * BULBSIZE; i++) { pig.brokenbulb[i] = colortable[(int)pig.brokenbulb[i]]; } nc = w_makecolor(255, 255, 255); for (i = 0; i < 6; i++) { if (b_movebts[i]) { for (j = 0; j < movebuttondsize[i]; j++) { if (movebuttondata[i][j]) { movebuttondata[i][j] = nc; } } w_drawbutton(b_movebts[i]); } } initpalette(); /* redraw the cursors */ if (cursor_initialized) { colortable[0] = 1; colortable[1] = view.color[DOORCOLORS]; w_initkbstatcursor(control_cursor, cntrlcursor_xsize, cntrlcursor_ysize, CNTRLCURSOR_HOT_X, CNTRLCURSOR_HOT_Y, colortable, ws_ks_ctrl, ws_ks_ctrl | ws_ks_alt); w_initkbstatcursor(alt_cursor, altcursor_xsize, altcursor_ysize, ALTCURSOR_HOT_X, ALTCURSOR_HOT_Y, (GrColorTableP)colortable, ws_ks_alt, ws_ks_ctrl | ws_ks_alt); } plotlevel(); }
void graphicsinit(char *svgamode) //initialization of graphics, mode according to X_LOPIF { const short cur[32] = { 0x9FFF, 0x0FFF, 0x07FF, 0x83FF, 0xC1FF, 0xE0FF, 0xF067, 0xF003, 0xF001, 0xF000, 0xF800, 0xF800, 0xF800, 0xFC00, 0xFC00, 0xFC00, 0x0000, 0x6000, 0x7000, 0x3800, 0x1C00, 0x0E00, 0x0700, 0x0018, 0x07EC, 0x07EE, 0x001E, 0x03EE, 0x03EE, 0x001E, 0x00EC, 0x0002 }; xg_256=MM_Hic; //set Hicolor flag... initpalette(); x_settextjusty(0,2); // always write text from upper left corner #ifdef GGI // printf("Initializing GGI visual target.\n"); ggiVis = ggiOpen (NULL); ggiGetMode (ggiVis, &origMode); ggiSetSimpleMode (ggiVis, 800, 600, 1, GT_16BIT); SVGAx=799; SVGAy=599; ggiAddFlags(ggiVis,GGIFLAG_ASYNC); #else strupr(svgamode); // printf("Console switched to graphics mode.\n"); if(strstr(svgamode,".I")) { vga_setmode(G640x480x64K); gl_setcontextvga(G640x480x64K); SVGAx=639; SVGAy=479; } else if(strstr(svgamode,".K")) { vga_setmode(G1024x768x64K); gl_setcontextvga(G1024x768x64K); SVGAx=1023; SVGAy=767; } else if(strstr(svgamode,".L")) { vga_setmode(G1280x1024x64K); gl_setcontextvga(G1280x1024x64K); SVGAx=1279; SVGAy=1023; } if(strstr(svgamode,".M")) { vga_setmode(G1600x1200x64K); gl_setcontextvga(G1600x1200x64K); SVGAx=1599; SVGAy=1199; } { vga_setmode(G800x600x64K); gl_setcontextvga(G800x600x64K); SVGAx=799; SVGAy=599; } vga_runinbackground(1); vga_oktowrite(); gl_setwritemode(FONT_COMPRESSED|WRITEMODE_MASKED); gl_setfontcolors(0,vga_white()); //gl_setfont(8,8,gl_font8x8); gl_setrgbpalette(); gl_enableclipping(); #endif x_defcurs( (short *)cur, (short *)&cur[16], 15); //mouse kursor }