PDoc-SET Format

Created by: Lester Caine, Last modification: 12 Oct 2010 (12:49 BST)
SET Pages File Format

Restructure of NTI or similar multiple page sequence pages to provide a single text file with all page information contained within one file. The sequence provides for a number of pages such as calling points along with an addition one or two pages for fixed information such as Ticket Validity, Connection or Special Services Notices.

An additional file type has been created - '.SET' - which has a similar layout to the single page '.TXT' format, but with all page information contained within the one file. This allows easier management of multiple formats since only one file needs to be created independent of the number of pages being displayed on different output devices. Currently the information is being paged by the source program module, giving the a fixed nummber of lines in the scrolling area of the page. This is simply to provide an easy transition from the current designs to the new format. It prevents the use of a different number of calling point pages per output device so that all .SET profiles must consist of the same number of lines for the [Body] area.

All of the existing formats are still supported on the Slave controllers, so additional profile types have been introduced. Starting at Type 9 upwards.

All Pages have a [Blank] section which defines the Basic Profile, Along with a [Header] and [Footer] section which defines the header and footer area of all pages. To this can be added graphics such as TOC Logo and Facility Icons. It is envisaged that all pages will have the same header and footer display, and will simply scroll the information area in the middle, therefore profiles for secondary pages will have their outline layout information ignored.

[Title]
Title=Platform NTI
Type=10

[Blank]
Title=NTI10

[Header]
LT0=18:48 BRIGHTON|

[Footer]
LT0=Line 1|
LT1=Line 2|

[Body]
LT0=East Croydon|
LT1=Gatwick Airport|
LT2=Haywards Heath|
LT3=Brighton|
Lines=8
Pages=1

Currently the Lines and Pages entries are completed based on the normal screen layout. Calling Points containing a 'New Page' flag will advance the line count (LTx) to the top of the next page, leaving missing line numbers on the list. All text is delimited by '|' characters in place of the more mormal <Tab>, as Windows98 has trouble processing the text files containing <Tab>, treating it as a new line. Multiple columns of data are also separated by '|' and currently up to 5 tab columns are supported. (See tab settings in Layout for deatils).

The full text of the calling points is stored, but it may be appropriate to store just the TIPLOC, and do this conversion at the display device, where the correct length of text string can be utilized as appropriate, and also reduce the size of files created, and the database activity that builds the file.

The first page of calling points will be headed with information from the Profile given in the [Body] section of profile, while subsequent calling point pages will use information from the [Second] section. Extra page displays will then use their additional page number at the end of the basic title, [Page1], [Page2] in the same way.

A number of additional pages can be added to the file using a separate header for each, but currently this is limited to two.

[Page1]
LT0=This is a test|
LT1=page added to|
LT2=the current NTI|

All layout information as detailed in the .TXT document is supplied via associated profile file. This file has a .TXT extension rather than .SET. The system will support the profile and text information contained within the one file, but this is not the expected method of operation.

Information Section

An facility has been provided to add additional information fields to the set file for use by alternate display equipment, such as flaps. This requires being enabled in the driving system, and allows information not normally used on character displays to be output from the main control system. Currently four fields are supported, but additional fields will be provided as required.

[Info]
TOC=VT     Two character TOC ID
Headcode=1X99   Train Headcode for record
Platform=2   Platform Number ( will be 0 if not posted, and system only displaying posted trains on summary )
Calling=12   Number of calling point lines included in the file ( Body details are based on monitor page formats and include blank lines )
 

Profiles

An facility has been provided to use a 'Profile' to define the layout for the page. This profile can be stored locally on the display controller, which will reduce network
traffic, but requires the Profiles to be downloaded as they are updated. The contents of the display pages is always accessed direct from the main file server.

A number of profile sub-directories are added to the \DATA\PROFILE section with the same set of names as the Picture section. This allows different formats to be
used for each different screen orientation or resolution. A single Arrival list and Departure list can then be created, but will be output with the correct layout.

A section added to the text file calls up the required profile
[Blank]
Title=ProfileFileName

The profile file is then used to provide the [Layout] and [Font] sections, along with the formats for the [Body] section. In order to override lines in the TEXT file, any
lines included in the profile will be used before accessing the contents of the text page. This allows the correct arrangement of header and footer information to the
added to a simple summary list or similar page.

Title Section
This section is kept for notes and defines the type of page being managed when working with automatic pages

[Title]
Name=Colour and Font Test Chart
Type=1
This entry controls the method of converting text files to images for display, or to reformat text pages to other serial output formats such as DVC's or LED displays.

0 - Do not display page ( i.e. Blank pages of NTI Sequence )
7 - Passing - Fast Train Approaching ( Single Page )
8 - Arrival - Terminates Here ( Single Page )
9 - Cancelled ( Single Page )
10 - NTI Departure Sequence

Layout Section
This section defines the page layout and background along this the fine detail of tabbed columns for the scrolling area of the display page. Two additional sections define the area of the Header and Footer.

[Layout]
HorPos=0
Horizontal position of text area on screen
VertPos=0
Vertical position of text area on screen
Width=1024
Width of text area on screen
Height=1024
Height position of text area on screen
BackgroundPic=NONE
Picture to be used as background on screen
BackgroundColour=0
Colour used for rest of area outside text area, and highlight text colour
(An entry of 16 indicates transparent, which allows the background picture to be visible)
ForegroundColour=15
Default text colour, and background colour for highlighted text.
LeftTabs=     100,200,300,400
RightTabs=100,200,300,400,500
This defines the left and right edges of the tab positions. The first Left tab is HorPos, hence the gap above the first right tab.
    (This sets up the tab positions for Justify 4)
Offset=428
This defines the horizontal position of the second colum of information, the actual text position is given, with a vertical line being added 10 pixels before this.

Shift=1

This defines the first line of display that is to be drawn in two columns.

Step=0

This defines the the number of lines of header that are added to the second column before the original data is displayed.

As an example, Departure summaries are Shift=1 and Step=1, where they have a single line header, and add a second column header line at the start of the
second column.

While Horizontal NTI's are Shift=2 and Step=0, where the first two lines are used as full width headers, while the two columns are displayed x on the left
followed directly by x on the right.

[Header] and [Footer]
Both sections take the same set of entries as follows
HorPos=0
Horizontal position of text area on screen
VertPos=0
Vertical position of text area on screen
Width=1024
Width of text area on screen
Height=1024
Height position of text area on screen

These sections also contain the format lines for the display of text in the panels defined. The number of lines displayed is limited to a maximum of 3, but will also be limited such that only complete line of text will be displayed in the panel. The number of line to be displayed can also be specifed, allowing a sub set of line to be output if the application requires.

N=
Number of lines making up this panel

LFx=2|0|15|0|
Where x is the line number. See the main body section for a detailed description of the format information. Header and Footer panels do not support multiple columns, and so a single column is to be expected, although the body section can be split if required..

Font Section
This section is used to define the font sizes used for the page. Up to 8 different sizes can be used, either with the same font, or a number of different fonts as
required. Only the number of fonts actually used need to be loaded, unused fonts will just add unnecessary load on the display computer.

[TXTFONT]
N=A
The number of fonts required

FontNo0=50,20,300,LucidaSans
FontNo1=40,15,300
FontNo2=32,12,300
FontNo3=50,20,300,CooperBlack
 The font number is used in the BODY section to select a font size for a line
 Number 1 = Height of character in pixels - this includes white space above and below as defined by font
 Number 2 = Width of character in pixels - for proportional fonts this is the width of the average character
 Number 3 = Boldness (see Microsoft for explination!)
 Fourth entry is the font name, which is only required when it changes

Body Section
Each line of the display is defined by a pair of entries, an LFx and an LTx. The LF entry defines the format for the line while the LT entry contains the text to be
displayed. Since the LF entry can be picked up from the PROFILE file, a simple text page would consist of an entry to select the profile, and a set of text to be
displayed.

There are four sections supported, with the extra page display only required if used by the system. So up to four copies of the following information is required.

[Body] - The first page of display information
[Second] - The second and subsequent pages until all of the source text list has been displayed
[Page1] - The first extra page, displayed following the main body, if required.
[Page2] - The second extra page, displayed last in the sequence, if required.

[<Section>]
N=
Number of lines making up this section
When there are two columns, each entry in the list counts, so that the number will be the total number of column entries.
The number of lines actually displayed may be less than that called for, if the fonts sizes do not permit all of the information to be displayed.
The count will be greater than the number of calling points, as it needs to include the fixed line(s) of text included in the profile. If there is a single description line for the section, and 8 calling point lines, then the count will be 9.

LFx=2|0|15|0|

 Number 1 = Font (from list above)
 Number 2 = Colour of text
 Number 3 = Colour of background (16 = Transparent allowing picture to show)
 Number 4 = Justification
 The justification is to be sorted. Tabs= entry above allows columns of text to be built at fixed positions, while also using centered, and right justified.
Justify Types
 0 Left and Right (Two segments of text Justified Left and Right)
 1 Left Justify
 2 Center
 3 Right Justify
 4 Tabbed Columns (4 Columns are allowed)
+8 Where a justify entry has had eight added to it, it indicates that the line is displayed in the second column.

Lines do not need to be included when they are the same as the line above, the previous line information is used as the default for a following line, so blocks of
information can be managed simply by editing the first line of the sequence.

LTx=|Colour Test Chart|Colour 1|

Up to 5 segments of text can be added to a line, but how many are used will depend on the justify mode selected.
 The vertical bar character is used rather than <tab> as it is easier to view when manually coding pages, also Windows 98 can not read <tab> characters from the
text file.
In order to control fine detail in the columns of a tabbed list, the first character in each segment of text is used as a flag character and will define how a column is
displayed. Currently there are only two special modes, highlight(!) and right justify(>), but other modes can be added as required.
( It was originally intended to use control characters for this purpose, but while it works beautifully on NT, Windows 98 treats all control characters as <end of line>
when reading text files, so screws up the text )

The colour table for the pages is defined in the \Postfield\System\Pallete\ registry key - see System Registry Entries for details.

Graphics Section

