The Photon Library Reference accompanies the Photon Development
System and is intended for application developers.
It describes the data types, structures, and functions that are defined in
the Photon API.
This reference contains the following chapters:
In general, the Photon libraries aren't thread-safe.
In a multithreaded program, only the thread that called
PtInit() is
allowed to call Photon functions. The only exception is
PtPulseDeliver() - you can use it in other threads to send
notifications to the Photon thread.
To use the datatypes and functions in an application:
- If you're using the Photon Application Builder (PhAB), the
appropriate header files are automatically included in your
application.
- If you aren't using PhAB but your application uses widgets,
include <Pt.h>.
- If you aren't using PhAB or widgets, include <Ph.h>.
Prototypes have changed for:
Other changes are as follows:
- ApAddClass()
- The class_name_string argument is of type
char const *.
This function keeps a pointer to the string pointed to by
class_name_string; don't modify this string after calling
ApAddClass().
- ApCreateModule()
- The return value has been corrected.
The widget argument is passed to the module's setup
function as apinfo->widget.
- ApCreateWidget()
- The widget is created as a child of the default parent, which is usually
the most recently created container.
To change the default parent, call
PtSetParentWidget().
- ApCreateWidgetFamily()
- The root of the widget family is created as a child of the default parent,
which is usually the most recently created container.
To change the default parent, call
PtSetParentWidget().
- ApGetBitmapRes()
- The example for this function will work only if the old and new bitmaps
have the same dimensions, number of colors/planes, and order of colors.
- ApModifyItemText()
- This function stores the address given by the new_text
argument; it doesn't make a copy of the string pointed to by
new_text.
This function returns 0 if the item number isn't valid.
- ApModuleLocation()
- The names of AB_LOC_BOT_LEFT and
AB_LOC_BOT_RIGHT have been corrected.
- ApOpenDBase(),
ApOpenDBaseFile()
- These functions typically open a picture module as a widget
database, but they can also open window and dialog modules.
- ApSetTranslation()
- An empty string, not a space, in the value of the ABLPATH
environment variable indicates the directory where the executable is
located.
Prototypes and header files have been corrected for:
The following have been added:
Prototypes have changed for:
Other changes:
- PfQueryFont()
- The description of the FontQueryInfo structure has
been corrected.
- PfQueryFonts()
- The description of the FontDetails structure has
been corrected.
Prototypes have changed for:
- PgColorMatch()
- PgDrawArc()
- PgDrawBevelBox()
- PgDrawBeveled()
- PgDrawBezier(), PgDrawBeziermx()
- PgDrawBitmap(), PgDrawBitmapmx()
- PgDrawEllipse()
- PgDrawGrid()
- PgDrawImage(), PgDrawImagemx()
- PgDrawLine()
- PgDrawPhImagemx()
- PgDrawPixel()
- PgDrawPixelArray(), PgDrawPixelArraymx()
- PgDrawPolygon(), PgDrawPolygonmx()
- PgDrawRect()
- PgDrawRepBitmap(), PgDrawRepBitmapmx()
- PgDrawRepImage(), PgDrawRepImagemx()
- PgDrawRoundRect()
- PgDrawSpan(), PgDrawSpanmx()
- PgDrawString(), PgDrawStringmx()
- PgDrawText(), PgDrawTextmx(), PgDrawTextChars()
- PgDrawTextArea()
- PgDrawTImage(), PgDrawTImagemx()
- PgDrawTrend(), PgDrawTrendmx()
- PgExtentText()
- PgSetClipping()
- PgSetFont()
- PgSetMultiClip()
- PgSetPalette()
- PgSetStrokeDash()
- PgSetUserClip(), PgSetUserClipAbsolute()
- PgShmemAttach()
- PgShmemCreate()
Other changes are as follows:
- PgDrawImage(), PgDrawImagemx()
- Instead of using this function, we recommend using a
PhImage_t
structure and calling
PgDrawPhImagemx().
- PgDrawRepImage(),
PgDrawRepImagemx()
- Specify the image format, as described for
PgDrawImage(),
by ORing it into the flags argument.
- PgDrawTextArea()
- The flags for this function can include Pg_BACK_FILL
and Pg_TEXT_WIDECHAR.
This function doesn't work in any context involving the render library,
such as printing or Phindows. See the Caveats section.
- PgDrawTImage(),
PgDrawTImagemx()
- Instead of using this function, we recommend using a
PhImage_t
structure and calling
PgDrawPhImagemx().
The TransBPL argument is the number of bytes per line.
The leftmost pixel corresponds to the top bit of the first byte in the
transparency mask.
- PgSetClipping()
- Don't call PgSetClipping() in a widget's draw function;
use PtClipAdd()
and PtClipRemove()
instead. For more information, see the Building Custom Widgets
guide.
- PgSetPalette()
- Pg_INDEXED_COLOR should be Pg_INDEX_COLOR.
- PgSetPlaneMask()
- This function works only on some 8-bit drivers.
- PgSetStrokeWidth(),
PgSetStrokeFWidth()
- The minimum line width for PgSetStrokeFWidth() is one pixel.
We don't recommend using a line width greater than one pixel.
Some graphics drivers might give unexpected results.
- PgSetTextDither()
- This function overrides the color defined by
PgSetTextColor().
- PgShmemDetach()
- A shared memory object will persist until no other applications
refer to it. Don't use the same name for another shared memory
object, especially right after detaching the first one.
New entries:
Prototypes have changed for:
Other changes are as follows:
- PhClipboardCopyString()
- The string must end with \0.
- PhEvent_t
- Descriptions of the bits for the processing_flags member
have been added.
- PhEventEmit()
- The return codes have been explained more fully.
- PhEventEmitmx()
- The return codes have been explained more fully.
- PhImage_t
- The description of the image_tag member has been expanded.
Ph_RELEASE_IMAGE_ALL is a new flag that indicates that
the image data, palette data, transparency mask bitmap, and the
ghosting bitmap are all to be freed.
The mask_bpl member doesn't need to be a multiple of 4.
The leftmost pixel of the image corresponds to the top bit of the first
byte in the transparency and ghost masks.
- PhMakeTransBitmap()
- This function sets the image's
Ph_RELEASE_TRANSPARENCY_MASK flag.
Use
PgDrawPhImagemx()
to draw a transparent image.
- PhMoveCursorRel()
- The coordinates passed to this routine are relative to the
current cursor position.
- PhQueryRids()
- Corrected the descriptions of the type and sense
arguments.
- PhReattach()
- If the argument is NULL, this function returns
a pointer to the current Photon control structure.
- PhRegion_t
- An overview of working with region data has been added.
- PhRegionChange()
- The data passed to this function is merged into the given region's data.
- PhRegionDataHdr_t
- A description has been added.
- PhRegionOpen()
- The example has been corrected. Specifically, the line:
if( event->type == Ph_EV_PTR_MOTION )
can never evaluate to true because Ph_EV_PTR_MOTION
is defined as Ph_EV_PTR_MOTION_NOBUTTON |
Ph_EV_PTR_MOTION_BUTTON. The line has been replaced by:
if( (event->type & Ph_EV_PTR_MOTION) != 0 )
- PhWindowEvent_t
- Ph_WM_STATE_ISICON has been deprecated.
Prototypes have changed for:
Other changes are as follows:
- PpPrintGetPC()
- The example has been corrected.
- PpPrintSetPC()
- GLOBAL_PC should be PRINTER_GLOBAL,
and LOCAL_PC should be PRINTER_LOCAL.
New:
Prototypes have changed for:
Deleted:
Other changes are as follows:
- PtAppAddSignalProc()
- You can add more than one function for a set of signals or set of
intersecting signals.
All handlers for a signal are called, but the order they're called in
is unspecified.
- PtAppAddWorkProc()
- The example has been updated.
- PtAppInit()
- This function doesn't parse the command-line arguments.
- PtAppRemoveSignalProc()
- This function will remove any handlers for the given signals used
internally by the libraries. You should use
PtAppRemoveSignal()
instead.
- PtBkgdHandlerProcess()
- It's safe to call PtBkgdHandlerProcess() in callbacks, work
procedures, and input procedures, but
not in a widget's Draw method or a PtRaw widget's
drawing function.
- PtContainerGiveFocus()
- The Returns section has been expanded.
- PtDeTranslateRect()
- Returns a pointer to the rect argument.
- PtForwardWindowTaskEvent()
- The first argument is of type PhConnectId_t.
- PtMessageBox()
- If specified, the parent must be a window.
- PtResizeEventMsg()
- This function won't reduce the message buffer beyond
a certain minimum size. This is so that the widget library
will continue to function.
- PtSetParentWidget()
- If the widget argument to this function is NULL
and you then call PtCreateWidget() with a NULL
parent argument, the new widget has no parent.
- PtSetResources()
- This function returns 0 if at least one of the given resources
was applied to the widget. It returns -1 if
the widget wasn't modified because it doesn't contain the given
resources or the values of the resources were the same as those
already stored in the widget.
|
A return code of 0 doesn't necessarily mean that all the resources
were successfully set. The only way to be sure that a resource was set
is to set it, then get it and compare the values.
|
- PtTimerArm()
- Any pending timers for a widget are removed automatically when the
widget is unrealized.
- PtWidgetIsClass()
- The class argument is of type
PtWidgetClassRef_t *.
The following functions have been added:
Prototypes have changed for:
Other changes are as follows:
- PxConfigReadInt(),
PxConfigReadLong(),
PxConfigReadShort()
- The value read by these functions can be signed. The characters
after the sign determine the base:
Character(s):
|
Base:
|
0x or 0X
|
Hexadecimal
|
0
|
Octal
|
Other digits
|
Decimal
|
- PxConfigWriteString()
- You can use this function to write a comment in a configuration
file.
- PxLoadImage()
- PX_USE_COLORS should be PX_USECOLORS.
PX_TRANSPARENCY should be PX_TRANSPARENT.
The deallocation routine (the px_free member of the
PxMethods_t structure) is called only if the image can't
be loaded.
Descriptions of the PX_TRANSPARENCY flag and
transparent member of the PxMethods_t
structure have been added.
The example has been corrected; the format member of a
PhImage_t structure isn't used.
- PxTranslateFromUTF()
- 0 is no longer a valid value for the maxsrc argument.
- PxTranslateToUTF()
- This function reads no more than maxsrc bytes.
It no longer assumes that the src string is terminated by
a \0 if maxsrc is zero.
- wctolower()
- New.
We assume you already know the basics of using Photon. If not,
see the Photon
User's Guide.