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

📄 linkbitmap.c

📁 openmap java写的开源数字地图程序. 用applet实现,可以像google map 那样放大缩小地图.
💻 C
字号:
/* ********************************************************************** *  * <copyright> *  *  BBN Technologies, a Verizon Company *  10 Moulton Street *  Cambridge, MA 02138 *  (617) 873-8000 *  *  Copyright (C) BBNT Solutions LLC. All rights reserved. *  * </copyright> * ********************************************************************** *  * $Source: /cvs/distapps/openmap/src/cserver/link/src/LinkBitmap.c,v $ * $RCSfile: LinkBitmap.c,v $ * $Revision: 1.2 $ * $Date: 2004/01/26 19:07:09 $ * $Author: dietrick $ *  * ********************************************************************** */#include <stdlib.h>#include <stdio.h>#include "LinkBitmap.h"#include "Link.h"#include "GlobalConstants.h"#include "Response.h"int WriteLinkBitmapHeader(LinkSocket *linkSocket){      int check = OK;    check = check || WriteChars(linkSocket, BITMAP_HEADER, lBITMAP_HEADER);    check = check || WriteInteger(linkSocket, GRAPHICTYPE_BITMAP);    return check;}int BufferedWriteLinkBitmapHeader(char *toBuffer){    int byteswritten = 0;    byteswritten += BufferedWriteChars(&toBuffer[byteswritten],                                       BITMAP_HEADER,                                       lBITMAP_HEADER);    byteswritten += BufferedWriteInteger(&toBuffer[byteswritten],                                         GRAPHICTYPE_BITMAP);    return byteswritten;}/*  @param LinkSocket: the socket connection on which data is written*/ int BufferedWriteLinkBitmapLatLon(LinkSocket *linkSocket,                                   double lat, double lon,                                   int width, int height,                                  int numberOfbytes, char *bitmap,                                  LinkArgs *linkArgs){    int buffercount;    char *buffer;    int retval;        buffercount = lBITMAP_HEADER + /* Bytes used by Header*/        N_BYTES_PER_INTEGER +  /*Bytes used by GRAPHIC_TYPE. It is an Integer*/        N_BYTES_PER_INTEGER +     /*Bytes used by RENDERTYPE identifier*/        2*N_BYTES_PER_FLOAT +  /*Bytes used by lat and lon*/        2*N_BYTES_PER_INTEGER +  /*Bytes used by width and height*/        N_BYTES_PER_INTEGER +  /*Bytes used by numberOfbytes*/        numberOfbytes +        /*Bytes used by bitmap*/           LinkSizeOfLinkArgs(linkArgs);        buffer = (char *)malloc(buffercount);    if (buffer == NULL)      return -1; /* Memory allocation error */    buffercount=0;        buffercount += BufferedWriteLinkBitmapHeader(&buffer[buffercount]);    buffercount += BufferedWriteInteger(&buffer[buffercount], RENDERTYPE_LATLON);     buffercount += BufferedWriteFloat(&buffer[buffercount],(float)lat);    buffercount += BufferedWriteFloat(&buffer[buffercount],(float)lon);    buffercount += BufferedWriteInteger(&buffer[buffercount], width);    buffercount += BufferedWriteInteger(&buffer[buffercount], height);    buffercount += BufferedWriteInteger(&buffer[buffercount], numberOfbytes);      buffercount += BufferedWriteChars(&buffer[buffercount],bitmap, numberOfbytes);    buffercount += BufferedWriteLinkArgs(&buffer[buffercount], linkArgs);        retval = WriteChars(linkSocket, buffer, buffercount);             free(buffer);    return retval;}int WriteLinkBitmapLatLon(LinkSocket *linkSocket,                           double lat, double lon,                           int width, int height,                          int numberOfbytes, char *bitmap,                          LinkArgs *linkArgs){    int check = OK;    check = check || WriteLinkBitmapHeader(linkSocket);    check = check || WriteInteger(linkSocket, RENDERTYPE_LATLON);    check = check || WriteFloat(linkSocket,(float)lat);    check = check || WriteFloat(linkSocket,(float)lon);    check = check || WriteInteger(linkSocket, width);    check = check || WriteInteger(linkSocket, height);    check = check || WriteInteger(linkSocket, numberOfbytes);      check = check || WriteChars(linkSocket,bitmap, numberOfbytes);    check = check || WriteLinkArgs(linkSocket, linkArgs);    return check; /* If -1, memory allocation error in WriteLinkArgs */}int BufferedWriteLinkBitmapXY(LinkSocket *linkSocket,                              int x, int y,                              int width, int height,                              int numberOfbytes, char *bitmap,                              LinkArgs *linkArgs){    int buffercount;    char *buffer;    int retval;    /*      buffercount corresponds to data being written in bytes below.    */    buffercount = lBITMAP_HEADER +  /* Bytes used by Header*/        N_BYTES_PER_INTEGER +     /*Bytes used by GRAPHIC_TYPE. It is an Integer*/        N_BYTES_PER_INTEGER +     /*Bytes used by RENDERTYPE identifier*/        4*N_BYTES_PER_INTEGER +   /*Bytes used by x,y,width and height*/        N_BYTES_PER_INTEGER +  /*Bytes used by numberOfbytes*/        numberOfbytes +        /*Bytes used by bitmap*/           LinkSizeOfLinkArgs(linkArgs);            buffer = (char *)malloc(sizeof(buffercount));    if (buffer == NULL)      return -1; /* Memory allocation error */    buffercount=0;    buffercount += BufferedWriteLinkBitmapHeader(&buffer[buffercount]);    buffercount += BufferedWriteInteger(&buffer[buffercount], RENDERTYPE_XY);    buffercount += BufferedWriteInteger(&buffer[buffercount], x);    buffercount += BufferedWriteInteger(&buffer[buffercount], y);    buffercount += BufferedWriteInteger(&buffer[buffercount], width);    buffercount += BufferedWriteInteger(&buffer[buffercount], height);    buffercount += BufferedWriteInteger(&buffer[buffercount], numberOfbytes);      buffercount += BufferedWriteChars(&buffer[buffercount],bitmap, numberOfbytes);    buffercount += BufferedWriteLinkArgs(&buffer[buffercount], linkArgs);        retval = WriteChars(linkSocket, buffer,buffercount);             free(buffer);    return retval;}int WriteLinkBitmapXY(LinkSocket *linkSocket,                      int x, int y,                      int width, int height,                      int numberOfbytes, char *bitmap,                      LinkArgs *linkArgs){    int check = OK;        check = check || WriteLinkBitmapHeader(linkSocket);    check = check || WriteInteger(linkSocket, RENDERTYPE_XY);    check = check || WriteInteger(linkSocket, x);    check = check || WriteInteger(linkSocket, y);    check = check || WriteInteger(linkSocket, width);    check = check || WriteInteger(linkSocket, height);    check = check || WriteInteger(linkSocket, numberOfbytes);      check = check || WriteChars(linkSocket,bitmap, numberOfbytes);    check = check || WriteLinkArgs(linkSocket, linkArgs);    return check; /* -1 if there was a memory allocation error in WriteLinkArgs*/}int BufferedWriteLinkBitmapOffset(LinkSocket *linkSocket,                                  double lat, double lon,                                  int x, int y,                                                      int width, int height,                                  int numberOfbytes, char *bitmap,                                  LinkArgs *linkArgs){    int buffercount;    char *buffer;    int retval;    /*      buffercount corresponds to data being written in bytes below.    */    buffercount = lBITMAP_HEADER +  /* Bytes used by Header*/        N_BYTES_PER_INTEGER +     /*Bytes used by GRAPHIC_TYPE. It is an Integer*/        N_BYTES_PER_INTEGER +     /*Bytes used by RENDERTYPE identifier*/        2*N_BYTES_PER_FLOAT +     /*Bytes used by lat and lon*/        4*N_BYTES_PER_INTEGER +   /*Bytes used by x,y,width and height*/        N_BYTES_PER_INTEGER +  /*Bytes used by numberOfbytes*/        numberOfbytes +        /*Bytes used by bitmap*/           LinkSizeOfLinkArgs(linkArgs);            buffer = (char *)malloc(sizeof(buffercount));    if (buffer == NULL)      return -1;  /* Memory allocation error */    buffercount=0;        buffercount += BufferedWriteLinkBitmapHeader(&buffer[buffercount]);    buffercount += BufferedWriteInteger(&buffer[buffercount], RENDERTYPE_OFFSET);    buffercount += BufferedWriteFloat(&buffer[buffercount],(float)lat);    buffercount += BufferedWriteFloat(&buffer[buffercount],(float)lon);    buffercount += BufferedWriteInteger(&buffer[buffercount], x);    buffercount += BufferedWriteInteger(&buffer[buffercount], y);    buffercount += BufferedWriteInteger(&buffer[buffercount], width);    buffercount += BufferedWriteInteger(&buffer[buffercount], height);    buffercount += BufferedWriteInteger(&buffer[buffercount], numberOfbytes);      buffercount += BufferedWriteChars(&buffer[buffercount],bitmap, numberOfbytes);    buffercount += BufferedWriteLinkArgs(&buffer[buffercount], linkArgs);        retval = WriteChars(linkSocket, buffer,buffercount);             free(buffer);    return retval;}int WriteLinkBitmapOffset(LinkSocket *linkSocket,                          double lat, double lon,                          int x, int y,                                              int width, int height,                          int numberOfbytes, char *bitmap,                          LinkArgs *linkArgs){    int check = OK;    check = check || WriteLinkBitmapHeader(linkSocket);    check = check || WriteInteger(linkSocket, RENDERTYPE_OFFSET);    check = check || WriteFloat(linkSocket,(float)lat);    check = check || WriteFloat(linkSocket,(float)lon);    check = check || WriteInteger(linkSocket, x);    check = check || WriteInteger(linkSocket, y);    check = check || WriteInteger(linkSocket, width);    check = check || WriteInteger(linkSocket, height);    check = check || WriteInteger(linkSocket, numberOfbytes);      check = check || WriteChars(linkSocket,bitmap, numberOfbytes);    check = check || WriteLinkArgs(linkSocket, linkArgs);    return check; /* -1 if there was a memory allocation error */}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -