Changeset 414


Ignore:
Timestamp:
Apr 26, 2006 7:51:03 PM (18 years ago)
Author:
mmc
Message:

Added BMP encoding to image returned from nanovis server.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/gui/vizservers/nanovis/nanovis.cpp

    r406 r414  
    949949}
    950950
     951// used internally to build up the BMP file header
     952// writes an integer value into the header data structure at pos
     953void
     954bmp_header_add_int(unsigned char* header, int& pos, int data)
     955{
     956    header[pos++] = data & 0xff;
     957    header[pos++] = (data >> 8) & 0xff;
     958    header[pos++] = (data >> 16) & 0xff;
     959    header[pos++] = (data >> 24) & 0xff;
     960}
     961
    951962
    952963void xinetd_listen(){
     
    985996    write(0, rle, rle_size);    //unsigned byte
    986997#else
     998    unsigned char header[54];
     999    int pos = 0;
     1000    header[pos++] = 'B';
     1001    header[pos++] = 'M';
     1002
     1003    // file size in bytes
     1004    bmp_header_add_int(header, pos, win_width*win_height*3 + sizeof(header));
     1005
     1006    // reserved value (must be 0)
     1007    bmp_header_add_int(header, pos, 0);
     1008
     1009    // offset in bytes to start of bitmap data
     1010    bmp_header_add_int(header, pos, sizeof(header));
     1011
     1012    // size of the BITMAPINFOHEADER
     1013    bmp_header_add_int(header, pos, 40);
     1014
     1015    // width of the image in pixels
     1016    bmp_header_add_int(header, pos, win_width);
     1017
     1018    // height of the image in pixels
     1019    bmp_header_add_int(header, pos, win_height);
     1020
     1021    // 1 plane + 24 bits/pixel << 16
     1022    bmp_header_add_int(header, pos, 1572865);
     1023
     1024    // no compression
     1025    // size of image for compression
     1026    bmp_header_add_int(header, pos, 0);
     1027    bmp_header_add_int(header, pos, 0);
     1028
     1029    // x pixels per meter
     1030    // y pixels per meter
     1031    bmp_header_add_int(header, pos, 0);
     1032    bmp_header_add_int(header, pos, 0);
     1033
     1034    // number of colors used (0 = compute from bits/pixel)
     1035    // number of important colors (0 = all colors important)
     1036    bmp_header_add_int(header, pos, 0);
     1037    bmp_header_add_int(header, pos, 0);
     1038
     1039    write(0, header, sizeof(header));
    9871040    write(0, screen_buffer, win_width * win_height * 3);
    9881041#endif
Note: See TracChangeset for help on using the changeset viewer.