📄 draw.c
字号:
gdk_draw_string(drawing_area->window, efont,penfont, 300,15,tmp); ap1=getAverageLine(num,5); ap1=ap1/100; sprintf(tmp,"5PMA: %3.2f",ap1);
gdk_draw_string(drawing_area->window, efont,penkavgline1,80,CHARHEIGHT+15, tmp); ap2=getAverageLine(num,10); ap2=ap2/100; sprintf(tmp,"10PMA: %3.2f",ap2);
gdk_draw_string(drawing_area->window, efont,penkavgline2,200,CHARHEIGHT+15, tmp); ap3=getAverageLine(num,30); ap3=ap3/100; sprintf(tmp,"30PMA: %3.2f",ap3);
gdk_draw_string(drawing_area->window, efont,penkavgline3,320,CHARHEIGHT+15, tmp); al1=getAverageColume(num,5); sprintf(tmp,"5PMA: %ld",al1);
gdk_draw_string(drawing_area->window, efont,penkavgline1, 80,columeareay-CHARHEIGHT+15,tmp); al2=getAverageColume(num,10); sprintf(tmp,"10PMA: %ld",al2);
gdk_draw_string(drawing_area->window, efont,penkavgline2, 200,columeareay-CHARHEIGHT+15,tmp); x=0; for(i=0;i<jszbrec[curjszbno].num;i++){ if(jszbrec[curjszbno].type[i] == JSZBKLINETYPE) continue; sprintf(tmp,"%s: %5.2f",jszbrec[curjszbno].jszblabel[i], jszbrec[curjszbno].jszbdata[i][num]);
gdk_draw_string(drawing_area->window, efont,penjszb[i], 80+x*120,zbareay-CHARHEIGHT+15,tmp); x++; }}gint Repaint()
{
GdkRectangle update_rect;
defineDrawarea(drawing_area); /* --- clear pixmap (background image) --- */
gdk_draw_rectangle (g->pixmap,
penbackground, TRUE,
0, 0,
drawing_area->allocation.width,
drawing_area->allocation.height);
drawStatusBar(); drawTime(drawing_area); switch(fsflag){ case JSFLAG: drawGpmx(); stockdraw->drawStockGpmx(); drawJsScreen(drawing_area); if(linetype == 1) drawKlinearea(KLINEAREA); else drawAlinearea(KLINEAREA); drawColumearea(COLUMEAREA); if(drawavglineflag){ drawAverageLine(5,penkavgline1); drawAverageLine(10,penkavgline2); drawAverageLine(30,penkavgline3); } if(drawavgcolumeflag){ drawAverageColume(5,penkavgline1); drawAverageColume(10,penkavgline2); } drawJszbLine(); stockdraw->drawJsfsScreen(); stockdraw->drawJsfsPrice(); stockdraw->drawJsfsColume(); break; case FSFLAG: drawGpmx(); stockdraw->drawStockGpmx(); drawFsScreen(drawing_area); stockdraw->drawFsLine(); stockdraw->drawFsColume(); stockdraw->drawStockTrace(); break; case ZSFSFLAG: stockdraw->drawZsfsScreen(); stockdraw->drawZsfsLine(); stockdraw->drawZsfsColume(); break; case GPMXLISTFLAG: stockdraw->drawGpmxListScreen(); stockdraw->drawGpmxList(); break; } mouselineflag = 0; update_rect.x = 0;
update_rect.y = 0;
update_rect.width = drawing_area->allocation.width;
update_rect.height = drawing_area->allocation.height;
/* --- And then draw it (calls expose event) --- */
gtk_widget_draw (drawing_area, &update_rect);
return (TRUE);
}
/*
* configure_event
*
* Create a new backing pixmap of the appropriate size
* Of course, this is called whenever the window is
* resized. We have to free up things we allocated.
*/
gint configure_event (GtkWidget *widget, GdkEventConfigure *event)
{
if(g == NULL){ g = newGraphics(); } /* --- Free background if we created it --- */
if(g->pixmap){ gdk_pixmap_unref(g->pixmap); } /* --- Create a new pixmap with new size --- */
g->pixmap = gdk_pixmap_new(widget->window, widget->allocation.width, widget->allocation.height, -1); drawInit(); /*clear it out*/ gdk_draw_rectangle(g->pixmap,penbackground, TRUE,0,0, widget->allocation.width, widget->allocation.height);
Repaint(); return TRUE;
}
/*
* expose_event
*
* When the window is exposed to the viewer or
* the gdk_widget_draw routine is called, this
* routine is called. Copies the background pixmap
* to the window.
*/
gint expose_event (GtkWidget *widget, GdkEventExpose *event)
{
/* --- Copy pixmap to the window --- */
gdk_draw_pixmap (widget->window,
widget->style->fg_gc[GTK_WIDGET_STATE (widget)],
g->pixmap,
event->area.x, event->area.y,
event->area.x, event->area.y,
event->area.width, event->area.height);
if(!fsflag) drawJsRecord(stocksum);
return FALSE;
}
//stockDraw::stockDraw():stockSql()stockDraw::stockDraw(){}stockDraw::~stockDraw(){}void stockDraw::drawStockGpmx(){ char tmp[200]; GdkGC * pentmp =NULL; sprintf(tmp,"%6.2f%",gpmx.wb); if(gpmx.wb>0) pentmp = penup; else if(gpmx.wb==0) pentmp = penequal; else pentmp = pendown;
gdk_draw_string(g->pixmap, efont,pentmp, gpmxareax+1+CHARWIDTH*2,gpmxareay+CHARHEIGHT-5, tmp); sprintf(tmp,"%6.2f",gpmx.mcj3); if(gpmx.mcj3>gpmx.zsp) pentmp = penup; else if(gpmx.mcj3==gpmx.zsp) pentmp = penequal; else pentmp = pendown;
gdk_draw_string(g->pixmap, efont,pentmp, gpmxareax+1+CHARWIDTH*2,gpmxareay+CHARHEIGHT*2-5, tmp); sprintf(tmp,"%6.0f",gpmx.mcl3);
gdk_draw_string(g->pixmap, efont,penequal, gpmxareax+1+CHARWIDTH*7,gpmxareay+CHARHEIGHT*2-5, tmp); sprintf(tmp,"%6.2f",gpmx.mcj2); if(gpmx.mcj2>gpmx.zsp) pentmp = penup; else if(gpmx.mcj2==gpmx.zsp) pentmp = penequal; else pentmp = pendown;
gdk_draw_string(g->pixmap, efont,pentmp, gpmxareax+1+CHARWIDTH*2,gpmxareay+CHARHEIGHT*3-5, tmp); sprintf(tmp,"%6.0f",gpmx.mcl2);
gdk_draw_string(g->pixmap, efont,penequal, gpmxareax+1+CHARWIDTH*7,gpmxareay+CHARHEIGHT*3-5, tmp); sprintf(tmp,"%6.2f",gpmx.mcj1); if(gpmx.mcj1>gpmx.zsp) pentmp = penup; else if(gpmx.mcj1==gpmx.zsp) pentmp = penequal; else pentmp = pendown;
gdk_draw_string(g->pixmap, efont,pentmp, gpmxareax+1+CHARWIDTH*2,gpmxareay+CHARHEIGHT*4-5, tmp); sprintf(tmp,"%6.0f",gpmx.mcl1);
gdk_draw_string(g->pixmap, efont,penequal, gpmxareax+1+CHARWIDTH*7,gpmxareay+CHARHEIGHT*4-5, tmp); sprintf(tmp,"%6.2f",gpmx.mrj1); if(gpmx.mrj1>gpmx.zsp) pentmp = penup; else if(gpmx.mrj1==gpmx.zsp) pentmp = penequal; else pentmp = pendown;
gdk_draw_string(g->pixmap, efont,pentmp, gpmxareax+1+CHARWIDTH*2,gpmxareay+CHARHEIGHT*5-5, tmp); sprintf(tmp,"%6.2f",gpmx.mcj1); if(gpmx.mcj1>gpmx.zsp) pentmp = penup; else if(gpmx.mcj1==gpmx.zsp) pentmp = penequal; else pentmp = pendown;
gdk_draw_string(g->pixmap, efont,pentmp, gpmxareax+1+CHARWIDTH*7,gpmxareay+CHARHEIGHT*5-5, tmp); sprintf(tmp,"%6.2f",gpmx.mrj1); if(gpmx.mrj1>gpmx.zsp) pentmp = penup; else if(gpmx.mrj1==gpmx.zsp) pentmp = penequal; else pentmp = pendown;
gdk_draw_string(g->pixmap, efont,pentmp, gpmxareax+1+CHARWIDTH*2,gpmxareay+CHARHEIGHT*6-5, tmp); sprintf(tmp,"%6.0f",gpmx.mrl1);
gdk_draw_string(g->pixmap, efont,penequal, gpmxareax+1+CHARWIDTH*7,gpmxareay+CHARHEIGHT*6-5, tmp); sprintf(tmp,"%6.2f",gpmx.mrj2); if(gpmx.mrj2>gpmx.zsp) pentmp = penup; else if(gpmx.mrj2==gpmx.zsp) pentmp = penequal; else pentmp = pendown;
gdk_draw_string(g->pixmap, efont,pentmp, gpmxareax+1+CHARWIDTH*2,gpmxareay+CHARHEIGHT*7-5, tmp); sprintf(tmp,"%6.0f",gpmx.mrl2);
gdk_draw_string(g->pixmap, efont,penequal, gpmxareax+1+CHARWIDTH*7,gpmxareay+CHARHEIGHT*7-5, tmp); sprintf(tmp,"%6.2f",gpmx.mrj3); if(gpmx.mrj3>gpmx.zsp) pentmp = penup; else if(gpmx.mrj3==gpmx.zsp) pentmp = penequal; else pentmp = pendown;
gdk_draw_string(g->pixmap, efont,pentmp, gpmxareax+1+CHARWIDTH*2,gpmxareay+CHARHEIGHT*8-5, tmp); sprintf(tmp,"%6.0f",gpmx.mrl3);
gdk_draw_string(g->pixmap, efont,penequal, gpmxareax+1+CHARWIDTH*7,gpmxareay+CHARHEIGHT*8-5, tmp); sprintf(tmp,"%6.2f",gpmx.cjj); if(gpmx.cjj>gpmx.zsp) pentmp = penup; else if(gpmx.cjj==gpmx.zsp) pentmp = penequal; else pentmp = pendown;
gdk_draw_string(g->pixmap, efont,pentmp, gpmxareax+1+CHARWIDTH*2,gpmxareay+CHARHEIGHT*9-5, tmp); sprintf(tmp,"%6.2f",gpmx.jj); if(gpmx.jj>gpmx.zsp) pentmp = penup; else if(gpmx.jj==gpmx.zsp) pentmp = penequal; else pentmp = pendown;
gdk_draw_string(g->pixmap, efont,pentmp, gpmxareax+1+CHARWIDTH*7,gpmxareay+CHARHEIGHT*9-5, tmp); sprintf(tmp,"%6.2f",gpmx.zd); if(gpmx.cjj>gpmx.zsp) pentmp = penup; else if(gpmx.cjj==gpmx.zsp) pentmp = penequal; else pentmp = pendown;
gdk_draw_string(g->pixmap, efont,pentmp, gpmxareax+1+CHARWIDTH*2,gpmxareay+CHARHEIGHT*10-5, tmp); sprintf(tmp,"%6.2f",gpmx.kpj); if(gpmx.kpj>gpmx.zsp) pentmp = penup; else if(gpmx.kpj==gpmx.zsp) pentmp = penequal; else pentmp = pendown;
gdk_draw_string(g->pixmap, efont,pentmp, gpmxareax+1+CHARWIDTH*7,gpmxareay+CHARHEIGHT*10-5, tmp); sprintf(tmp,"%6.2f%",gpmx.zdf); if(gpmx.cjj>gpmx.zsp) pentmp = penup; else if(gpmx.cjj==gpmx.zsp) pentmp = penequal; else pentmp = pendown;
gdk_draw_string(g->pixmap, efont,pentmp, gpmxareax+CHARWIDTH*2-5,gpmxareay+CHARHEIGHT*11-5, tmp); sprintf(tmp,"%6.2f",gpmx.zgj); if(gpmx.zgj>gpmx.zsp) pentmp = penup; else if(gpmx.zgj==gpmx.zsp) pentmp = penequal; else pentmp = pendown;
gdk_draw_string(g->pixmap, efont,pentmp, gpmxareax+1+CHARWIDTH*7,gpmxareay+CHARHEIGHT*11-5, tmp); sprintf(tmp,"%6.0f",gpmx.zss);
gdk_draw_string(g->pixmap, efont,penequal, gpmxareax+1+CHARWIDTH*2,gpmxareay+CHARHEIGHT*12-5, tmp); sprintf(tmp,"%6.2f",gpmx.zdj); if(gpmx.zdj>gpmx.zsp) pentmp = penup; else if(gpmx.zdj==gpmx.zsp) pentmp = penequal; else pentmp = pendown;
gdk_draw_string(g->pixmap, efont,pentmp, gpmxareax+1+CHARWIDTH*7,gpmxareay+CHARHEIGHT*12-5, tmp); sprintf(tmp,"%6.0f",gpmx.xss);
gdk_draw_string(g->pixmap, efont,penequal, gpmxareax+1+CHARWIDTH*2,gpmxareay+CHARHEIGHT*13-5, tmp); sprintf(tmp,"%6.2f%",gpmx.lb); if(gpmx.lb>0) pentmp = penup; else if(gpmx.lb == 0) pentmp = penequal; else pentmp = pendown;
gdk_draw_string(g->pixmap, efont,pentmp, gpmxareax+CHARWIDTH*7-5,gpmxareay+CHARHEIGHT*13-5, tmp); sprintf(tmp,"%6.0f",gpmx.wp);
gdk_draw_string(g->pixmap, efont,penup, gpmxareax+1+CHARWIDTH*2,gpmxareay+CHARHEIGHT*14-5, tmp); sprintf(tmp,"%6.0f",gpmx.np);
gdk_draw_string(g->pixmap, efont,pendown, gpmxareax+1+CHARWIDTH*7,gpmxareay+CHARHEIGHT*14-5, tmp); }void stockDraw::drawFsLine(){ int x,x1,y,y1; int i; int tmpjc,tmpzsp,tmpzgj; float jg; if(!frechfsflag) return; jg=gpmx.zsp*100; tmpzsp=int(jg); tmpjc=ABS(fspricezgj-tmpzsp)>ABS(fspricezdj-tmpzsp)? ABS(fspricezgj-tmpzsp):ABS(fspricezdj-tmpzsp); tmpzgj=tmpzsp+tmpjc; tmpjc=tmpjc*2; for(i=0;i<fssum-1 && i<MAXFSLINENUM-1;i++){ x=fspricex+fspricewidth*(i+1)/MAXFSLINENUM; x1=fspricex+fspricewidth*(i+2)/MAXFSLINENUM;; y=(tmpzgj-fs[i].price)*fspriceheight/tmpjc+fspricey; y1=(tmpzgj-fs[i+1].price)*fspriceheight/tmpjc+fspricey; gdk_draw_line(g->pixmap,penfsline,x,y,x1,y1); y=(tmpzgj-fs[i].avgprice)*fspriceheight/tmpjc+fspricey; y1=(tmpzgj-fs[i+1].avgprice)*fspriceheight/tmpjc+fspricey; gdk_draw_line(g->pixmap,penfsavgline,x,y,x1,y1); }}void stockDraw::drawFsColume(){ int x,y; int i; if(!frechfsflag) return; for(i=0;i<fssum && i<MAXFSLINENUM;i++){ x=fscolumex+fscolumewidth*(i+1)/MAXFSLINENUM;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -