⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 drawmap.c

📁 GPS导航系统中
💻 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 + -