00001
00002
00003
00004
00005 using namespace std;
00006 #include <iostream>
00007 #include <fstream>
00008 #include <cstdlib>
00009
00010 #include <netinet/in.h>
00011 typedef unsigned long ulong;
00012 typedef unsigned char uchar;
00013
00014
00015
00016
00017
00018
00019 #define RAS_MAGIC 0x59a66a95
00020 struct header
00021 {
00022 ulong magic;
00023 ulong width;
00024 ulong height;
00025 ulong depth;
00026 ulong length;
00027 ulong type;
00028 ulong maptype;
00029 ulong maplength;
00030
00031 };
00032
00033 #define RT_OLD 0
00034 #define RT_STANDARD 1
00035 #define RT_BYTE_ENCODED 2
00036 #define RT_FORMAT_RGB 3
00037 #define RT_FORMAT_TIFF 4
00038 #define RT_FORMAT_IFF 5
00039
00040
00041 #define RMT_RAW 2
00042
00043 #define RMT_NONE 0
00044 #define RMT_EQUAL_RGB 1
00045
00046 typedef struct {
00047 int type;
00048 int length;
00049 unsigned char *map[3];
00050 } colormap;
00051
00052
00053
00054 int main (int argc,char *argv[])
00055 {
00056 if (argc<2)
00057 {
00058 cerr << argv[0] << " -- display header of SUN raster file.\n";
00059 cerr << "usage: " << argv[0] << " rasfile\n";
00060 cerr << "example: " << argv[0] << " file.ras\n";
00061 cerr << "ex2: " << argv[0] << " file.ras |& head -n 9\n";
00062 exit(1);
00063 }
00064
00065
00066 ifstream ifp(argv[1]);
00067 if (!ifp) {cerr << "infile " << argv[1] << " does not exist\n"; exit(1);}
00068
00069
00070 header HEADER;
00071
00072
00073 ifp.read(((char *) &HEADER), sizeof(HEADER));
00074
00075
00076
00077
00078
00079
00080
00081
00082 HEADER.magic = ntohl(HEADER.magic);
00083 HEADER.width = ntohl(HEADER.width);
00084 HEADER.height = ntohl(HEADER.height);
00085 HEADER.depth = ntohl(HEADER.depth);
00086 HEADER.length = ntohl(HEADER.length);
00087 HEADER.type = ntohl(HEADER.type);
00088 HEADER.maptype = ntohl(HEADER.maptype);
00089 HEADER.maplength = ntohl(HEADER.maplength);
00090
00091 cerr << "Header for file: " << argv[1]
00092 << "\nmagic#: " << HEADER.magic
00093 << "\nwidth: " << HEADER.width
00094 << "\nheight: " << HEADER.height
00095 << "\ndepth: " << HEADER.depth
00096 << "\nlength: " << HEADER.length
00097 << "\ntype: " << HEADER.type
00098 << "\nmaptype: " << HEADER.maptype
00099 << "\nmaplength: " << HEADER.maplength
00100 << endl;
00101
00102
00103
00104
00105 unsigned char CMAP[3][HEADER.maplength/3];
00106 for(int color=0; color<3; ++color)
00107 {
00108 for(int i=0; i<int(HEADER.maplength/3); ++i)
00109 {
00110 ifp.get(*((char*)(&CMAP[color][i])));
00111
00112
00113
00114 }
00115
00116 }
00117
00118
00119 for(int i=0; i<int(HEADER.maplength/3); ++i)
00120 cerr << "rgb: " << int(CMAP[0][i]) << " "
00121 << int(CMAP[1][i]) << " "
00122 << int(CMAP[2][i]) << "\n";
00123
00124
00125 ifp.close();
00126 return 0;
00127 }