MapLink Pro 11.1.1.0.
Envitia MapLink Pro: The Ultimate Mapping Application Toolkit
Loading...
Searching...
No Matches
TSLWGLAcceleratedSurface Class Reference
Inheritance diagram for TSLWGLAcceleratedSurface:

Detailed Description

OpenGL Accelerated drawing surface for Microsoft Windows.

Creates the TSLAcceleratedRenderer when the user adds a class derived from TSLAccleratedRenderControl.

MapLink Notes:

Background clearing should always be turned on. The tiles are drawn with the background colour.

The draw extent will be ignored and the whole display will be redrawn on a draw.

Layers which are single buffered will be drawn in the order they were added or subsequently reordered. Unless the layer is an Accelerated Custom layer the drawing will be performed using Xlib.

Single buffered layers interleaved with double buffered layers will be drawn after the buffered tiles have been drawn.

When using an Accelerated Custom Datalayer then the matrices need to be preserved.

This Surface will work with the Editor SDK (see limitations below).

OpenGL Notes.

The projection we are using is an glOrtho projection setup for 2D display of map data.

As such the following OpenGL settings are used:

glDisable( GL_DEPTH_TEST );
glDisable( GL_TEXTURE_2D );
glPolygonMode( GL_FRONT, GL_FILL );
glClearDepth(1.0f);
glEnable( GL_CULL_FACE );
glCullFace( GL_BACK );
glFrontFace(GL_CCW);
glShadeModel(GL_FLAT);

The background clear colour is the current surface background colour.

MapLink assumes that the OpenGL context that it creates remains current.

If any of the settings are modified in the Custom Data Layer they should be reset on exit back to MapLink.

The current matrix mode is GL_MODELVIEW.

The view rotation will have been applied to this matrix stack.

The Surface creates an OpenGL context if one is not supplied. At the start of each frame the current context is checked and made current if necessary.

OpenGL Context

The OpenGL Context passed in must be setup as a minimum with the following attribute list:

static PIXELFORMATDESCRIPTOR bit24pfd =
{
sizeof(PIXELFORMATDESCRIPTOR), // size of this pfd
1, // version number
PFD_DRAW_TO_WINDOW | // support window
PFD_SUPPORT_OPENGL
PFD_TYPE_RGBA, // RGBA type
24, // 24-bit color depth
0, 0, 0, 0, 0, 0, // color bits ignored
0, // no alpha buffer
0, // shift bit ignored
0, // no accumulation buffer
0, 0, 0, 0, // accum bits ignored
24, // 24-bit z-buffer
0, // no stencil buffer
0, // no auxiliary buffer
PFD_MAIN_PLANE, // main layer
0, // reserved
0, 0, 0 // layer masks ignored
};
// OpenGL rendering context format information
PIXELFORMATDESCRIPTOR pfd;
bit32pfd.dwFlags = PFD_SUPPORT_OPENGL;
// Ask for a video mode that matches the requested feature set
int pixelformat = ChoosePixelFormat( hdc, &bit24pfd );
// Get the details of the returned vide mode
DescribePixelFormat( hdc, pixelformat, sizeof(PIXELFORMATDESCRIPTOR),
&pfd );
// Set the video mode on the HDC
SetPixelFormat( hdc, pixelformat, &pfd ) ;
// Create OpenGL context
HGLRC context = wglCreateContext( m_hdc );

If you create a context then you must destroy the context.

Limitations:

Unbuffered layers may not be visible if drawn behind the buffered layers. Unbuffered layers in front of the buffered layers will be visible.

Objects drawn via the un-buffered layers are drawn using GDI. GDI does not support 32bit bitmaps very well so fill styles which are patterned will not be drawn the same as when draw using the TSLNTSurface. This issue also affects rasters which have transparent fills.This is a limitation of GDI. Unbuffered layers require 32bit bitmap and texture support.

The translucency (TSLPropertyTransparency) of the first buffered layer defines the translucency of the tiled rendering for the DirectX version of this drawing surface. However the OpenGL versions do not currently support this functionality.

The attach and detach methods are not supported by this Drawing Surface.

Public Member Functions

 TSLWGLAcceleratedSurface (void *handle, bool handleIsHDC, HGLRC *context=NULL)
 
virtual TSLDrawingSurfaceclone (bool copyUserData=false)
 
HGLRC getContext () const
 
virtual ~TSLWGLAcceleratedSurface ()
 
- Public Member Functions inherited from TSLAcceleratedSurface
virtual ~TSLAcceleratedSurface ()
 
virtual bool addRenderControl (TSLAcceleratedRenderControl *renderControl)
 
bool ADUsPerDU (double &xUnits, double &yUnits) const
 
bool ADUToLatLon (const double xADU, const double yADU, double &lat, double &lon, bool local=false) const
 
bool ADUToTMC (const double xADU, const double yADU, TSLTMC &xTMC, TSLTMC &yTMC) const
 
void displayCentre (double &x, double &y) const
 
bool displayScale (double &scaleX, double &scaleY) const
 
void getADUExtent (double *x1, double *y1, double *x2, double *y2) const
 
bool getConfiguration (TSLAcceleratorConfiguration &configuration) const
 
bool latLonToADU (const double lat, const double lon, double &xADU, double &yADU, bool local=false) const
 
bool setConfiguration (TSLAcceleratorConfiguration &configuration)
 
virtual void setOption (TSLOptionEnum option, bool value)
 
double TMCsPerADU () const
 
bool TMCToADU (const TSLTMC xTMC, const TSLTMC yTMC, double &xADU, double &yADU) const
 
double viewRotation () const
 
- Public Member Functions inherited from TSLDrawingSurface
bool clearAllRendering ()
 
bool clearDynamicColours ()
 
TSLRasterBuffercreateRasterBuffer (unsigned int width, unsigned int height, TSLRasterBuffer::Format format, TSLRasterBuffer::FilterMode filterMode=TSLRasterBuffer::Linear)
 
bool declutterIsVisible (const char *feature_name, double resolution=0.0, const char *layer_name=0) const
 
bool drawDU (TSLDeviceUnits x1, TSLDeviceUnits y1, TSLDeviceUnits x2, TSLDeviceUnits y2, bool clear, bool updateExtentOnly=false)
 
bool drawUU (double x1, double y1, double x2, double y2, bool clear, bool updateExtentOnly=false)
 
bool DUToLatLong (TSLDeviceUnits x, TSLDeviceUnits y, double *latitude, double *longitude, bool local=false, bool boundCheck=true) const
 
bool DUToMU (TSLDeviceUnits x1, TSLDeviceUnits y1, double *x2, double *y2) const
 
bool DUToTMC (TSLDeviceUnits x1, TSLDeviceUnits y1, TSLTMC *x2, TSLTMC *y2) const
 
bool DUToUU (TSLDeviceUnits x1, TSLDeviceUnits y1, double *x2, double *y2) const
 
TSLEntityfindEntityDU (TSLDeviceUnits x, TSLDeviceUnits y, TSLDeviceUnits aperture, int depth, const char *feature_name=NULL)
 
TSLEntityfindEntityUU (double x, double y, double aperture, int depth, const char *feature_name=NULL)
 
TSLEntityfindSelectedEntityDU (TSLDeviceUnits x, TSLDeviceUnits y, TSLDeviceUnits aperture, int depth=-1, bool ignoreMapDataLayers=false)
 
TSLEntityfindSelectedEntityUU (double x, double y, double aperture, int depth=-1, bool ignoreMapDataLayers=false)
 
bool getColourIndices (int **indices, int *num)
 
TSLDataLayergetCoordinateProvidingLayer ()
 
const TSLDataLayergetCoordinateProvidingLayer () const
 
bool getDeclutterRange (const char *featureName, double *innerLimit, double *outerLimit, const char *dataLayerName=0, const char *detailLayerName=0)
 
bool getDeviceCapabilities (int &horizontalSizeMM, int &verticalSizeMM, int &horizontalSizePixels, int &verticalSizePixels) const
 
bool getDeviceCapabilities (TSLDeviceCapabilities &capabilities) const
 
void getDUExtent (TSLDeviceUnits *x1, TSLDeviceUnits *y1, TSLDeviceUnits *x2, TSLDeviceUnits *y2) const
 
bool getFillStyleIndices (int **indices, int *num)
 
bool getFontStyleIndices (int **indices, int *num)
 
bool getLineStyleIndices (int **indices, int *num)
 
void getMUExtent (double *x1, double *y1, double *x2, double *y2) const
 
bool getSymbolStyleIndices (int **indices, int *num)
 
TSLDrawingSurfaceTiledBufferControlgetTiledBufferController ()
 
void getTMCExtent (TSLEnvelope &extent) const
 
void getUUExtent (double *x1, double *y1, double *x2, double *y2) const
 
bool getViewedLatLongRange (double *latitude, double *longitude, double *range, bool local=false, bool boundCheck=true) const
 
bool latLongToDU (double latitude, double longitude, TSLDeviceUnits *x, TSLDeviceUnits *y, bool local=false) const
 
bool latLongToMU (double latitude, double longitude, double *x, double *y, bool local=false) const
 
bool latLongToTMC (double latitude, double longitude, TSLTMC *x, TSLTMC *y, bool local=false) const
 
bool latLongToUU (double latitude, double longitude, double *x, double *y, bool local=false) const
 
bool MUToDU (double x1, double y1, TSLDeviceUnits *x2, TSLDeviceUnits *y2) const
 
bool MUToLatLong (double x, double y, double *latitude, double *longitude, bool local=false, bool boundCheck=true) const
 
bool MUToTMC (double x1, double y1, TSLTMC *x2, TSLTMC *y2) const
 
bool MUToUU (double x1, double y1, double *x2, double *y2) const
 
bool pan (double x1, double y1, bool auto_redraw=true)
 
bool pan (double x1, double y1, TSLDeviceUnits xDU, TSLDeviceUnits yDU, bool auto_redraw=true)
 
TSLMapQueryquery (const char *layerName, TSLTMC x1, TSLTMC y1, TSLTMC x2, TSLTMC y2, int depth=-1, const char *feature_name=NULL) const
 
TSLMapQueryquery (const char *layerName, TSLTMC x1, TSLTMC y1, TSLTMC x2, TSLTMC y2, TSLSelector *selector) const
 
bool redraw ()
 
bool reset (bool auto_redraw=true)
 
bool resize (double x1, double y1, double x2, double y2, bool auto_redraw=true, bool keep_aspect=false)
 
bool rotate (double angle)
 
double rotation () const
 
bool setDeclutterRange (const char *featureName, double innerLimit, double outerLimit, const char *dataLayerName=0, const char *detailLayerName=0)
 
bool setDeviceCapabilities (const int horizontalSizeMM=0, const int verticalSizeMM=0, const int horizontalSizePixels=0, const int verticalSizePixels=0)
 
bool setDeviceCapabilities (const TSLDeviceCapabilities &capabilities)
 
void setRedrawCallback (TSLDrawingSurfaceDrawCallback *callback)
 
bool setupDynamicColours (const char *filename)
 
bool setViewedLatLongRange (double latitude, double longitude, double range, bool local=false, bool auto_redraw=true, bool keep_aspect=false)
 
void TMCperDU (double &xr, double &yr)
 
double TMCperUU ()
 
bool TMCToDU (TSLTMC x1, TSLTMC y1, TSLDeviceUnits *x2, TSLDeviceUnits *y2) const
 
bool TMCToLatLong (TSLTMC x, TSLTMC y, double *latitude, double *longitude, bool local=false, bool boundCheck=true) const
 
bool TMCToMU (TSLTMC x1, TSLTMC y1, double *x2, double *y2) const
 
bool TMCToUU (TSLTMC x1, TSLTMC y1, double *x2, double *y2) const
 
bool updateEntityExtent (TSLEntity *entity, const char *layerName)
 
void userUnitOrigin (double x_origin, double y_origin)
 
void userUnitOrigin (TSLUUEnum origin_enum)
 
void userUnits (double factor)
 
double userUnits ()
 
bool UUToDU (double x1, double y1, TSLDeviceUnits *x2, TSLDeviceUnits *y2) const
 
bool UUToLatLong (double x, double y, double *latitude, double *longitude, bool local=false, bool boundCheck=true) const
 
bool UUToMU (double x1, double y1, double *x2, double *y2) const
 
bool UUToTMC (double x1, double y1, TSLTMC *x2, TSLTMC *y2) const
 
bool wndResize (TSLDeviceUnits x1, TSLDeviceUnits y1, TSLDeviceUnits x2, TSLDeviceUnits y2, bool auto_redraw=true, TSLResizeActionEnum action=TSLResizeActionNone)
 
bool zoom (double percent, bool zoom_in, bool auto_redraw=true)
 
 TSLDrawingSurface ()
 
virtual ~TSLDrawingSurface ()
 
void clearSymbolList ()
 
void clearFontList ()
 
void clearLineList ()
 
void clearFillList ()
 
bool removeFillStyle (TSLStyleID style)
 
bool removeLineStyle (TSLStyleID style)
 
bool removeSymbolStyle (TSLStyleID style)
 
bool removeFontStyle (TSLStyleID style)
 
TSLStyleID createFontID (const TSLSimpleString &name, TSLFontType meaningOfName, int fontWeight, bool italic=false, bool underline=false, bool antiAliased=false, const unsigned char *memoryBlock=NULL, TSLSize memoryBlockSize=0)
 
TSLStyleID createStandardLineID (const unsigned char *pattern, TSLSize patternLength, int initialOffset, TSLLineScalingType scaleType)
 
TSLStyleID createSymbolLineID (int symbolID, double size=0.0, TSLDimensionUnits sizeUnits=TSLDimensionUnitsUndefined, float rotation=0.0f, double anchorPointX=0.0, double anchorPointY=0.0, TSLDimensionUnits anchorPointUnits=TSLDimensionUnitsUndefined)
 
TSLStyleID createStandardFillID (const unsigned char *pattern=NULL, TSLSize patternSizeInBytes=0, int patternXSize=0, int patternYSize=0)
 
TSLStyleID createSymbolFillID (int symbolID, double size=0.0, TSLDimensionUnits sizeUnits=TSLDimensionUnitsUndefined, float rotation=0.0f, double anchorPointX=0.0, double anchorPointY=0.0, TSLDimensionUnits anchorPointUnits=TSLDimensionUnitsUndefined)
 
TSLStyleID createSVGSymbolID (const TSLSimpleString &name, const unsigned char *memoryBlock=NULL, TSLSize memoryBlockSize=0)
 
TSLStyleID createFontSymbolID (const TSLSimpleString &name, TSLFontType meaningOfName, const unsigned char *memoryBlock=NULL, TSLSize memoryBlockSize=0)
 
TSLStyleID createRasterSymbolID (const TSLSimpleString &name, int xorigin, int yorigin, bool scaleable, const unsigned char *memoryBlock=NULL, TSLSize memoryBlockSize=0)
 
TSLStyleID createSymbolIDFromSymbol (TSLStyleID symbolID, int numberofColourPairs, const int *colourFrom, const int *colourTo)
 
- Public Member Functions inherited from TSLDrawingSurfaceBase
bool addDataLayer (TSLDataLayer *data_layer_interface, const char *data_id)
 
bool addDynamicRenderer (TSLDynamicRenderer *renderer, TSLFeatureID featureID=-1, const char *layerName=0)
 
bool addFeatureRendering (const char *featureName, TSLFeatureID featureID)
 
void attach (TSLDeviceContext handle)
 
void attach (TSLWindowHandle handle)
 
void attach (TSLDrawableHandle handle)
 
bool bringInFrontof (const char *move_data_layer, const char *target_data_layer)
 
bool bringToFront (const char *move_data_layer)
 
bool clearAllDeclutterData (const char *layer_name=0)
 
void clearAllDynamicRenderers ()
 
bool clearBackgroundColour ()
 
bool clearDeclutterData (const char *feature_name, const char *layer_name=0)
 
