Classes | |
struct | AdaptiveSkip |
struct | Atomic |
Atomic integer operations. More... | |
class | CFG |
Context free grammars. More... | |
struct | CharEnc |
Handles transcoding character sequences between various character encodings. More... | |
struct | ColorRGBA |
struct | ThreadTerminatedException |
struct | Condition |
A condition queue for implementing thread synchronization. More... | |
struct | DefaultPrinter |
class | DFA |
Deterministic finite state automata (DFA). More... | |
struct | Exception |
The ultimate base class for all exceptions defined in the Archon framework. More... | |
struct | UnexpectedException |
Signals an unexpected exceptional condition. More... | |
struct | InternalException |
An unexpected internal error was encountered. More... | |
struct | ArgumentException |
An unexpected problem with one or ore of the method arguments. More... | |
struct | StateException |
The request operation is unexpectedly not compatible with the current state of the object. More... | |
struct | ResourceException |
An unexpected problem with getting access to external resources. More... | |
struct | IOException |
An problem relating to application/component input and/or output. More... | |
struct | ParseException |
An problem relating to the syntax or structure of some text. More... | |
struct | Image |
A general purpose in-memory bitmap image (rectangular pixel array) with value semantics as well as copy-on-write semantics to improve performance. More... | |
struct | ImageData |
A highly elaborate and configurable image data accessor with the ability to describe image data layout in a very general and flexible way. More... | |
struct | FormatLibgif |
An Image compatible frontend for libungif . More... | |
struct | FormatLibjpeg |
struct | FormatLibpng |
An Image compatible frontend for libpng . More... | |
struct | Job |
An chunk of work that can be added to a Job::Queue. More... | |
struct | KDTree |
struct | LexerBase |
An abstract base class for lexers. More... | |
class | Lexer |
A lexer controlled by regular expression. More... | |
struct | StandardLogger |
struct | Logger |
class | LrParserBase |
An abstract base class for LR parsers. More... | |
struct | AutomatonSymbolPrinter |
class | ClrParser |
class | SlrParser |
struct | Array |
A wrapper around a simple conventional array whose memory allocation and deallocation is handled automatically. More... | |
class | MinimalBoundingBall |
struct | MutaRef |
Reference counting with copy-on-write (or lazy copy) semantics. More... | |
struct | MutaRefObjectBase |
struct | MutaRefObject |
Convenience class for adding copy-on-write semantics to a type that for some reason cannot or should not be made to derive from MutaRefObjectBase. More... | |
struct | Mutex |
A mutex for thread synchronization. More... | |
class | NFA |
Nondeterministic finite state automata (NFA). More... | |
struct | Options |
struct | PixelFormat |
Supports any number of channels (color components. More... | |
struct | MesherException |
struct | MesherContext |
struct | ProgressBase |
struct | ProgressBar |
struct | ProgressStatus |
struct | ForwardDestroyedException |
struct | RefNoLockTag |
struct | RefSafeIncTag |
struct | Ref |
Intrusive reference counted smart pointer. More... | |
struct | RefObjectBase |
Base class for smart pointer objects. More... | |
struct | RefObject |
Convenience class for adding a reference count to a type that for some reason cannot or should not be made to derive from RefObjectBase. More... | |
struct | BackRef |
BackRef is almost an identical copy of Ref thus allowing you to work with two sets of references to the same class. More... | |
struct | BackRefObjectBase |
Base class for objects supporting both forward and backward references to it. More... | |
struct | RefMapBase |
Base class for all RefMaps. More... | |
struct | RefMap |
A map between object references on the "inside" and object indices on the "outside". More... | |
class | Regex |
Regular expression. More... | |
struct | Thread |
A thread of execution (aka light weight proccess or LWP) represented as an object. More... | |
struct | Semaphore |
A semaphore. More... | |
struct | MethodVoidRunner |
struct | MethodArgRunner |
struct | FuncVoidRunner |
struct | FuncArgRunner |
struct | Time |
Representation of time in nanosecond precision. More... | |
struct | Uri |
Encapsulation and syntactical check of a URI (Universal Resource Identifier). More... | |
class | UriReference |
UriReference represents a URI reference as defined in RFC 2396. More... | |
class | Window |
Namespaces | |
namespace | Color |
namespace | File |
namespace | KeyboardEvents |
Holds a configurabe keyboard event dispatcher. | |
namespace | MouseEvents |
Holds a configurabe mouse event dispatcher. | |
namespace | ParseValues |
Basic value parsing. | |
namespace | Stream |
Definition of abstract stream end-points that are usefull for inter-thread communication. | |
namespace | Term |
namespace | Text |
namespace | Unicode |
namespace | Web |
Holds the implementation of a web content loader. | |
Typedefs | |
typedef Array< char > | MemoryBuffer |
typedef Ref< RefObjectBase > | RefAny |
typedef Ref< const RefObjectBase > | RefAnyConst |
typedef RefObject< ustring > | UAttr |
typedef RefObject< pair< int, int > > | IPAttr |
typedef unsigned | uchar |
typedef basic_string< uchar > | ustring |
Enumerations | |
enum | Scheme { scheme_file, scheme_http, scheme_ftp } |
enum | Key { key_first, key_backspace, key_tab, key_clear, key_return, key_pause, key_escape, key_space, key_exclaim, key_quotedbl, key_hash, key_dollar, key_ampersand, key_quote, key_leftparen, key_rightparen, key_asterisk, key_plus, key_comma, key_minus, key_period, key_slash, key_0, key_1, key_2, key_3, key_4, key_5, key_6, key_7, key_8, key_9, key_colon, key_semicolon, key_less, key_equals, key_greater, key_question, key_at, key_leftbracket, key_backslash, key_rightbracket, key_caret, key_underscore, key_backquote, key_a, key_b, key_c, key_d, key_e, key_f, key_g, key_h, key_i, key_j, key_k, key_l, key_m, key_n, key_o, key_p, key_q, key_r, key_s, key_t, key_u, key_v, key_w, key_x, key_y, key_z, key_delete, key_world_0, key_world_1, key_world_2, key_world_3, key_world_4, key_world_5, key_world_6, key_world_7, key_world_8, key_world_9, key_world_10, key_world_11, key_world_12, key_world_13, key_world_14, key_world_15, key_world_16, key_world_17, key_world_18, key_world_19, key_world_20, key_world_21, key_world_22, key_world_23, key_world_24, key_world_25, key_world_26, key_world_27, key_world_28, key_world_29, key_world_30, key_world_31, key_world_32, key_world_33, key_world_34, key_world_35, key_world_36, key_world_37, key_world_38, key_world_39, key_world_40, key_world_41, key_world_42, key_world_43, key_world_44, key_world_45, key_world_46, key_world_47, key_world_48, key_world_49, key_world_50, key_world_51, key_world_52, key_world_53, key_world_54, key_world_55, key_world_56, key_world_57, key_world_58, key_world_59, key_world_60, key_world_61, key_world_62, key_world_63, key_world_64, key_world_65, key_world_66, key_world_67, key_world_68, key_world_69, key_world_70, key_world_71, key_world_72, key_world_73, key_world_74, key_world_75, key_world_76, key_world_77, key_world_78, key_world_79, key_world_80, key_world_81, key_world_82, key_world_83, key_world_84, key_world_85, key_world_86, key_world_87, key_world_88, key_world_89, key_world_90, key_world_91, key_world_92, key_world_93, key_world_94, key_world_95, key_kp0, key_kp1, key_kp2, key_kp3, key_kp4, key_kp5, key_kp6, key_kp7, key_kp8, key_kp9, key_kp_period, key_kp_divide, key_kp_multiply, key_kp_minus, key_kp_plus, key_kp_enter, key_kp_equals, key_up, key_down, key_right, key_left, key_insert, key_home, key_end, key_pageup, key_pagedown, key_f1, key_f2, key_f3, key_f4, key_f5, key_f6, key_f7, key_f8, key_f9, key_f10, key_f11, key_f12, key_f13, key_f14, key_f15, key_numlock, key_capslock, key_scrollock, key_rshift, key_lshift, key_rctrl, key_lctrl, key_ralt, key_lalt, key_rmeta, key_lmeta, key_lsuper, key_rsuper, key_mode, key_compose, key_help, key_print, key_sysreq, key_break, key_menu, key_power, key_euro, _key_last } |
Functions | |
template<typename T> | |
void | set_include (const set< T > &right, set< T > &left) |
string | cxxDemangle (string mangledName) |
Tries to demangle the argument. | |
template<typename T> | |
string | cxxDemangledType () |
template<typename T> | |
string | cxxDemangledType (T &t) |
bool | exceptionCatchInfo (Exception::Formatter format, string &result) |
Extract information from the last thrown exception. | |
Image::Format * | getDefaultGifFormat () |
The GIF image format used by Image by default. | |
Image::Format * | getDefaultJpegFormat () |
The JPEG image format used by Image by default. | |
Image::Format * | getDefaultPngFormat () |
The PNG image format used by Image by default. | |
Image::Format * | getDefaultPnmFormat () |
The PNM image format used by Image by default. | |
Image::Format * | getDefaultTiffFormat () |
The TIFF image format used by Image by default. | |
vector< bool > | detectNativeEndianness () |
Detect the native endianness. | |
bool | compareEndianness (const vector< bool > &a, const vector< bool > &b=vector< bool >(), int levels=0) |
Compare two endianness descriptions for compatibility or compare an endianness description to the native endianness. | |
vector< int > | computeBytePermutation (const vector< bool > &endianness, int levels) |
int | findLeastSignificantBit (unsigned v) |
Get the index of the least significant bit in the argument. | |
int | findMostSignificantBit (unsigned v) |
Get the index of the most significant bit in the argument. | |
template<typename T> | |
T | readWithBytePermutation (const char *data, const vector< int > &bytePermutation) |
template<typename T> | |
T | readWithSpecificEndianness (const char *data, const vector< bool > &endianness) |
void | meshPolygon (const vector< Vector3 > &polygon, double maxPatchSize, MesherContext *context) |
Mesh a polygon. | |
void | meshPolygon (const vector< Vector3 > &polygon, double maxPatchSize, vector< Vector3 > &resultingVertices, vector< int > &resultingPolygons) |
A convenience wrapper for the callback version of 'meshPolygon'. | |
int | drawInt (int bound) |
double | drawFloat () |
double | drawFloatOpen () |
Math::Vector3 | drawUnitVector3 () |
string | schemeName (Scheme scheme) |
ostream & | operator<< (ostream &out, const Uri &u) |
ostream & | operator<< (ostream &out, const UriReference &r) |
Variables | |
Archon::Utilities::FormatLibgif | reader |
An Image compatible frontend for libungif . | |
Archon::Utilities::FormatLibgif * | logger |
An Image compatible frontend for libungif . | |
Archon::Utilities::FormatLibgif | writer |
An Image compatible frontend for libungif . | |
Archon::Utilities::FormatLibgif | InternalException |
An Image compatible frontend for libungif . | |
Archon::Utilities::FormatLibgif | supported |
An Image compatible frontend for libungif . | |
const unsigned | lowalphaMask = 1 |
const unsigned | upalphaMask = 2 |
const unsigned | digitMask = 4 |
const unsigned | markMask = 8 |
const unsigned | commonMask = 16 |
const unsigned | slashMask = 32 |
const unsigned | colonMask = 64 |
const unsigned | semicolonMask = 128 |
const unsigned | equalMask = 256 |
const unsigned | questionmarkMask = 512 |
const unsigned | commercialAtMask = 1024 |
const unsigned | otherMask = 2048 |
const unsigned | alphaMask = lowalphaMask|upalphaMask |
const unsigned | alphanumMask = alphaMask|digitMask |
const unsigned | unreservedMask = alphanumMask|markMask |
const unsigned | reservedMask |
const unsigned | userMask |
const unsigned | userInfoMask = userMask|colonMask |
const unsigned | pcharNoEqualMask |
const unsigned | pcharMask = pcharNoEqualMask|equalMask |
const unsigned | uricNoSlashMask = pcharMask|semicolonMask|questionmarkMask |
const unsigned | uricMask = uricNoSlashMask|slashMask |
const unsigned | anyMask = uricMask|otherMask |
unsigned | charClassTable [127-32] |
Defines up to 16 potentially overlapping character classes by letting each bit position represent one class. |
|
Compare two endianness descriptions for compatibility or compare an endianness description to the native endianness.
Definition at line 53 of file memory.C. References detectNativeEndianness(). Referenced by Archon::Utilities::ImageData::ImageData(). |
|
Definition at line 74 of file memory.C. References detectNativeEndianness(), n, and std::swap(). Referenced by Archon::Utilities::ImageData::ImageData(), and readWithSpecificEndianness(). |
|
Tries to demangle the argument. If this is not possible then the argument is returned unchanged.
Definition at line 30 of file cxx_demangle.C. References size. Referenced by cxxDemangledType(), Archon::Utilities::Exception::explainLong(), and Archon::Utilities::Exception::explainShort(). |
|
Detect the native endianness. The completely general endianness is specified as a bit field where the least significant bit specifies the order of bytes when combined to double bytes. The next bit specifies the order of double bytes when combined to quadrupple bytes and so on. The number of elements in the returned vector will always equal the number of times you need to double the width of a byte to get the width of a uintmax_t (an integer with the widest range possible on your platform). This number is equal to findMostSignificantBit(sizeof(uintmax_t)). When specifying endianess as argument to other functions such as computeBytePermutation() you may pass a vector with fewer elements than the one returned by this function. Any required endianness bit not explicitly specified shall be taken to be equal to the last one specified in the vector. An entirely empty vector may be passed to indicate that the native endianness applies. The easiest way of specifying a "clean cut" little endian scheme is by a vector of lenght one with a cleared bit.
Definition at line 29 of file memory.C. References n. Referenced by compareEndianness(), and computeBytePermutation(). |
|
Extract information from the last thrown exception. It re-throws the last thrown exception, and then attepts to catch any of the exception types known to this library. If this succeeds then the specified formatter is used to produce 'result' and true is returned. If the exception is unknown to this library then it just returns false. This method is intended to be incorporated into similar methods in other libraries that interact with this library or in applications that need to check various different libraries for exceptions known to them. Example:
namespace MyApp { bool exceptionCatchInfo(Archon::Utilities::Exception::Formatter format, string &result) { try { throw; } catch(MyFooException &e) { result = (*format)(typeid(e), "", e.getMessage())
int main(int argc, const char *argv[]) throw() { set_unexpected(Exception::terminal<MyApp::exceptionCatchInfo>); set_terminate(Exception::terminal<MyApp::exceptionCatchInfo>); ... }
Definition at line 30 of file exception.C. Referenced by Archon::X3D::exceptionCatchInfo(), Archon::Raytracer::exceptionCatchInfo(), and Archon::X3D::Proxy::exceptionCatchInfo(). |
|
Get the index of the least significant bit in the argument. This is a terribly slow implementation considdering the fact that a BITSCAN maschine instruction can answer in a few clock cycles.
|
|
Get the index of the most significant bit in the argument. This is a terribly slow implementation considdering the fact that a BITSCAN maschine instruction can answer in a few clock cycles.
Definition at line 70 of file memory.H. Referenced by Archon::Utilities::ImageData::ImageData(), and readWithSpecificEndianness(). |
|
The GIF image format used by Image by default.
Definition at line 40 of file image_gif.C. |
|
The JPEG image format used by Image by default.
Definition at line 40 of file image_jpeg.C. |
|
The PNG image format used by Image by default.
Definition at line 519 of file image_libpng.C. |
|
The PNM image format used by Image by default.
Definition at line 29 of file image_libpnm.C. |
|
The TIFF image format used by Image by default.
Definition at line 29 of file image_libtiff.C. |
|
A convenience wrapper for the callback version of 'meshPolygon'.
Definition at line 274 of file polygon_mesher.C. References meshPolygon(). |
|
Mesh a polygon.
Intuitivly a rectangle shaped frame of patches is placed on top of the polygon and each produced patch is then the intersection between a frame patch and the original polygon. The orientation of the frame will be alligned with the first edge of the polygon. That is, depending on how you look at it, either the vertical or the horizontal division lines will be parallel with the first edge of the polygon. The frame is chosen as the smallest rectangle that encloses all the vertices of the original polygon while remaining aligned with the first polygon edge. The width and height of the frame patches are then uniquely defined by the following constraints:
Note: For non-rectangular polygons the patches at the edge will in general not be rectangular. Note also: Vertices that are shared between 1, 2, 3 or 4 patches will be reported back to the application only once. This is done through the callback function passed via the 'context'. It is the responsiblility of the application to assign identifiers to each of these vertices and return them from the callback function. New patches will refer to the application assigned identifiers.
Start by allocating the vertices of the original polygon in the vertex table and work with lists of vertex indices. Imagine a grid seperating equal sized rectangular patches and the polygon placed so that it fits within. Slice off horizontal stripes from the polygon according to the imaginary grid. For each horizontal cut we reduce the size of the remaining polygon and get a new polygon or nothing. 0 or 2 strictly new vertices are constructed in this process. The new vertices are shared between the two parts. Each cut intersects the polygon edge 0 or 2 times. For the case of 2 remember the minimum 'x_min' and the maximim 'x_max' x-coordinate of the intersection points. Slice off patches from the horizontal stripe according to the imaginary grid. Allocate a vector of vertex indices with the same number of elements as the number of vertical splits per stripe. For each horizontal cut we reduce the size of the remaining stripe and get a new polygon or nothing. If the cut occures between 'x_min' and 'x_max' and an edge in the stripe polygon crosses the cutting line from left to right when traveling counter clockwise then store the index of the new vertex in the vertex index vector indexed by the horizontal position in the grid. Otherwise store -1 in the ertex index vector. If an edge of the stripe polygon crosses the cutting line from right to left it suffices to check if the index from the vertex index vector from the previous stripe contains -1 when index equally to the current vertex index vector. If it is -1 then a new vertex needs to be created. Otherwise the index tells us that we must reuse that vertex. 0, 1 or 2 strictly new vertices are constructed during the vertical split. The new vertices are shared between the two parts. The algorithm is based on an implementation by Kasper Høy Nielsen <khn@imm.dtu.dk> but has seveal significant improvements:
Definition at line 133 of file polygon_mesher.C. References Archon::Utilities::MesherContext::addPolygon(), Archon::Utilities::MesherContext::addVertex(), Archon::Math::BasicVector< T, N >::normalize(), and std::swap(). Referenced by Archon::SaiTestApps::Spot::main(), meshPolygon(), and Archon::SaiTestApps::Textviewer::TextPage::TextPage(). |
|
|
|
Definition at line 177 of file memory.H. References computeBytePermutation(), and findMostSignificantBit(). |
|
Initial value: { 2048, 8, 2048, 2048, 16, 2048, 16, 8, 8, 8, 8, 16, 16, 8, 8, 32, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 64, 128, 2048, 256, 2048, 512, 1024, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2048, 2048, 2048, 2048, 8, 2048, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2048, 2048, 2048, 8 }
Definition at line 128 of file uri.C. Referenced by Archon::Utilities::Uri::encode(). |
|
An Image compatible frontend for Rewritten and tested against libungif version 4.1.0.
|
|
An Image compatible frontend for Rewritten and tested against libungif version 4.1.0.
Referenced by Archon::Utilities::FormatLibpng::load(), Archon::Utilities::FormatLibjpeg::load(), Archon::Utilities::FormatLibgif::load(), Archon::Raytracer::main(), Archon::Console3d::main(), Archon::Utilities::Options::processConfigFile(), Archon::Utilities::FormatLibpng::save(), Archon::Utilities::FormatLibjpeg::save(), and Archon::Utilities::Regex::ParserContext::warning(). |
|
Initial value: |
|
An Image compatible frontend for Rewritten and tested against libungif version 4.1.0.
Referenced by Archon::Utilities::FormatLibpng::load(), Archon::Utilities::FormatLibjpeg::load(), Archon::X3D::SAI::Reader::read(), Archon::Utilities::Stream::BasicRewindReader< C >::read(), Archon::X3D::SAI::Reader::Reader(), and Archon::X3D::SAI::Reader::~Reader(). |
|
Initial value: |
|
An Image compatible frontend for Rewritten and tested against libungif version 4.1.0.
|
|
Initial value: |
|
An Image compatible frontend for Rewritten and tested against libungif version 4.1.0.
Referenced by Archon::Utilities::Web::DefaultClient::request(), Archon::Utilities::FormatLibpng::save(), and Archon::Utilities::FormatLibjpeg::save(). |