Alphabetical Class Index  Class Hierarchy   File Members   Compound Members   File List  

HW2DBoundReader.h
00001 #ifndef HW2DBOUNDREADER_H
00002 #define HW2DBOUNDREADER_H
00003 
00004 #include "dwf/whiptk/fileext.h"
00005 #include "dwf/whiptk/whiperrs.h"
00006 #include "dwfcore/InputStream.h"
00007 #include "dwf/package/Resource.h"
00008 #include "dwf/package/Section.h"
00009 #include "dwf/dwfx/Constants.h"
00010 #include "dwf/package/EPlotSection.h"
00011 #include "dwf/package/Paper.h"
00012 
00013 #include "Access.h"
00014 
00015 // A class which reads through 2D DWF and only computes the bounding box
00016 class HW2DBoundReader : public WT_FileExt
00017 {
00018 public:
00019     HW2DBoundReader(DWFInputStream & rW2DStream);
00020     virtual ~HW2DBoundReader() {}
00021 
00022     WT_Result read();
00023     WT_Result process_stream_close() { return WT_Result::Success; }
00024     WT_Result process_stream_end_seek() { return WT_Result::Success; }
00025     WT_Result process_stream_open();
00026     WT_Result process_stream_read(int desired_bytes, int & bytes_read, void * buffer);
00027     WT_Result process_stream_seek(int distance, int & amount_seeked);
00028     WT_Result process_stream_tell(unsigned long * current_file_pointer_position);
00029     WT_Result process_stream_write(int /*size*/, void const * /*buffer*/) { return WT_Result::Toolkit_Usage_Error; }
00030 
00031     static WT_Result _processPolyMarker(WT_Polymarker & /*polymarker*/, WT_File & /*file*/) { return WT_Result::Success; }
00032     static WT_Result _processPolytriangle(WT_Polytriangle & polytriangle, WT_File & file);
00033     static WT_Result _processText(WT_Text & text, WT_File & file);
00034     static WT_Result _processEllipse(WT_Outline_Ellipse & wt_oellipse, WT_File & file);
00035     static WT_Result _processPolyline(WT_Polyline & polyline, WT_File & file);
00036     static WT_Result _processPolygon(WT_Polygon & polygon,  WT_File & file);
00037     static WT_Result _processImage(WT_Image & image, WT_File & file);
00038     static WT_Result _processPNG_Group4_Image(WT_PNG_Group4_Image & image, WT_File & file);
00039     static WT_Result _processVisibility(WT_Visibility & visibility,  WT_File & file);
00040 
00041     WT_Logical_Box m_wtModelBoundingBox;
00042 
00043 private:
00044     size_t              m_nBytesAvailable;
00045     DWFString           m_zContent;
00046     DWFInputStream &    m_rW2DStream;
00047 };
00048 
00049 #ifndef DWFIO_SUPPORT_ONLY_LEGACY_VERSIONS
00050 #include "dwf/XAML/XamlFile.h"
00051 
00052 class HW2DBoundReaderXaml : public WT_XAML_File //WT_FileExt
00053 {
00054 public:
00055     HW2DBoundReaderXaml(DWFToolkit::DWFResource * pResource, DWFToolkit::DWFSection * pSection);
00056     virtual ~HW2DBoundReaderXaml();
00057 
00058     WT_Result read();
00059     WT_Result process_stream_close() { return WT_Result::Success; }
00060     WT_Result process_stream_end_seek() { return WT_Result::Success; }
00061     WT_Result process_stream_open();
00062     WT_Result process_stream_read(int desired_bytes, int & bytes_read, void * buffer);
00063     WT_Result process_stream_seek(int distance, int & amount_seeked);
00064     WT_Result process_stream_tell(unsigned long * current_file_pointer_position);
00065     WT_Result process_stream_write(int /*size*/, void const * /*buffer*/) { return WT_Result::Toolkit_Usage_Error; }
00066 
00067     static WT_Result _processPolyMarker(WT_Polymarker & /*polymarker*/, WT_File & /*file*/) { return WT_Result::Success; }
00068     static WT_Result _processPolytriangle(WT_Polytriangle & polytriangle, WT_File & file);
00069     static WT_Result _processText(WT_Text & text, WT_File & file);
00070     static WT_Result _processEllipse(WT_Outline_Ellipse & wt_oellipse, WT_File & file);
00071     static WT_Result _processPolyline(WT_Polyline & polyline, WT_File & file);
00072     static WT_Result _processPolygon(WT_Polygon & polygon,  WT_File & file);
00073     static WT_Result _processImage(WT_Image & image, WT_File & file);
00074     static WT_Result _processPNG_Group4_Image(WT_PNG_Group4_Image & image, WT_File & file);
00075     static WT_Result _processVisibility(WT_Visibility & visibility,  WT_File & file);
00076 
00077     WT_Logical_Box m_wtModelBoundingBox;
00078 
00079 private:
00080     size_t              m_nBytesAvailable;
00081     DWFString           m_zContent;
00082     DWFInputStream *    m_rW2DStream;
00083     Access *            m_pAccess;
00084 };
00085 #endif
00086 
00087 #endif //HW2DBOUNDREADER_H