bool clearDynamicRenderer (TSLFeatureID featureID=-1, const char *layerName=0)
 
bool clearFeatureRendering (const char *featureName, TSLFeatureID featureID)
 
bool clearFrame ()
 
bool copyDeclutterData (const char *src_feature_name, const char *dest_feature_name, const char *src_layer_name=0, const char *dest_layer_name=0)
 
void detach ()
 
void detachAllDynamicRenderers ()
 
bool detachDynamicRenderer (TSLFeatureID featureID=-1, const char *layerName=0)
 
const char * featureClass (TSLFeatureID feature_id)
 
bool forceLayer (const char *data_id, const char *detail_layer_name)
 
bool getBackgroundColour (TSLStyleID *value)
 
bool getColourValue (int colour, unsigned char &r, unsigned char &g, unsigned char &b)
 
TSLDataLayergetDataLayer (const char *data_id)
 
bool getDataLayerInfo (int N, TSLDataLayer **dataLayer, const char **layerName) const
 
bool getDataLayerProps (const char *data_id, TSLPropertyEnum property_id, TSLPropertyValue *old_value)
 
bool getDeclutterStatus (const char *feature_name, TSLDeclutterStatusResultEnum *value, const char *dataLayerName=0, const char *detailLayerName=0)
 
bool getDeclutterStatus (TSLFeatureID feature_id, TSLDeclutterStatusResultEnum *value, const char *dataLayerName, const char *detailLayerName=0)
 
TSLDynamicRenderergetDynamicRenderer (TSLFeatureID featureID=-1, const char *layerName=0)
 
bool getFeatureRendering (const char *featureName, TSLFeatureID featureID, TSLRenderingAttributeInt attribute, int *result) const
 
bool getFeatureRendering (const char *featureName, TSLFeatureID featureID, TSLRenderingAttributeDouble attribute, double *result) const
 
bool getFeatureRendering (const char *featureName, TSLFeatureID featureID, TSLRenderingAttributeBool attribute, bool *result) const
 
bool getFeatureRendering (const char *featureName, TSLFeatureID featureID, TSLRenderingAttributes *result) const
 
int getNumDataLayers () const
 
bool getOption (TSLOptionEnum option)
 
void id (int id_)
 
int id () const
 
bool idleProcess ()
 
bool loadDeclutter (const char *filename)
 
bool loadRendering (const char *filename)
 
TSLPickResultSetpick (TSLDeviceUnits x, TSLDeviceUnits y, TSLDeviceUnits aperture, int depth, TSLPickSelector *selector=0)
 
TSLPickResultSetpick (const char *data_id, TSLDeviceUnits x, TSLDeviceUnits y, TSLDeviceUnits aperture, int depth=-1, TSLPickSelector *selector=0)
 
bool queryActiveLayer (const char *data_id, char *detail_layer_name, int detail_layer_name_size)
 
bool removeDataLayer (const char *data_id)
 
bool saveDeclutter (const char *filename, TSLMapLinkVersion ver=TSL_CURRENT_MAPLINK_VERSION)
 
bool saveRendering (const char *filename, TSLMapLinkVersion ver=TSL_CURRENT_MAPLINK_VERSION)
 
bool sendToBack (const char *move_data_layer)
 
bool sendToBackOf (const char *move_data_layer, const char *target_data_layer)
 
bool setBackgroundColour (int value)
 
bool setCoordinateProvidingLayer (const char *layer_name)
 
bool setDataLayerProps (const char *data_id, TSLPropertyEnum property_id, TSLPropertyValue new_value)
 
bool setDeclutterStatus (const char *feature_name, TSLDeclutterStatusEnum value, const char *dataLayerName=0, const char *detailLayerName=0)
 
bool setDeclutterStatus (TSLFeatureID feature_id, TSLDeclutterStatusEnum value, const char *dataLayerName=0, const char *detailLayerName=0)
 
bool setDeclutterStatusOnAllFeatures (TSLDeclutterStatusEnum value, const char *dataLayerName=0, const char *detailLayerName=0)
 
