📄 drawmap.c
字号:
/* * line drawing sample program * * Copyright (C) 2002-2004 by Personal Media Corporation */#include "navigator.h"#include <stdlib.h>#include "graphic.h"#include "conv.h"EXPORT ID draw_map_tid; /* drap map task ID */LOCAL BMP devbmp;LOCAL BMP bufbmp;LOCAL RECT r_upd;LOCAL char buffer[320*240*sizeof(UH)];LOCAL void doubl_buf_draw(BMP* devbmp,BMP* bufbmp){ bufbmp->baseaddr[0]=buffer; bufbmp->planes=devbmp->planes; bufbmp->pixbits=devbmp->pixbits; bufbmp->rowbytes=devbmp->rowbytes; devbmp->bounds.c.left=0; devbmp->bounds.c.right=320; devbmp->bounds.c.top=0; devbmp->bounds.c.bottom=240; bufbmp->bounds=devbmp->bounds; }LOCAL void update_screen(BMP* devbmp,BMP* bufbmp){ memcpy(devbmp->baseaddr[0],bufbmp->baseaddr[0],320*240*sizeof(UH));}/* * initialization */LOCAL void init( void ){ /* fill total screen in white */ fill_rect( devbmp.bounds.c.left, devbmp.bounds.c.top, devbmp.bounds.c.right, devbmp.bounds.c.bottom, 0x00ffffff, &devbmp ); /* update area is to be all */ r_upd = devbmp.bounds;}char temp[100];unsigned char * draw_buffer;LOCAL void draw(){ LPOINTSCR apt=(POINTSCR*)(&draw_buffer[0]); fill_rect( bufbmp.bounds.c.left, bufbmp.bounds.c.top, bufbmp.bounds.c.right, bufbmp.bounds.c.bottom, 0x00ffffff, &bufbmp ); draw_map_line(pline,apt,&bufbmp); draw_map_region(region,apt,&bufbmp); draw_circle(160,120,3,0,&bufbmp);}/* * draw map task */EXPORT void draw_map_task( INT stacd, VP exinf ){ UB devnm[8]; /* device name */ ID dds; /* device descriptor */ INT asiz; /* read/write size */ ER ercd; /* error code */ /* open SCREEN device */ strcpy( devnm, "SCREEN" ); dds = tk_opn_dev( devnm, TD_UPDATE ); /* open device in update mode */ /* read device specific image area */ ercd = tk_srea_dev( dds, DN_SCRBMP, &devbmp, sizeof(BMP), &asiz ); /* color map setting */ switch (devbmp.pixbits >> 8) { /* bit count per 1 pixel */ case 8 : ercd = tk_swri_dev( dds, DN_SCRCOLOR, (VP)colormap, sizeof(colormap), &asiz ); break; } doubl_buf_draw(&devbmp,&bufbmp); init(); tk_swri_dev(dds, DN_SCRUPDRECT, &r_upd, sizeof(RECT), &asiz); draw_buffer=(unsigned char *)malloc(maxpoints*sizeof(POINTSCR)); for(;;) { // init(); sprintf(temp,"X:%f,Y:%f\n",jingdu,weidu); draw(); draw_text(temp,10,20,255,&bufbmp); update_screen(&devbmp,&bufbmp); //wait for 50ms ercd = tk_dly_tsk(50); /* in case of break, exit loop for termination */ if (MERCD(ercd) == MERCD(E_RLWAI)) break; } free(draw_buffer); tk_cls_dev(dds, 0 ); /* terminate/delete key input task */ tk_exd_tsk();}EXPORT void exitpro(){ fill_rect( devbmp.bounds.c.left, devbmp.bounds.c.top, devbmp.bounds.c.right, devbmp.bounds.c.bottom, 0x0, &devbmp );}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -