Files
geant4/source/visualization/RayTracer/include/G4RTJpeg.hh
T
2016-06-08 16:57:27 +02:00

208 lines
5.4 KiB
C++

//
// ********************************************************************
// * DISCLAIMER *
// * *
// * The following disclaimer summarizes all the specific disclaimers *
// * of contributors to this software. The specific disclaimers,which *
// * govern, are listed with their locations in: *
// * http://cern.ch/geant4/license *
// * *
// * Neither the authors of this software system, nor their employing *
// * institutes,nor the agencies providing financial support for this *
// * work make any representation or warranty, express or implied, *
// * regarding this software system or assume any liability for its *
// * use. *
// * *
// * This code implementation is the intellectual property of the *
// * GEANT4 collaboration. *
// * By copying, distributing or modifying the Program (or any work *
// * based on the Program) you indicate your acceptance of this *
// * statement, and all its terms. *
// ********************************************************************
//
//
// $Id: G4RTJpeg.hh,v 1.5 2001/07/11 10:09:01 gunter Exp $
// GEANT4 tag $Name: geant4-05-00 $
//
//
// class description:
//
// This header file defines some static constant variables and error classes
// used internally by G4JpegMaker and related classes
//
#ifndef G4RTJpeg_H
#define G4RTJpeg_H 1
typedef unsigned char u_char;
typedef unsigned int u_int;
const char JFIF[] = "JFIF";
const char JFXX[] = "JFXX";
const double Sqrt2 = 1.41421356;
const double DisSqrt2 = 1.0 / Sqrt2;
const double PaiDiv16 = 3.14159265 / 16;
//Zigzag
static const int Zigzag[64] = {
0, 1, 8, 16, 9, 2, 3, 10,
17, 24, 32, 25, 18, 11, 4, 5,
12, 19, 26, 33, 40, 48, 41, 34,
27, 20, 13, 6, 7, 14, 21, 28,
35, 42, 49, 56, 57, 50, 43, 36,
29, 22, 15, 23, 30, 37, 44, 51,
58, 59, 52, 45, 38, 31, 39, 46,
53, 60, 61, 54, 47, 55, 62, 63
};
//ProcessResult
enum
jProcessResult{
M_NoError = 0,
M_RuntimeError = -1,
M_DataError = -2
};
// JpegMarkerCode
enum
jMarker{
M_SOF0 = 0xc0,
M_SOF1 = 0xc1,
M_SOF2 = 0xc2,
M_SOF3 = 0xc3,
M_SOF5 = 0xc5,
M_SOF6 = 0xc6,
M_SOF7 = 0xc7,
M_JPG = 0xc8,
M_SOF9 = 0xc9,
M_SOF10 = 0xca,
M_SOF11 = 0xcb,
M_SOF13 = 0xcd,
M_SOF14 = 0xce,
M_SOF15 = 0xcf,
M_DHT = 0xc4,
M_DAC = 0xcc,
M_RST0 = 0xd0, M_RST1 = 0xd1,
M_RST2 = 0xd2, M_RST3 = 0xd3,
M_RST4 = 0xd4, M_RST5 = 0xd5,
M_RST6 = 0xd6, M_RST7 = 0xd7,
M_SOI = 0xd8,
M_EOI = 0xd9,
M_SOS = 0xda,
M_DQT = 0xdb,
M_DNL = 0xdc,
M_DRI = 0xdd,
M_DHP = 0xde,
M_EXP = 0xdf,
M_COM = 0xfe,
M_APP0 = 0xe0, M_APP1 = 0xe1,
M_APP2 = 0xe2, M_APP3 = 0xe3,
M_APP4 = 0xe4, M_APP5 = 0xe5,
M_APP6 = 0xe6, M_APP7 = 0xe7,
M_APP8 = 0xe8, M_APP9 = 0xe9,
M_APP10 = 0xea, M_APP11 = 0xeb,
M_APP12 = 0xec, M_APP13 = 0xed,
M_APP14 = 0xee, M_APP15 = 0xef,
M_JPG0 = 0xf0, M_JPG1 = 0xf1,
M_JPG2 = 0xf2, M_JPG3 = 0xf3,
M_JPG4 = 0xf4, M_JPG5 = 0xf5,
M_JPG6 = 0xf6, M_JPG7 = 0xf7,
M_JPG8 = 0xf8, M_JPG9 = 0xf9,
M_JPG10 = 0xfa, M_JPG11 = 0xfb,
M_JPG12 = 0xfc, M_JPG13 = 0xfd,
M_TEM = 0x01,
M_RESst = 0x02,
M_RESend = 0xbf,
M_Error = 0xff,
M_Marker = 0xff
};
//JpegProperty
struct
G4JpegProperty{
int nRow;
int nColumn;
int Dimension;
int SamplePrecision;
const char * Comment;
int Format;
u_char MajorRevisions;
u_char MinorRevisions;
int Units;
int HDensity;
int VDensity;
int HThumbnail;
int VThumbnail;
int ExtensionCode;
};
//MemoryError
class G4MemoryError
{
public:
G4MemoryError(int size, const char* message)
{mSize = size; mMessage = message;};
int mSize;
const char* mMessage;
};
//IndexError
class G4IndexError
{
public:
G4IndexError(int maxIndex, int errorIndex, const char* mes)
{mMaxIndex = maxIndex; mErrorIndex = errorIndex; mMessage = mes;};
int mMaxIndex;
int mErrorIndex;
const char* mMessage;
};
//BufferError
class G4BufferError
{
public:
G4BufferError(const char* mes)
{mMessage = mes;};
const char* mMessage;
};
//DataFormatError
class G4DataFormatError
{
public:
G4DataFormatError(void* address, const char* message)
{mAddress = address; mMessage = message;};
void* mAddress;
const char* mMessage;
};
//NotSupported
class G4NotSupported
{
public:
G4NotSupported(jMarker aMark, void* address)
{mMark = aMark; mAddress = address;};
jMarker mMark;
void* mAddress;
};
#endif