本文整理汇总了C++中G_THROW函数的典型用法代码示例。如果您正苦于以下问题:C++ G_THROW函数的具体用法?C++ G_THROW怎么用?C++ G_THROW使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了G_THROW函数的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: G_THROW
void
JB2Dict::JB2Codec::Decode::code(const GP<JB2Dict> &gjim)
{
if(!gjim)
{
G_THROW( ERR_MSG("JB2Image.bad_number") );
}
JB2Dict &jim=*gjim;
// -------------------------
// THIS IS THE DECODING PART
// -------------------------
int rectype;
JB2Shape tmpshape;
do {
code_record(rectype, gjim, &tmpshape);
} while(rectype != END_OF_DATA);
if (!gotstartrecordp)
G_THROW( ERR_MSG("JB2Image.no_start") );
// cache bounding boxes
int nshapes = jim.get_shape_count();
int ishapes = jim.get_inherited_shape_count();
jim.boxes.resize(0, nshapes-ishapes-1);
for (int i = ishapes; i < nshapes; i++)
jim.boxes[i-ishapes] = libinfo[i];
// compress
jim.compress();
}
示例2: DEBUG_MSG
void
GIFFChunk::set_name(GUTF8String name)
{
DEBUG_MSG("GIFFChunk::set_name(): name='" << name << "'\n");
DEBUG_MAKE_INDENT(3);
const int colon=name.search(':');
if(colon>=0)
{
type=name.substr(0,colon);
name=name.substr(colon+1,(unsigned int)-1);
if(name.search(':')>=0)
G_THROW( ERR_MSG("GIFFManager.one_colon") );
}
DEBUG_MSG("auto-setting type to '" << type << "'\n");
if (name.contains(".[]")>=0)
G_THROW( ERR_MSG("GIFFManager.bad_char") );
strncpy(GIFFChunk::name, (const char *)name, 4);
GIFFChunk::name[4]=0;
for(int i=strlen(GIFFChunk::name);i<4;i++)
GIFFChunk::name[i]=' ';
}
示例3: while
void
DjVuText::decode(const GP<ByteStream> &gbs)
{
GUTF8String chkid;
GP<IFFByteStream> giff=IFFByteStream::create(gbs);
IFFByteStream &iff=*giff;
while( iff.get_chunk(chkid) )
{
if (chkid == "TXTa")
{
if (txt)
G_THROW( ERR_MSG("DjVuText.dupl_text") );
txt = DjVuTXT::create();
txt->decode(iff.get_bytestream());
}
else if (chkid == "TXTz")
{
if (txt)
G_THROW( ERR_MSG("DjVuText.dupl_text") );
txt = DjVuTXT::create();
const GP<ByteStream> gbsiff=BSByteStream::create(iff.get_bytestream());
txt->decode(gbsiff);
}
// Add decoding of other chunks here
iff.close_chunk();
}
}
示例4: defined
// ticks() --
// -- returns the number of milliseconds elapsed since
// a system dependent date.
unsigned long
GOS::ticks()
{
#if defined(UNIX)
struct timeval tv;
if (gettimeofday(&tv, NULL) < 0)
G_THROW(errmsg());
return (unsigned long)( ((tv.tv_sec & 0xfffff)*1000)
+ (tv.tv_usec/1000) );
#elif defined(WIN32)
DWORD clk = GetTickCount();
return (unsigned long)clk;
#elif defined(OS2)
ULONG clk = 0;
DosQuerySysInfo(QSV_MS_COUNT, QSV_MS_COUNT, (PVOID)&clk, sizeof(ULONG));
return clk;
#elif defined(macintosh)
return (unsigned long)((double)TickCount()*16.66);
#else
struct timeval tv;
if (gettimeofday(&tv, NULL) < 0)
G_THROW(errmsg());
return (unsigned long)( ((tv.tv_sec & 0xfffff)*1000)
+ (tv.tv_usec/1000) );
#endif
}
示例5: defined
// cwd([dirname])
// -- changes directory to dirname (when specified).
// returns the full path name of the current directory.
GUTF8String
GOS::cwd(const GUTF8String &dirname)
{
#if defined(UNIX) || defined(macintosh) || defined(OS2)
if (dirname.length() && chdir(dirname.getUTF82Native())==-1)//MBCS cvt
G_THROW(errmsg());
char *string_buffer;
GPBuffer<char> gstring_buffer(string_buffer,MAXPATHLEN+1);
char *result = getcwd(string_buffer,MAXPATHLEN);
if (!result)
G_THROW(errmsg());
return GNativeString(result).getNative2UTF8();//MBCS cvt
#elif defined (WIN32)
char drv[2];
if (dirname.length() && _chdir(dirname.getUTF82Native())==-1)//MBCS cvt
G_THROW(errmsg());
drv[0]= dot ; drv[1]=0;
char *string_buffer;
GPBuffer<char> gstring_buffer(string_buffer,MAXPATHLEN+1);
char *result = getcwd(string_buffer,MAXPATHLEN);
GetFullPathName(drv, MAXPATHLEN, string_buffer, &result);
return GNativeString(string_buffer).getNative2UTF8();//MBCS cvt
#else
#error "Define something here for your operating system"
#endif
}
示例6: while
void
MMRDecoder::VLTable::init(const int nbits)
{
// count entries
int ncodes = 0;
while (code[ncodes].codelen)
ncodes++;
// check arguments
if (nbits<=1 || nbits>16)
G_THROW(invalid_mmr_data);
if (ncodes>=256)
G_THROW(invalid_mmr_data);
codewordshift = 32 - nbits;
// allocate table
int size = (1<<nbits);
gindex.resize(size);
gindex.set(ncodes);
// process codes
for (int i=0; i<ncodes; i++) {
const int c = code[i].code;
const int b = code[i].codelen;
if(b<=0 || b>nbits)
{
G_THROW(invalid_mmr_data);
}
// fill table entries whose index high bits are code.
int n = c + (1<<(nbits-b));
while ( --n >= c ) {
if(index[n] != ncodes)
G_THROW( ERR_MSG("MMRDecoder.bad_codebook") );
index[n] = i;
}
}
}
示例7: IMG_Load
SDL_Surface *load_image( std::string filename )
{
SDL_Surface* loadedImage = NULL;
//The optimized surface that will be used
SDL_Surface* optimizedImage = NULL;
//Load the image
loadedImage = IMG_Load( filename.c_str() );
if(loadedImage == NULL)
G_THROW(filename + " couldn't be loaded");
//If the image loaded
if( loadedImage != NULL )
{
//Create an optimized surface
optimizedImage = SDL_DisplayFormatAlpha( loadedImage );
//assert(optimizedImage);
if(optimizedImage == NULL)
G_THROW("ImageFile " + filename + " couldn't be converted");
//Free the old surface
SDL_FreeSurface( loadedImage );
}
//Return the optimized surface
return optimizedImage;
}
示例8: G_THROW
void
DjVuTXT::Zone::decode(const GP<ByteStream> &gbs, int maxtext,
const Zone * parent, const Zone * prev)
{
ByteStream &bs=*gbs;
// Decode type
ztype = (ZoneType) bs.read8();
if ( ztype<PAGE || ztype>CHARACTER )
G_THROW( ERR_MSG("DjVuText.corrupt_text") );
// Decode coordinates
int x=(int) bs.read16()-0x8000;
int y=(int) bs.read16()-0x8000;
int width=(int) bs.read16()-0x8000;
int height=(int) bs.read16()-0x8000;
// Decode text info
text_start = (int) bs.read16()-0x8000;
// int start=text_start;
text_length = bs.read24();
if (prev)
{
if (ztype==PAGE || ztype==PARAGRAPH || ztype==LINE)
{
x=x+prev->rect.xmin;
y=prev->rect.ymin-(y+height);
} else // Either COLUMN or WORD or CHARACTER
{
x=x+prev->rect.xmax;
y=y+prev->rect.ymin;
}
text_start+=prev->text_start+prev->text_length;
} else if (parent)
{
x=x+parent->rect.xmin;
y=parent->rect.ymax-(y+height);
text_start+=parent->text_start;
}
rect=GRect(x, y, width, height);
// Get children size
int size = bs.read24();
// Checks
if (rect.isempty() || text_start<0 || text_start+text_length>maxtext )
G_THROW( ERR_MSG("DjVuText.corrupt_text") );
// Process children
const Zone * prev_child=0;
children.empty();
while (size-- > 0)
{
Zone *z = append_child();
z->decode(gbs, maxtext, this, prev_child);
prev_child=z;
}
}
示例9: lk
GUTF8String
DjVuNavDir::page_to_name(int page) const
{
GCriticalSectionLock lk((GCriticalSection *)&lock);
if (page<0)
G_THROW( ERR_MSG("DjVuNavDir.neg_page") );
if (page>=page2name.size())
G_THROW( ERR_MSG("DjVuNavDir.large_page") );
return page2name[page];
}
示例10: create_masksub_chunks
void
create_masksub_chunks(IFFByteStream &iff, const GURL &url)
{
// Check and load pixmap file
if (!g().stencil)
G_THROW("The use of a raw ppm image requires a stencil");
GP<ByteStream> gibs=ByteStream::create(url, "rb");
ByteStream &ibs=*gibs;
GP<GPixmap> graw_pm=GPixmap::create(ibs);
GPixmap &raw_pm=*graw_pm;
if ((int) g().stencil->get_width() != (int) raw_pm.columns())
G_THROW("Stencil and raw image have different widths!");
if ((int) g().stencil->get_height() != (int) raw_pm.rows())
G_THROW("Stencil and raw image have different heights!");
// Encode foreground
{
GP<GPixmap> gfg_img=GPixmap::create();
GPixmap &fg_img=*gfg_img;
GP<GBitmap> fg_mask=GBitmap::create();
processForeground(&raw_pm, g().stencil, fg_img, *fg_mask);
GP<IW44Image> fg_pm = IW44Image::create_encode(fg_img, fg_mask, IW44Image::CRCBfull);
IWEncoderParms parms[8];
iff.put_chunk("FG44");
parms[0].slices = 100;
fg_pm->encode_chunk(iff.get_bytestream(), parms[0]);
iff.close_chunk();
}
// Encode backgound
{
GP<GPixmap> gbg_img=GPixmap::create();
GPixmap &bg_img=*gbg_img;
GP<GBitmap> bg_mask=GBitmap::create();
processBackground(&raw_pm, g().stencil, bg_img, *bg_mask);
GP<IW44Image> bg_pm = IW44Image::create_encode(bg_img, bg_mask, IW44Image::CRCBnormal);
IWEncoderParms parms[4];
parms[0].bytes = 10000;
parms[0].slices = 74;
iff.put_chunk("BG44");
bg_pm->encode_chunk(iff.get_bytestream(), parms[0]);
iff.close_chunk();
parms[1].slices = 84;
iff.put_chunk("BG44");
bg_pm->encode_chunk(iff.get_bytestream(), parms[1]);
iff.close_chunk();
parms[2].slices = 90;
iff.put_chunk("BG44");
bg_pm->encode_chunk(iff.get_bytestream(), parms[2]);
iff.close_chunk();
parms[3].slices = 97;
iff.put_chunk("BG44");
bg_pm->encode_chunk(iff.get_bytestream(), parms[3]);
iff.close_chunk();
}
}
示例11: lock
void
GBitmap::init(ByteStream &ref, int aborder)
{
GMonitorLock lock(monitor());
// Get magic number
char magic[2];
magic[0] = magic[1] = 0;
ref.readall((void*)magic, sizeof(magic));
char lookahead = '\n';
int acolumns = read_integer(lookahead, ref);
int arows = read_integer(lookahead, ref);
init(arows, acolumns, aborder);
// go reading file
if (magic[0]=='P')
{
switch(magic[1])
{
case '1':
grays = 2;
read_pbm_text(ref);
return;
case '2':
grays = 1 + read_integer(lookahead, ref);
if (grays > 256)
G_THROW("Cannot read PGM with depth greater than 8 bits.");
read_pgm_text(ref);
return;
case '4':
grays = 2;
read_pbm_raw(ref);
return;
case '5':
grays = 1 + read_integer(lookahead, ref);
if (grays > 256)
grays = 256;
read_pgm_raw(ref);
return;
}
}
else if (magic[0]=='R')
{
switch(magic[1])
{
case '4':
grays = 2;
read_rle_raw(ref);
return;
}
}
G_THROW( ERR_MSG("GBitmap.bad_format") );
}
示例12: analyze_jb2_chunk
void
analyze_jb2_chunk(const GURL &url)
{
if (!g().jb2stencil || !g().jb2stencil->size())
{
GP<ByteStream> gbs=ByteStream::create(url,"rb");
ByteStream &bs=*gbs;
g().jb2stencil = ByteStream::create();
// Check if file is an IFF file
char magic[4];
memset(magic,0,sizeof(magic));
bs.readall(magic,sizeof(magic));
if (!GStringRep::cmp(magic,"AT&T",4))
bs.readall(magic,sizeof(magic));
if (GStringRep::cmp(magic,"FORM",4))
{
// Must be a raw file
bs.seek(0);
g().jb2stencil->copy(bs);
}
else
{
// Search Sjbz chunk
bs.seek(0);
GUTF8String chkid;
GP<IFFByteStream> giff=IFFByteStream::create(gbs);
IFFByteStream &iff=*giff;
if (iff.get_chunk(chkid)==0 || chkid!="FORM:DJVU")
G_THROW("Expecting a DjVu file!");
for(; iff.get_chunk(chkid); iff.close_chunk())
if (chkid=="Sjbz") { g().jb2stencil->copy(bs); break; }
}
// Check result
g().jb2stencil->seek(0);
if (!g().jb2stencil->size())
G_THROW("Could not find JB2 data");
// Decode
g().stencil=JB2Image::create();
g().stencil->decode(g().jb2stencil,&provide_shared_dict,NULL);
int jw = g().stencil->get_width();
int jh = g().stencil->get_height();
if (w < 0)
w = jw;
if (h < 0)
h = jh;
if (blit_count < 0)
blit_count = g().stencil->get_blit_count();
if (jw!=w || jh!=h)
DjVuPrintErrorUTF8("djvumake: mask size (%s) does not match info size\n", (const char *)url);
}
}
示例13: lock
GP<DjVuFile>
lt_XMLParser::Impl::get_file(const GURL &url,GUTF8String id)
{
GP<DjVuFile> dfile;
GP<DjVuDocument> doc;
GCriticalSectionLock lock(&xmlparser_lock);
{
GPosition pos=m_docs.contains(url.get_string());
if(pos)
{
doc=m_docs[pos];
}else
{
doc=DjVuDocument::create_wait(url);
if(! doc->wait_for_complete_init())
{
G_THROW(( ERR_MSG("XMLAnno.fail_init") "\t")+url.get_string() );
}
m_docs[url.get_string()]=doc;
}
if(id.is_int())
{
const int xpage=id.toInt(); //atoi((char const *)page);
if(xpage>0)
id=doc->page_to_id(xpage-1);
}else if(!id.length())
{
id=doc->page_to_id(0);
}
}
const GURL fileurl(doc->id_to_url(id));
GPosition dpos(m_files.contains(fileurl.get_string()));
if(!dpos)
{
if(!doc->get_id_list().contains(id))
{
G_THROW( ERR_MSG("XMLAnno.bad_page") );
}
dfile=doc->get_djvu_file(id,false);
if(!dfile)
{
G_THROW( ERR_MSG("XMLAnno.bad_page") );
}
m_files[fileurl.get_string()]=dfile;
}else
{
dfile=m_files[dpos];
}
return dfile;
}
示例14: G_THROW
void
DjVuPalette::decode(GP<ByteStream> gbs)
{
ByteStream &bs=*gbs;
// Make sure that everything is clear
delete hist;
delete pmap;
hist = 0;
pmap = 0;
mask = 0;
// Code version
int version = bs.read8();
if ( (version & 0x7f) != DJVUPALETTEVERSION)
G_THROW( ERR_MSG("DjVuPalette.bad_version") );
// Code palette
const int palettesize = bs.read16();
if (palettesize<0 || palettesize>MAXPALETTESIZE)
G_THROW( ERR_MSG("DjVuPalette.bad_palette") );
palette.resize(0,palettesize-1);
{ // extra nesting for windows
for (int c=0; c<palettesize; c++)
{
unsigned char p[3];
bs.readall((void*)p, 3);
palette[c].p[0] = p[0];
palette[c].p[1] = p[1];
palette[c].p[2] = p[2];
palette[c].p[3] = (p[0]*BMUL+p[1]*GMUL+p[2]*RMUL)/SMUL;
}
}
// Code data
if (version & 0x80)
{
int datasize = bs.read24();
if (datasize<0)
G_THROW( ERR_MSG("DjVuPalette.bad_palette") );
colordata.resize(0,datasize-1);
GP<ByteStream> gbsb=BSByteStream::create(gbs);
ByteStream &bsb=*gbsb;
{ // extra nesting for windows
for (int d=0; d<datasize; d++)
{
short s = bsb.read16();
if (s<0 || s>=palettesize)
G_THROW( ERR_MSG("DjVuPalette.bad_palette") );
colordata[d] = s;
}
}
}
}
示例15: G_THROW
bool
MMRDecoder::decode_header(
ByteStream &inp, int &width, int &height, int &invert)
{
unsigned long int magic = inp.read32();
if((magic&0xfffffffc) != 0x4d4d5200)
G_THROW( ERR_MSG("MMRDecoder.unrecog_header") );
invert = ((magic & 0x1) ? 1 : 0);
const bool strip = ((magic & 0x2) ? 1 : 0);
width = inp.read16();
height = inp.read16();
if (width<=0 || height<=0)
G_THROW( ERR_MSG("MMRDecoder.bad_header") );
return strip;
}