|
File Parser Requirements
Every file parser must implement the following functions.
The display engine calls these functions to display a file of the type
supported by the file parser.
The display engine starts the file viewing process by calling VwStreamOpenFunc, sending the name of a file to the file parser. The first responsibility of
any parser is to verify that the given file has the proper format and can be
processed. If the file is viewable, the file parser returns a value to the display
engine acknowledging the request.
Once the parser completes verification, the display engine calls VwStreamSectionFunc, directing the file parser to identify the type and name of the first section
of the file to be processed. A section is a portion of the file in which all the data is of one type; it forms a
logical breaking point for the processing of the file. The standard section types
are word processing, spreadsheet, database, bitmapped graphics, and vector
graphics. A file can consist of a single section, multiple sections of the same
type, or a combination of sections of different types. The actions that the
display engine takes to display the file depend on the type of section currently
being processed. The file parser must call the SOPutSectionType and SOPutSectionName functions to output the section type and to set the section name.
Before the file parser returns from VwStreamSectionFunc, it may need to provide the display engine with additional information. If
the portion to be processed is a word processing section, the file parser must
set entries for the font table by using the SOPutFontTableEntry function. If it is a spreadsheet section, the file parser must set the column
width by calling the SOPutColumnInfo function. If it is a database section, the file parser must set the field
format by calling the SOPutFieldInfo function. The file parser can also set the date base used by spreadsheets and
databases to calculate dates by using the SOSetDateBase function. In addition, the file parser can set header entries by calling the SOPutHdrEntry function.
After the section type and general information is set, the display engine
requests data for the section by calling VwStreamReadFunc. The file parser fulfills this request by calling the stream output
functions. These functions pass the data to the display engine in a form that is easiest
for the engine to display, copy to the clipboard, or write to disk.
The stream output functions used by the file parser depend on the section
type. For word processing sections, the file parser uses the SOPutParaSpacing, SOPutCharAttr, and SOPutChar functions to set the spacing for paragraphs, set the style attributes for
characters, and output characters. For spreadsheet sections, the parser uses the SOPutDataCell and SOPutTextCell functions to output the content (data or text) of cells. For database
sections, it uses the SOPutField and SOPutVarField functions to output the data of fields. The parser uses the SOPutBitmapHeader and SOPutScanLineData functions for bitmapped graphics sections and the SOVectorAttr and SOVectorObject functions for vector graphics sections.
To set a break for a paragraph, cell, or field, the file parser calls the SOPutBreak function with an appropriate value, either SO_PARABREAK, SO_CELLBREAK, or
SO_RECORDBREAK. The return value from SOPutBreak tells the file parser how to proceed. If it is the SO_STOP value, the file
parser stops all processing and returns from VwStreamReadFunc.
The file parser continues to output data until it reaches the end of the
section. The parser must end a section by calling SOPutBreak with the SO_SECTIONBREAK value. If this is the last section in the file, the
file parser indicates that the end of the file has been reached by using the
SO_EOFBREAK value instead.
If there are subsequent sections in the file, the display engine calls VwStreamSectionFunc again to request the type and name of the next section, and processing
continues just as it did for the first section.
After the last section, the display engine calls VwStreamCloseFunc to indicate that processing is complete and that no further requests for data
will be made. The file parser must close the file and any related files it has
opened and clean up resources, such as freeing memory.
If an error occurs while a file is parsed, the file parser should call the SOBailOut function to notify the display engine of the error condition. The parser must
immediately return from VwStreamReadFunc after calling the SOBailOut function.
| Last news from Greatis Software |
 |
|
Nostalgia .Net |
|
.Net is powerful, but not all-powerful, so sometimes we need to use Win32 API for our .Net applications. It's simple enough with Platform Invoke if you have Win32 skill, but we do not always have time to dig the ancient documentation, declare the special types that are compatible with Win32, find the values of the Win32's constants and so on. Nostalgia .Net offers several simple-to-use classes, and components that will allow you to forget about the headache of Win32 and just use the power of Win32 in your application the same way as you use the native. Net classes. More » |
| Recommended software for developers |
 |
|
Ultimate Pack |
|
Component pack for Delphi and C++ Builder that contains runtime form designer, runtime object inspector, print suite and much more for the very special price. More » |
 |
|
Form Designer .Net |
|
Unique runtime form design solution that allows to edit any form in .Net WinForms application at runtime with full source codes for only 300 euro! More » |
 |
|
Print Suite .Net |
|
Print Suite .Net is a set of components for easy printing texts, images and grids from your WinForms applications. Full C# source codes are available More » |
 |
|
Gradient Controls .Net |
|
Gradient Controls .Net offers controls with gradient background feature. Labels, panels and so on... Full C# source codes are available More » |
 |
|
Greatis iGrid |
|
iGrid plots drawing grid right over your desktop, so you can use it everywhere, with any drawing application without any special plugins for different graphic editors. More » |
All the contacts and projectsDmitry Vasiliev (just.dmitry)
Related LinksSoftware for Visual Studio .NET developers Software for Delphi and C++ Builder developers Software for Visual Basic 6 developers Delphi Tips&Tricks MegaDetailed.NET More Online Helps Win32 Programmer's Reference Win32 Multimedia Programmer's Reference OLE Programmer's Reference Microsoft Windows Pen API Programmer's Reference Microsoft Windows Sockets 2 Reference Microsoft Windows Telephony API (TAPI) Programmer's Reference Unix Manual Pages
|