bool setFeatureRendering (const char *featureName, TSLFeatureID featureID, TSLRenderingAttributeInt attribute, int value)
 
bool setFeatureRendering (const char *featureName, TSLFeatureID featureID, TSLRenderingAttributeDouble attribute, double value)
 
bool setFeatureRendering (const char *featureName, TSLFeatureID featureID, TSLRenderingAttributeBool attribute, bool value)
 
bool setFeatureRendering (const char *featureName, TSLFeatureID featureID, TSLRenderingAttributes *value)
 
bool setFrame (int style, int colour, int thickness)
 
double TMCperMU ()
 
TSLDrawingSurfaceTypeEnum type () const
 
void userWord (void *ptr) const
 
void * userWord () const
 
bool cloneDynamicRenderersFrom (const TSLDrawingSurfaceBase *otherSurface)
 
void addDuplicateLayers (bool value)
 
virtual ~TSLDrawingSurfaceBase ()
 

Additional Inherited Members

- Static Public Member Functions inherited from TSLDrawingSurface
static void cleanup ()
 
static bool copy (TSLDrawingSurface *copyTo, TSLDrawingSurface *copyFrom, bool copyUserData=false)
 
static TSLStyleID getIDOfNearestColour (int r, int g, int b)
 
static bool loadStandardConfig (const char *path=0, bool delayLoadIncludes=false)
 
static bool setupColours (const char *filename)
 
static bool setupFillStyles (const char *filename, bool delayLoadIncludes=false)
 
static bool setupFonts (const char *filename, bool delayLoadIncludes=false)
 
static bool setupLineStyles (const char *filename, bool delayLoadIncludes=false)
 
static bool setupSymbols (const char *filename, bool delayLoadIncludes=false)
 
static void disableAntiAliasFonts ()
 
static void enableAntiAliasFonts ()
 
- Static Public Member Functions inherited from TSLDrawingSurfaceBase
static bool addLoader (TSLFileLoader *loader)
 
static bool addPathList (TSLPathList *path_list)
 
static bool findFile (const char *filename, TSLSimpleString &foundPath)
 
static TSLFileLoadergetLoader ()
 
- Protected Member Functions inherited from TSLAcceleratedSurface
 TSLAcceleratedSurface ()
 
- Protected Member Functions inherited from TSLDrawingSurfaceBase
 TSLDrawingSurfaceBase ()
 
- Protected Attributes inherited from TSLAcceleratedSurface
TSLAcceleratedRendererm_acceleratedRenderer
 
- Protected Attributes inherited from TSLDrawingSurfaceBase
void * m_classID
 

Constructor & Destructor Documentation

◆ TSLWGLAcceleratedSurface()

TSLWGLAcceleratedSurface::TSLWGLAcceleratedSurface ( void * handle,
bool handleIsHDC,
HGLRC * context = NULL )

Construct a Windows OpenGL specific TSLAcceleratedDrawingSurface.

Parameters
handleReference to a Windows resource to which the TSLAcceleratedDrawing Surface is to be attached.
handleIsHDCTrue the resource passed is a device context, false if it is a window.
contextAn optional OpenGL context. The Surface creates an OpenGL context if one is not supplied. At the start of each frame the current context is checked and made current if necessary. If you create and pass in a context then you must also destroy the context.

◆ ~TSLWGLAcceleratedSurface()

virtual TSLWGLAcceleratedSurface::~TSLWGLAcceleratedSurface ( )
virtual

Member Function Documentation

◆ clone()

virtual TSLDrawingSurface * TSLWGLAcceleratedSurface::clone ( bool copyUserData = false)
virtual

This method returns a TSLNTSurface.

Parameters
copyUserDataIf true, the userID and userWord will be copied to the new surface.

You can not clone a TSLWGLAcceleratedSurface.

Implements TSLDrawingSurface.

◆ getContext()

HGLRC TSLWGLAcceleratedSurface::getContext ( ) const

Returns the OpenGL Context.

This may be required if you wish to share the lists (texture and/or display lists) with the Accelerator Context.

Returns NULL if a problem occurs or the OpenGL Context does not exist.

See wglShareLists