There are two levels of switch to enable the graphics facilities. Firstly the DCSlave registry entry must be set for Graphics=1, and then the switch enable must be present in the profile file. The second element allows individual control of graphics elements dependent on the output display device, providing a means of removing some elements from certain devices, and also selecting the correct elements for the orienation of display.

[Graphics]
Enable=31
// Bitwise switches to enable each element of the graphics pallet

// 1 = Header
// 2 = Second Logo
// 4 = Icons
// 8 = GIF animation - Not currently supported on .SET displays.
// 16 = AVI Clip Viewer - Not currently supported on .SET displays.
The system allows for up to two logo's to be displayed from a variable length pallet of logo's. Two versions of the pallet are required, one with the elements horizontal, and the other vertical, for the different orientations of displays. These pallets must be present in the /Profiles/Logos section along with a halve size horizontal version for the operator mimics.
Head=x
This will be in the Text.SET file and selects the number of the logo from the pallet.
The following entries will be in the Profile.TXT.
HeadTop=10
The pixel position down the screen for the first logo location ( vertical displays are handled without reference to any rotate )
HeadLeft=10
The pixel position from the left of the screen for the first logo location ( vertical displays are handled without reference to any rotate )
HeadHeight=50
The pixel height of the first logo ( vertical displays are handled as if viewing normally )
HeadWidth=200
The pixel width of the first logo ( vertical displays are handled as if viewing normally )
Second=x
This will be in the Text.SET file and selects the number of the logo from the pallet.
The following entries will be in the Profile.TXT.
SecondTop=10
The pixel position down the screen for the second logo location ( vertical displays are handled without reference to any rotate )
SecondLeft=10
The pixel position from the left of the screen for the second logo location ( vertical displays are handled without reference to any rotate )
SecondHeight=50
The pixel height of the second logo ( vertical displays are handled as if viewing normally )
SecondWidth=200
The pixel width of the second logo ( vertical displays are handled as if viewing normally )
Icons=x
This will be in the Text.SET file and is a bit map of the icons to be selected from the icon pallet.
The following entries will be in the Profile.TXT.
IconsTop=100
The pixel position down the screen for the icon strip location ( vertical displays are handled without reference to any rotate )
IconsLeft=30
The pixel position from the left of the screen for the icon strip location ( vertical displays are handled without reference to any rotate )
IconsSize=50
The pixel hight of the icons ( icons are currently assumed to be square to simplify arrangement horivontally or vertically )
// Gif inimations are currently disabled due to a memory leak problem, the section is left in for information with the intention that it will be restored later
Animate=x
This will be in the Text.SET file and is set to 1 to enable the .
The following entries will be in the Profile.TXT.
AnimFile=postfield.gif
The file name of the animation to be used. If this has not changed from the last update, then the display is not updated, so any changes to animation files will only be picked up when the program is restarted, or alternatively change the file name.
( This is to reduce memory growth associated with a new file load )
AnimTop=10
The pixel position down the screen for the animation window ( vertical displays are handled WITH DIRECT reference to the actual window not rotated )
AnimLeft=10
The pixel position from the left of the screen for the animation window ( vertical displays are handled WITH DIRECT reference to the actual window not rotated )
AnimHeight=200
The pixel hight of the animation window on the RAW display
AnimWidth=200
The pixel width of the animation window on the RAW display
Video=x
This will be in the Text.SET file and selects the number of the logo from the pallet.
The following entries will be in the Profile.TXT.
// Avi inimations are currently disabled due slow responce time problem, the section is left in for information with the intention that it will be restored later, when it will be used to control an additional player module similar to the DC Clock module.
VideoFile=postfield.avi
The file name of the animation to be used. If this has not changed from the last update, then the display is not updated, so any changes to animation files will only be picked up when the program is restarted, or alternatively change the file name.
( This is to reduce memory growth associated with a new file load )
VideoTop=10
The pixel position down the screen for the animation window ( vertical displays are handled WITH DIRECT reference to the actual window not rotated )
VideoLeft=10
The pixel position from the left of the screen for the animation window ( vertical displays are handled WITH DIRECT reference to the actual window not rotated )
VideoHeight=200
The pixel hight of the animation window on the RAW display
VideoWidth=200
The pixel width of the animation window on the RAW display


Sample Profile

[Title]
Name=Platform Next Train Indicator

[TXTFONT]
Number=2
FontNo0=20,6,300,Lucida Sans Typewriter
FontNo1=20,12,500,Lucida Sans Typewriter
This entry is used by the DVC Mimic to complete the graphic display of text information.

[Header]
N=1
LF0=1|1|15|0|

[Footer]
N=2
LF0=0|1|14|0|
LF1=0|1|15|0|

[Body]
N=9
LT0=Calling at:-
LF0=0|14|1|1|
LF1=0|15|1|2|

[Second]
N=9
LT0=Also calling at:-
LF0=0|13|1|1|
LF1=0|15|1|2|

[Page1]
N=9
LT0=Connections:-
LF0=0|12|1|1|
LF1=0|15|1|2|

[Page2]
N=9
LT0=Ticket Validity:-
LF0=0|11|1|1|
LF1=0|15|1|2|