Update XPLM for ARM64
This commit is contained in:
1 parent
40067a606d
commit
174c20bd8f
59 files changed
+12475
-9196
No files matched your search
+254
-271
@@ -1,75 +1,76 @@
|
||||
{
|
||||
Copyright 2005-2012 Sandy Barbour and Ben Supnik
|
||||
|
||||
All rights reserved. See license.txt for usage.
|
||||
|
||||
X-Plane SDK Version: 2.1.1
|
||||
Copyright 2005-2012 Sandy Barbour and Ben Supnik All rights reserved. See
|
||||
license.txt for usage. X-Plane SDK Version: 2.1.1
|
||||
}
|
||||
|
||||
UNIT XPLMGraphics;
|
||||
INTERFACE
|
||||
{
|
||||
Graphics routines for X-Plane and OpenGL.
|
||||
A few notes on coordinate systems:
|
||||
|
||||
A few notes on coordinate systems:
|
||||
X-Plane uses three kinds of coordinates. Global coordinates are specified
|
||||
as latitude, longitude and elevation. This coordinate system never changes
|
||||
but is not very precise.
|
||||
|
||||
X-Plane uses three kinds of coordinates. Global coordinates are specified
|
||||
as latitude, longitude and elevation. This coordinate system never changes
|
||||
but is not very precise.
|
||||
OpenGL (or 'local') coordinates are cartesian and shift with the plane.
|
||||
They offer more precision and are used for 3-d OpenGL drawing. The X axis
|
||||
is aligned east-west with positive X meaning east. The Y axis is aligned
|
||||
straight up and down at the point 0,0,0 (but since the earth is round it is
|
||||
not truly straight up and down at other points). The Z axis is aligned
|
||||
north-south at 0, 0, 0 with positive Z pointing south (but since the earth
|
||||
is round it isn't exactly north-south as you move east or west of 0, 0, 0).
|
||||
One unit is one meter and the point 0,0,0 is on the surface of the earth at
|
||||
sea level for some latitude and longitude picked by the sim such that the
|
||||
user's aircraft is reasonably nearby.
|
||||
|
||||
OpenGL (or 'local') coordinates are cartesian and shift with the plane.
|
||||
They offer more precision and are used for 3-d OpenGL drawing. The X axis
|
||||
is aligned east-west with positive X meaning east. The Y axis is aligned
|
||||
straight up and down at the point 0,0,0 (but since the earth is round it is
|
||||
not truly straight up and down at other points). The Z axis is aligned
|
||||
north-south at 0, 0, 0 with positive Z pointing south (but since the earth
|
||||
is round it isn't exactly north-south as you move east or west of 0, 0, 0).
|
||||
One unit is one meter and the point 0,0,0 is on the surface of the earth
|
||||
at sea level for some latitude and longitude picked by the sim such that
|
||||
the user's aircraft is reasonably nearby.
|
||||
2-d Panel coordinates are 2d, with the X axis horizontal and the Y axis
|
||||
vertical. The point 0,0 is the bottom left and 1024,768 is the upper
|
||||
right of the screen. This is true no matter what resolution the user's
|
||||
monitor is in; when running in higher resolution, graphics will be
|
||||
scaled.
|
||||
|
||||
Cockpit coordinates are 2d, with the X axis horizontal and the Y axis
|
||||
vertical. The point 0,0 is the bottom left and 1024,768 is the upper right
|
||||
of the screen. This is true no matter what resolution the user's monitor is
|
||||
in; when running in higher resolution, graphics will be scaled.
|
||||
|
||||
Use X-Plane's routines to convert between global and local coordinates. Do
|
||||
not attempt to do this conversion yourself; the precise 'roundness' of
|
||||
X-Plane's physics model may not match your own, and (to make things
|
||||
weirder) the user can potentially customize the physics of the current
|
||||
planet.
|
||||
Use X-Plane's routines to convert between global and local coordinates. Do
|
||||
not attempt to do this conversion yourself; the precise 'roundness' of
|
||||
X-Plane's physics model may not match your own, and (to make things
|
||||
weirder) the user can potentially customize the physics of the current
|
||||
planet.
|
||||
}
|
||||
|
||||
USES XPLMDefs;
|
||||
USES
|
||||
XPLMDefs;
|
||||
{$A4}
|
||||
{$IFDEF MSWINDOWS}
|
||||
{$DEFINE DELPHI}
|
||||
{$ENDIF}
|
||||
{___________________________________________________________________________
|
||||
* X-PLANE GRAPHICS
|
||||
___________________________________________________________________________}
|
||||
{
|
||||
These routines allow you to use OpenGL with X-Plane.
|
||||
These routines allow you to use OpenGL with X-Plane.
|
||||
}
|
||||
|
||||
|
||||
|
||||
{
|
||||
XPLMTextureID
|
||||
|
||||
XPLM Texture IDs name well-known textures in the sim for you to use. This
|
||||
allows you to recycle textures from X-Plane, saving VRAM.
|
||||
XPLM Texture IDs name well-known textures in the sim for you to use. This
|
||||
allows you to recycle textures from X-Plane, saving VRAM.
|
||||
|
||||
*Warning*: do not use these enums. The only remaining use they have is to
|
||||
access the legacy compatibility v10 UI texture; if you need this, get it
|
||||
via the Widgets library.
|
||||
}
|
||||
TYPE
|
||||
XPLMTextureID = (
|
||||
{ The bitmap that contains window outlines, button outlines, fonts, etc. }
|
||||
{ The bitmap that contains window outlines, button outlines, fonts, etc. }
|
||||
xplm_Tex_GeneralInterface = 0
|
||||
|
||||
{ The exterior paint for the user's aircraft (daytime). }
|
||||
{$IFDEF XPLM_DEPRECATED}
|
||||
{ The exterior paint for the user's aircraft (daytime). }
|
||||
,xplm_Tex_AircraftPaint = 1
|
||||
{$ENDIF XPLM_DEPRECATED}
|
||||
|
||||
{ The exterior light map for the user's aircraft. }
|
||||
{$IFDEF XPLM_DEPRECATED}
|
||||
{ The exterior light map for the user's aircraft. }
|
||||
,xplm_Tex_AircraftLiteMap = 2
|
||||
{$ENDIF XPLM_DEPRECATED}
|
||||
|
||||
);
|
||||
PXPLMTextureID = ^XPLMTextureID;
|
||||
@@ -77,274 +78,270 @@ TYPE
|
||||
{
|
||||
XPLMSetGraphicsState
|
||||
|
||||
XPLMSetGraphicsState changes OpenGL's graphics state in a number of ways:
|
||||
XPLMSetGraphicsState changes OpenGL's fixed function pipeline state. You
|
||||
are not responsible for restoring any state that is accessed via
|
||||
XPLMSetGraphicsState, but you are responsible for not accessing this state
|
||||
directly.
|
||||
|
||||
inEnableFog - enables or disables fog, equivalent to: glEnable(GL_FOG);
|
||||
- inEnableFog - enables or disables fog, equivalent to: glEnable(GL_FOG);
|
||||
- inNumberTexUnits - enables or disables a number of multitexturing units.
|
||||
If the number is 0, 2d texturing is disabled entirely, as in
|
||||
glDisable(GL_TEXTURE_2D); Otherwise, 2d texturing is enabled, and a
|
||||
number of multitexturing units are enabled sequentially, starting with
|
||||
unit 0, e.g. glActiveTextureARB(GL_TEXTURE0_ARB); glEnable
|
||||
(GL_TEXTURE_2D);
|
||||
- inEnableLighting - enables or disables OpenGL lighting, e.g.
|
||||
glEnable(GL_LIGHTING); glEnable(GL_LIGHT0);
|
||||
- inEnableAlphaTesting - enables or disables the alpha test per pixel, e.g.
|
||||
glEnable(GL_ALPHA_TEST);
|
||||
- inEnableAlphaBlending - enables or disables alpha blending per pixel,
|
||||
e.g. glEnable(GL_BLEND);
|
||||
- inEnableDepthTesting - enables per pixel depth testing, as in
|
||||
glEnable(GL_DEPTH_TEST);
|
||||
- inEnableDepthWriting - enables writing back of depth information to the
|
||||
depth bufffer, as in glDepthMask(GL_TRUE);
|
||||
|
||||
inNumberTexUnits - enables or disables a number of multitexturing units. If
|
||||
the number is 0, 2d texturing is disabled entirely, as in
|
||||
glDisable(GL_TEXTURE_2D); Otherwise, 2d texturing is enabled, and a
|
||||
number of multitexturing units are enabled sequentially, starting with
|
||||
unit 0, e.g. glActiveTextureARB(GL_TEXTURE0_ARB); glEnable
|
||||
(GL_TEXTURE_2D);
|
||||
The purpose of this function is to change OpenGL state while keeping
|
||||
X-Plane aware of the state changes; this keeps X-Plane from getting
|
||||
surprised by OGL state changes, and prevents X-Plane and plug-ins from
|
||||
having to set all state before all draws; XPLMSetGraphicsState internally
|
||||
skips calls to change state that is already properly enabled.
|
||||
|
||||
inEnableLighting - enables or disables OpenGL lighting, e.g.
|
||||
glEnable(GL_LIGHTING); glEnable(GL_LIGHT0);
|
||||
X-Plane does not have a 'default' OGL state for plug-ins with respect to
|
||||
the above state vector; plug-ins should totally set OGL state using this
|
||||
API before drawing. Use XPLMSetGraphicsState instead of any of the above
|
||||
OpenGL calls.
|
||||
|
||||
inEnableAlphaTesting - enables or disables the alpha test per pixel, e.g.
|
||||
glEnable(GL_ALPHA_TEST);
|
||||
WARNING: Any routine that performs drawing (e.g. XPLMDrawString or widget
|
||||
code) may change X-Plane's state. Always set state before drawing after
|
||||
unknown code has executed.
|
||||
|
||||
inEnableAlphaBlending - enables or disables alpha blending per pixel, e.g.
|
||||
glEnable(GL_BLEND);
|
||||
|
||||
inEnableDepthTesting - enables per pixel depth testing, as in
|
||||
glEnable(GL_DEPTH_TEST);
|
||||
|
||||
inEnableDepthWriting - enables writing back of depth information to the
|
||||
depth bufffer, as in glDepthMask(GL_TRUE);
|
||||
|
||||
The purpose of this function is to change OpenGL state while keeping
|
||||
X-Plane aware of the state changes; this keeps X-Plane from getting
|
||||
surprised by OGL state changes, and prevents X-Plane and plug-ins from
|
||||
having to set all state before all draws; XPLMSetGraphicsState internally
|
||||
skips calls to change state that is already properly enabled.
|
||||
|
||||
X-Plane does not have a 'default' OGL state to plug-ins; plug-ins should
|
||||
totally set OGL state before drawing. Use XPLMSetGraphicsState instead of
|
||||
any of the above OpenGL calls.
|
||||
|
||||
WARNING: Any routine that performs drawing (e.g. XPLMDrawString or widget
|
||||
code) may change X-Plane's state. Always set state before drawing after
|
||||
unknown code has executed.
|
||||
*Deprecation Warnings*: X-Plane's lighting and fog environemnt is
|
||||
significantly more complex than the fixed function pipeline can express;
|
||||
do not assume that lighting and fog state is a good approximation for 3-d
|
||||
drawing. Prefer to use XPLMInstancing to draw objects. All calls to
|
||||
XPLMSetGraphicsState should have no fog or lighting.
|
||||
}
|
||||
PROCEDURE XPLMSetGraphicsState(
|
||||
inEnableFog : integer;
|
||||
inNumberTexUnits : integer;
|
||||
inEnableLighting : integer;
|
||||
inEnableAlphaTesting: integer;
|
||||
inEnableAlphaBlending: integer;
|
||||
inEnableDepthTesting: integer;
|
||||
inEnableDepthWriting: integer);
|
||||
{$IFDEF DELPHI}
|
||||
cdecl; external 'XPLM.DLL';
|
||||
{$ELSE}
|
||||
cdecl; external '';
|
||||
{$ENDIF}
|
||||
inEnableFog : Integer;
|
||||
inNumberTexUnits : Integer;
|
||||
inEnableLighting : Integer;
|
||||
inEnableAlphaTesting: Integer;
|
||||
inEnableAlphaBlending: Integer;
|
||||
inEnableDepthTesting: Integer;
|
||||
inEnableDepthWriting: Integer);
|
||||
cdecl; external XPLM_DLL;
|
||||
|
||||
{
|
||||
XPLMBindTexture2d
|
||||
|
||||
XPLMBindTexture2d changes what texture is bound to the 2d texturing target.
|
||||
This routine caches the current 2d texture across all texturing units in
|
||||
the sim and plug-ins, preventing extraneous binding. For example, consider
|
||||
several plug-ins running in series; if they all use the 'general interface'
|
||||
bitmap to do UI, calling this function will skip the rebinding of the
|
||||
general interface texture on all but the first plug-in, which can provide
|
||||
better frame rate son some graphics cards.
|
||||
XPLMBindTexture2d changes what texture is bound to the 2d texturing
|
||||
target. This routine caches the current 2d texture across all texturing
|
||||
units in the sim and plug-ins, preventing extraneous binding. For
|
||||
example, consider several plug-ins running in series; if they all use the
|
||||
'general interface' bitmap to do UI, calling this function will skip the
|
||||
rebinding of the general interface texture on all but the first plug-in,
|
||||
which can provide better frame rate son some graphics cards.
|
||||
|
||||
inTextureID is the ID of the texture object to bind; inTextureUnit is a
|
||||
zero-based texture unit (e.g. 0 for the first one), up to a maximum of 4
|
||||
units. (This number may increase in future versions of x-plane.)
|
||||
inTextureID is the ID of the texture object to bind; inTextureUnit is a
|
||||
zero-based texture unit (e.g. 0 for the first one), up to a maximum of 4
|
||||
units. (This number may increase in future versions of X-Plane.)
|
||||
|
||||
Use this routine instead of glBindTexture(GL_TEXTURE_2D, ....);
|
||||
Use this routine instead of glBindTexture(GL_TEXTURE_2D, ....);
|
||||
}
|
||||
PROCEDURE XPLMBindTexture2d(
|
||||
inTextureNum : integer;
|
||||
inTextureUnit : integer);
|
||||
{$IFDEF DELPHI}
|
||||
cdecl; external 'XPLM.DLL';
|
||||
{$ELSE}
|
||||
cdecl; external '';
|
||||
{$ENDIF}
|
||||
inTextureNum : Integer;
|
||||
inTextureUnit : Integer);
|
||||
cdecl; external XPLM_DLL;
|
||||
|
||||
{
|
||||
XPLMGenerateTextureNumbers
|
||||
|
||||
This routine generates unused texture numbers that a plug-in can use to
|
||||
safely bind textures. Use this routine instead of glGenTextures;
|
||||
glGenTextures will allocate texture numbers in ranges that X-Plane reserves
|
||||
for its own use but does not always use; for example, it might provide an
|
||||
ID within the range of textures reserved for terrain...loading a new .env
|
||||
file as the plane flies might then cause X-Plane to use this texture ID.
|
||||
X-Plane will then overwrite the plug-ins texture. This routine returns
|
||||
texture IDs that are out of X-Plane's usage range.
|
||||
Use this routine instead of glGenTextures to generate new texture object
|
||||
IDs. This routine historically ensured that plugins don't use texure IDs
|
||||
that X-Plane is reserving for its own use.
|
||||
}
|
||||
PROCEDURE XPLMGenerateTextureNumbers(
|
||||
outTextureIDs : Pinteger;
|
||||
inCount : integer);
|
||||
{$IFDEF DELPHI}
|
||||
cdecl; external 'XPLM.DLL';
|
||||
{$ELSE}
|
||||
cdecl; external '';
|
||||
{$ENDIF}
|
||||
outTextureIDs : PInteger;
|
||||
inCount : Integer);
|
||||
cdecl; external XPLM_DLL;
|
||||
|
||||
{$IFDEF XPLM_DEPRECATED}
|
||||
{
|
||||
XPLMGetTexture
|
||||
|
||||
XPLMGetTexture returns the OpenGL texture enumeration of an X-Plane texture
|
||||
based on a generic identifying code. For example, you can get the texture
|
||||
for X-Plane's UI bitmaps. This allows you to build new gauges that take
|
||||
advantage of x-plane's textures, for smooth artwork integration and also
|
||||
saving texture memory. Note that the texture might not be loaded yet,
|
||||
depending on what the plane's panel contains.
|
||||
|
||||
OPEN ISSUE: We really need a way to make sure X-Plane loads this texture if
|
||||
it isn't around, or at least a way to find out whether it is loaded or not.
|
||||
XPLMGetTexture returns the OpenGL texture ID of an X-Plane texture based on
|
||||
a generic identifying code. For example, you can get the texture for
|
||||
X-Plane's UI bitmaps.
|
||||
}
|
||||
FUNCTION XPLMGetTexture(
|
||||
inTexture : XPLMTextureID) : integer;
|
||||
{$IFDEF DELPHI}
|
||||
cdecl; external 'XPLM.DLL';
|
||||
{$ELSE}
|
||||
cdecl; external '';
|
||||
{$ENDIF}
|
||||
inTexture : XPLMTextureID) : Integer;
|
||||
cdecl; external XPLM_DLL;
|
||||
{$ENDIF XPLM_DEPRECATED}
|
||||
|
||||
{
|
||||
XPLMWorldToLocal
|
||||
|
||||
This routine translates coordinates from latitude, longitude, and altitude
|
||||
to local scene coordinates. Latitude and longitude are in decimal degrees,
|
||||
and altitude is in meters MSL (mean sea level). The XYZ coordinates are in
|
||||
meters in the local OpenGL coordinate system.
|
||||
This routine translates coordinates from latitude, longitude, and altitude
|
||||
to local scene coordinates. Latitude and longitude are in decimal degrees,
|
||||
and altitude is in meters MSL (mean sea level). The XYZ coordinates are in
|
||||
meters in the local OpenGL coordinate system.
|
||||
}
|
||||
PROCEDURE XPLMWorldToLocal(
|
||||
inLatitude : real;
|
||||
inLongitude : real;
|
||||
inAltitude : real;
|
||||
outX : Preal;
|
||||
outY : Preal;
|
||||
outZ : Preal);
|
||||
{$IFDEF DELPHI}
|
||||
cdecl; external 'XPLM.DLL';
|
||||
{$ELSE}
|
||||
cdecl; external '';
|
||||
{$ENDIF}
|
||||
inLatitude : Real;
|
||||
inLongitude : Real;
|
||||
inAltitude : Real;
|
||||
outX : PReal;
|
||||
outY : PReal;
|
||||
outZ : PReal);
|
||||
cdecl; external XPLM_DLL;
|
||||
|
||||
{
|
||||
XPLMLocalToWorld
|
||||
|
||||
This routine translates a local coordinate triplet back into latitude,
|
||||
longitude, and altitude. Latitude and longitude are in decimal degrees,
|
||||
and altitude is in meters MSL (mean sea level). The XYZ coordinates are in
|
||||
meters in the local OpenGL coordinate system.
|
||||
This routine translates a local coordinate triplet back into latitude,
|
||||
longitude, and altitude. Latitude and longitude are in decimal degrees,
|
||||
and altitude is in meters MSL (mean sea level). The XYZ coordinates are in
|
||||
meters in the local OpenGL coordinate system.
|
||||
|
||||
NOTE: world coordinates are less precise than local coordinates; you should
|
||||
try to avoid round tripping from local to world and back.
|
||||
NOTE: world coordinates are less precise than local coordinates; you should
|
||||
try to avoid round tripping from local to world and back.
|
||||
}
|
||||
PROCEDURE XPLMLocalToWorld(
|
||||
inX : real;
|
||||
inY : real;
|
||||
inZ : real;
|
||||
outLatitude : Preal;
|
||||
outLongitude : Preal;
|
||||
outAltitude : Preal);
|
||||
{$IFDEF DELPHI}
|
||||
cdecl; external 'XPLM.DLL';
|
||||
{$ELSE}
|
||||
cdecl; external '';
|
||||
{$ENDIF}
|
||||
inX : Real;
|
||||
inY : Real;
|
||||
inZ : Real;
|
||||
outLatitude : PReal;
|
||||
outLongitude : PReal;
|
||||
outAltitude : PReal);
|
||||
cdecl; external XPLM_DLL;
|
||||
|
||||
{
|
||||
XPLMDrawTranslucentDarkBox
|
||||
|
||||
This routine draws a translucent dark box, partially obscuring parts of the
|
||||
screen but making text easy to read. This is the same graphics primitive
|
||||
used by X-Plane to show text files and ATC info.
|
||||
This routine draws a translucent dark box, partially obscuring parts of the
|
||||
screen but making text easy to read. This is the same graphics primitive
|
||||
used by X-Plane to show text files and ATC info.
|
||||
}
|
||||
PROCEDURE XPLMDrawTranslucentDarkBox(
|
||||
inLeft : integer;
|
||||
inTop : integer;
|
||||
inRight : integer;
|
||||
inBottom : integer);
|
||||
{$IFDEF DELPHI}
|
||||
cdecl; external 'XPLM.DLL';
|
||||
{$ELSE}
|
||||
cdecl; external '';
|
||||
{$ENDIF}
|
||||
inLeft : Integer;
|
||||
inTop : Integer;
|
||||
inRight : Integer;
|
||||
inBottom : Integer);
|
||||
cdecl; external XPLM_DLL;
|
||||
|
||||
{___________________________________________________________________________
|
||||
* X-PLANE TEXT
|
||||
___________________________________________________________________________}
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
{
|
||||
XPLMFontID
|
||||
|
||||
X-Plane features some fixed-character fonts. Each font may have its own
|
||||
metrics.
|
||||
X-Plane features some fixed-character fonts. Each font may have its own
|
||||
metrics.
|
||||
|
||||
WARNING: Some of these fonts are no longer supported or may have changed
|
||||
geometries. For maximum copmatibility, see the comments below.
|
||||
WARNING: Some of these fonts are no longer supported or may have changed
|
||||
geometries. For maximum copmatibility, see the comments below.
|
||||
|
||||
Note: X-Plane 7 supports proportional-spaced fonts. Since no measuring
|
||||
routine is available yet, the SDK will normally draw using a fixed-width
|
||||
font. You can use a dataref to enable proportional font drawing on XP7 if
|
||||
you want to.
|
||||
Note: X-Plane 7 supports proportional-spaced fonts. Since no measuring
|
||||
routine is available yet, the SDK will normally draw using a fixed-width
|
||||
font. You can use a dataref to enable proportional font drawing on XP7 if
|
||||
you want to.
|
||||
}
|
||||
TYPE
|
||||
XPLMFontID = (
|
||||
{ Mono-spaced font for user interface. Available in all versions of the SDK. }
|
||||
{ Mono-spaced font for user interface. Available in all versions of the SDK.}
|
||||
xplmFont_Basic = 0
|
||||
|
||||
{ Deprecated, do not use. }
|
||||
{$IFDEF XPLM_DEPRECATED}
|
||||
{ Deprecated, do not use. }
|
||||
,xplmFont_Menus = 1
|
||||
{$ENDIF XPLM_DEPRECATED}
|
||||
|
||||
{ Deprecated, do not use. }
|
||||
{$IFDEF XPLM_DEPRECATED}
|
||||
{ Deprecated, do not use. }
|
||||
,xplmFont_Metal = 2
|
||||
{$ENDIF XPLM_DEPRECATED}
|
||||
|
||||
{ Deprecated, do not use. }
|
||||
{$IFDEF XPLM_DEPRECATED}
|
||||
{ Deprecated, do not use. }
|
||||
,xplmFont_Led = 3
|
||||
{$ENDIF XPLM_DEPRECATED}
|
||||
|
||||
{ Deprecated, do not use. }
|
||||
{$IFDEF XPLM_DEPRECATED}
|
||||
{ Deprecated, do not use. }
|
||||
,xplmFont_LedWide = 4
|
||||
{$ENDIF XPLM_DEPRECATED}
|
||||
|
||||
{ Deprecated, do not use. }
|
||||
{$IFDEF XPLM_DEPRECATED}
|
||||
{ Deprecated, do not use. }
|
||||
,xplmFont_PanelHUD = 5
|
||||
{$ENDIF XPLM_DEPRECATED}
|
||||
|
||||
{ Deprecated, do not use. }
|
||||
{$IFDEF XPLM_DEPRECATED}
|
||||
{ Deprecated, do not use. }
|
||||
,xplmFont_PanelEFIS = 6
|
||||
{$ENDIF XPLM_DEPRECATED}
|
||||
|
||||
{ Deprecated, do not use. }
|
||||
{$IFDEF XPLM_DEPRECATED}
|
||||
{ Deprecated, do not use. }
|
||||
,xplmFont_PanelGPS = 7
|
||||
{$ENDIF XPLM_DEPRECATED}
|
||||
|
||||
{ Deprecated, do not use. }
|
||||
{$IFDEF XPLM_DEPRECATED}
|
||||
{ Deprecated, do not use. }
|
||||
,xplmFont_RadiosGA = 8
|
||||
{$ENDIF XPLM_DEPRECATED}
|
||||
|
||||
{ Deprecated, do not use. }
|
||||
{$IFDEF XPLM_DEPRECATED}
|
||||
{ Deprecated, do not use. }
|
||||
,xplmFont_RadiosBC = 9
|
||||
{$ENDIF XPLM_DEPRECATED}
|
||||
|
||||
{ Deprecated, do not use. }
|
||||
{$IFDEF XPLM_DEPRECATED}
|
||||
{ Deprecated, do not use. }
|
||||
,xplmFont_RadiosHM = 10
|
||||
{$ENDIF XPLM_DEPRECATED}
|
||||
|
||||
{ Deprecated, do not use. }
|
||||
{$IFDEF XPLM_DEPRECATED}
|
||||
{ Deprecated, do not use. }
|
||||
,xplmFont_RadiosGANarrow = 11
|
||||
{$ENDIF XPLM_DEPRECATED}
|
||||
|
||||
{ Deprecated, do not use. }
|
||||
{$IFDEF XPLM_DEPRECATED}
|
||||
{ Deprecated, do not use. }
|
||||
,xplmFont_RadiosBCNarrow = 12
|
||||
{$ENDIF XPLM_DEPRECATED}
|
||||
|
||||
{ Deprecated, do not use. }
|
||||
{$IFDEF XPLM_DEPRECATED}
|
||||
{ Deprecated, do not use. }
|
||||
,xplmFont_RadiosHMNarrow = 13
|
||||
{$ENDIF XPLM_DEPRECATED}
|
||||
|
||||
{ Deprecated, do not use. }
|
||||
{$IFDEF XPLM_DEPRECATED}
|
||||
{ Deprecated, do not use. }
|
||||
,xplmFont_Timer = 14
|
||||
{$ENDIF XPLM_DEPRECATED}
|
||||
|
||||
{ Deprecated, do not use. }
|
||||
{$IFDEF XPLM_DEPRECATED}
|
||||
{ Deprecated, do not use. }
|
||||
,xplmFont_FullRound = 15
|
||||
{$ENDIF XPLM_DEPRECATED}
|
||||
|
||||
{ Deprecated, do not use. }
|
||||
{$IFDEF XPLM_DEPRECATED}
|
||||
{ Deprecated, do not use. }
|
||||
,xplmFont_SmallRound = 16
|
||||
{$ENDIF XPLM_DEPRECATED}
|
||||
|
||||
{ Deprecated, do not use. }
|
||||
{$IFDEF XPLM_DEPRECATED}
|
||||
{ Deprecated, do not use. }
|
||||
,xplmFont_Menus_Localized = 17
|
||||
{$ENDIF XPLM_DEPRECATED}
|
||||
|
||||
{$IFDEF XPLM200}
|
||||
{ Proportional UI font. }
|
||||
{ Proportional UI font. }
|
||||
,xplmFont_Proportional = 18
|
||||
{$ENDIF}
|
||||
{$ENDIF XPLM200}
|
||||
|
||||
);
|
||||
PXPLMFontID = ^XPLMFontID;
|
||||
@@ -352,90 +349,76 @@ TYPE
|
||||
{
|
||||
XPLMDrawString
|
||||
|
||||
This routine draws a NULL termianted string in a given font. Pass in the
|
||||
lower left pixel that the character is to be drawn onto. Also pass the
|
||||
character and font ID. This function returns the x offset plus the width of
|
||||
all drawn characters. The color to draw in is specified as a pointer to an
|
||||
array of three floating point colors, representing RGB intensities from 0.0
|
||||
to 1.0.
|
||||
This routine draws a NULL termianted string in a given font. Pass in the
|
||||
lower left pixel that the character is to be drawn onto. Also pass the
|
||||
character and font ID. This function returns the x offset plus the width of
|
||||
all drawn characters. The color to draw in is specified as a pointer to an
|
||||
array of three floating point colors, representing RGB intensities from 0.0
|
||||
to 1.0.
|
||||
}
|
||||
PROCEDURE XPLMDrawString(
|
||||
inColorRGB : Psingle;
|
||||
inXOffset : integer;
|
||||
inYOffset : integer;
|
||||
inChar : Pchar;
|
||||
inWordWrapWidth : Pinteger; { Can be nil }
|
||||
inColorRGB : PSingle;
|
||||
inXOffset : Integer;
|
||||
inYOffset : Integer;
|
||||
inChar : XPLMString;
|
||||
inWordWrapWidth : PInteger; { Can be nil }
|
||||
inFontID : XPLMFontID);
|
||||
{$IFDEF DELPHI}
|
||||
cdecl; external 'XPLM.DLL';
|
||||
{$ELSE}
|
||||
cdecl; external '';
|
||||
{$ENDIF}
|
||||
cdecl; external XPLM_DLL;
|
||||
|
||||
{
|
||||
XPLMDrawNumber
|
||||
|
||||
This routine draws a number similar to the digit editing fields in
|
||||
PlaneMaker and data output display in X-Plane. Pass in a color, a
|
||||
position, a floating point value, and formatting info. Specify how many
|
||||
integer and how many decimal digits to show and whether to show a sign, as
|
||||
well as a character set. This routine returns the xOffset plus width of the
|
||||
string drawn.
|
||||
This routine draws a number similar to the digit editing fields in
|
||||
PlaneMaker and data output display in X-Plane. Pass in a color, a
|
||||
position, a floating point value, and formatting info. Specify how many
|
||||
integer and how many decimal digits to show and whether to show a sign, as
|
||||
well as a character set. This routine returns the xOffset plus width of the
|
||||
string drawn.
|
||||
}
|
||||
PROCEDURE XPLMDrawNumber(
|
||||
inColorRGB : Psingle;
|
||||
inXOffset : integer;
|
||||
inYOffset : integer;
|
||||
inValue : real;
|
||||
inDigits : integer;
|
||||
inDecimals : integer;
|
||||
inShowSign : integer;
|
||||
inColorRGB : PSingle;
|
||||
inXOffset : Integer;
|
||||
inYOffset : Integer;
|
||||
inValue : Real;
|
||||
inDigits : Integer;
|
||||
inDecimals : Integer;
|
||||
inShowSign : Integer;
|
||||
inFontID : XPLMFontID);
|
||||
{$IFDEF DELPHI}
|
||||
cdecl; external 'XPLM.DLL';
|
||||
{$ELSE}
|
||||
cdecl; external '';
|
||||
{$ENDIF}
|
||||
cdecl; external XPLM_DLL;
|
||||
|
||||
{
|
||||
XPLMGetFontDimensions
|
||||
|
||||
This routine returns the width and height of a character in a given font.
|
||||
It also tells you if the font only supports numeric digits. Pass NULL if
|
||||
you don't need a given field. Note that for a proportional font the width
|
||||
will be an arbitrary, hopefully average width.
|
||||
This routine returns the width and height of a character in a given font.
|
||||
It also tells you if the font only supports numeric digits. Pass NULL if
|
||||
you don't need a given field. Note that for a proportional font the width
|
||||
will be an arbitrary, hopefully average width.
|
||||
}
|
||||
PROCEDURE XPLMGetFontDimensions(
|
||||
inFontID : XPLMFontID;
|
||||
outCharWidth : Pinteger; { Can be nil }
|
||||
outCharHeight : Pinteger; { Can be nil }
|
||||
outDigitsOnly : Pinteger); { Can be nil }
|
||||
{$IFDEF DELPHI}
|
||||
cdecl; external 'XPLM.DLL';
|
||||
{$ELSE}
|
||||
cdecl; external '';
|
||||
{$ENDIF}
|
||||
outCharWidth : PInteger; { Can be nil }
|
||||
outCharHeight : PInteger; { Can be nil }
|
||||
outDigitsOnly : PInteger); { Can be nil }
|
||||
cdecl; external XPLM_DLL;
|
||||
|
||||
{$IFDEF XPLM200}
|
||||
{
|
||||
XPLMMeasureString
|
||||
|
||||
This routine returns the width in pixels of a string using a given font.
|
||||
The string is passed as a pointer plus length (and does not need to be null
|
||||
terminated); this is used to allow for measuring substrings. The return
|
||||
value is floating point; it is possible that future font drawing may allow
|
||||
for fractional pixels.
|
||||
This routine returns the width in pixels of a string using a given font.
|
||||
The string is passed as a pointer plus length (and does not need to be null
|
||||
terminated); this is used to allow for measuring substrings. The return
|
||||
value is floating point; it is possible that future font drawing may allow
|
||||
for fractional pixels.
|
||||
}
|
||||
FUNCTION XPLMMeasureString(
|
||||
inFontID : XPLMFontID;
|
||||
inChar : Pchar;
|
||||
inNumChars : integer) : single;
|
||||
{$IFDEF DELPHI}
|
||||
cdecl; external 'XPLM.DLL';
|
||||
{$ELSE}
|
||||
cdecl; external '';
|
||||
{$ENDIF}
|
||||
{$ENDIF}
|
||||
inChar : XPLMString;
|
||||
inNumChars : Integer) : Single;
|
||||
cdecl; external XPLM_DLL;
|
||||
{$ENDIF XPLM200}
|
||||
|
||||
|
||||
IMPLEMENTATION
|
||||
|
||||
END.
|
||||
Reference in new issue
Block a user