QGIS API Documentation  2.5.0-Master
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
Classes | Typedefs | Enumerations | Functions
pal Namespace Reference

Classes

struct  _chain
 
struct  _cHullBox
 
struct  _cross
 
struct  _elementary_transformation
 
struct  _featCbackCtx
 
struct  _filterContext
 
struct  _nokContext
 
struct  _subpart
 
struct  _Triple
 
class  Cell
 
struct  ChainContext
 
class  CostCalculator
 
struct  FalpContext
 
class  Feats
 For usage in problem solving algorithm. More...
 
class  Feature
 
class  FeaturePart
 Main class to handle feature. More...
 
struct  Ft
 
class  HashTable
 
class  InternalException
 Various Exceptions. More...
 
class  LabelInfo
 optional additional info about label (for curved labels) More...
 
class  LabelPosition
 LabelPositon is a candidate feature label position. More...
 
class  Layer
 A layer of spacial entites. More...
 
class  LinkedList
 
class  Pal
 Pal main class. More...
 
class  PalException
 Various Exceptions. More...
 
class  PalGeometry
 Interface that allows Pal to access user's geometries. More...
 
class  PalStat
 Summury of problem. More...
 
struct  Point
 
class  PointSet
 
class  PolygonCostCalculator
 Data structure to compute polygon's candidates costs. More...
 
class  PriorityQueue
 
class  Problem
 Represent a problem. More...
 
class  RTree
 
class  SimpleMutex
 
class  Sol
 
struct  SubPartContext
 
struct  UpdateContext
 

Typedefs

typedef struct pal::_featCbackCtx FeatCallBackCtx
 
typedef struct pal::_filterContext FilterContext
 
typedef enum _Units Units
 Typedef for _Units enumeration. More...
 
typedef enum _searchMethod SearchMethod
 Typedef for _Units enumeration. More...
 
typedef enum _arrangement Arrangement
 typedef for _arrangement enumeration More...
 
typedef struct pal::_cross Crossing
 
typedef struct pal::_cHullBox CHullBox
 
typedef struct pal::_Triple Triple
 
typedef struct pal::_nokContext NokContext
 
typedef struct pal::_subpart SubPart
 
typedef struct pal::_chain Chain
 
typedef THREAD_TYPE MUTEX_T
 
typedef struct
pal::_elementary_transformation 
ElemTrans
 

Enumerations

enum  _Units { PIXEL = 0, METER, FOOT, DEGREE }
 Units for label sizes and distlabel. More...
 
enum  _searchMethod {
  CHAIN = 0, POPMUSIC_TABU_CHAIN = 1, POPMUSIC_TABU = 2, POPMUSIC_CHAIN = 3,
  FALP = 4
}
 Search method to use. More...
 
enum  _arrangement {
  P_POINT = 0, P_POINT_OVER, P_LINE, P_CURVED,
  P_HORIZ, P_FREE
}
 The way to arrange labels against spatial entities. More...
 
enum  LineArrangementFlags { FLAG_ON_LINE = 1, FLAG_ABOVE_LINE = 2, FLAG_BELOW_LINE = 4, FLAG_MAP_ORIENTATION = 8 }
 enumeration line arrangement flags. More...
 

Functions

static LabelPosition_createCurvedCandidate (LabelPosition *lp, double angle, double dist)
 
void heapsort (int *sid, int *id, const double *const x, int N)
 
void heapsort2 (int *x, double *heap, int N)
 
bool isSegIntersects (double x1, double y1, double x2, double y2, double x3, double y3, double x4, double y4)
 
bool computeSegIntersectionExt (double x1, double y1, double x2, double y2, double xs1, double ys1, double x3, double y3, double x4, double y4, double xs2, double ys2, double *x, double *y)
 
bool computeLineSegIntersection (double x1, double y1, double x2, double y2, double x3, double y3, double x4, double y4, double *x, double *y)
 
bool computeSegIntersection (double x1, double y1, double x2, double y2, double x3, double y3, double x4, double y4, double *x, double *y)
 
bool computeLineIntersection (double x1, double y1, double x2, double y2, double x3, double y3, double x4, double y4, double *x, double *y)
 
int convexHullId (int *id, const double *const x, const double *const y, int n, int *&cHull)
 
int reorderPolygon (int nbPoints, double *x, double *y)
 
bool isPointInPolygon (int npol, double *xp, double *yp, double x, double y)
 
void findLineCircleIntersection (double cx, double cy, double radius, double x1, double y1, double x2, double y2, double &xRes, double &yRes)
 
double cross_product (double x1, double y1, double x2, double y2, double x3, double y3)
 
double dist_euc2d (double x1, double y1, double x2, double y2)
 
double dist_euc2d_sq (double x1, double y1, double x2, double y2)
 
int convexHull (int *id, const double *const x, const double *const y, int n)
 
static FeaturePart_findConnectedPart (FeaturePart *partCheck, LinkedList< FeaturePart * > *otherParts)
 
void geosError (const char *fmt,...)
 
void geosNotice (const char *fmt,...)
 
GEOSContextHandle_t geosContext ()
 Get GEOS context handle to be used in all GEOS library calls with reentrant API. More...
 
bool extractFeatCallback (FeaturePart *ft_ptr, void *ctx)
 
bool filteringCallback (PointSet *pset, void *ctx)
 
bool ptrCrossingCompare (Crossing *a, Crossing *b)
 
bool crossingDist (void *a, void *b)
 
bool smaller (double l, double r)
 
bool bigger (double l, double r)
 
void delete_chain (Chain *chain)
 
bool borderSizeDec (void *l, void *r)
 
bool borderSizeInc (void *l, void *r)
 
bool increaseImportance (void *l, void *r)
 
bool increaseNbOverlap (void *l, void *r)
 
bool falpCallback2 (LabelPosition *lp, void *ctx)
 
void ignoreLabel (LabelPosition *lp, PriorityQueue *list, RTree< LabelPosition *, double, 2, double > *candidates)
 
bool falpCallback1 (LabelPosition *lp, void *ctx)
 
bool subPartCallback (LabelPosition *lp, void *ctx)
 
bool decreaseCost (void *tl, void *tr)
 
bool increaseCost (void *tl, void *tr)
 
void actualizeTabuCandidateList (int m, int iteration, int nbOverlap, int *candidateListSize, double candidateBaseFactor, double *candidateFactor, int minCandidateListSize, double reductionFactor, int minTabuTSize, double tabuFactor, int *tenure, int n)
 
void actualizeCandidateList (int nbOverlap, int *candidateListSize, double candidateBaseFactor, double *candidateFactor, int minCandidateListSize, double growingFactor, int n)
 
bool updateCandidatesCost (LabelPosition *lp, void *context)
 
bool chainCallback (LabelPosition *lp, void *context)
 
bool checkCallback (LabelPosition *lp, void *ctx)
 
bool nokCallback (LabelPosition *lp, void *context)
 
void sort (double *heap, int *x, int *y, int N)
 
void tabcpy (int n, const int *const x, const int *const y, const double *const prob, int *cx, int *cy, double *p)
 
void sort (void **items, int N, bool(*greater)(void *l, void *r))
 Sort an array of pointers. More...
 
bool ptrGeomEq (const GEOSGeometry *l, const GEOSGeometry *r)
 
LinkedList< const GEOSGeometry * > * unmulti (const GEOSGeometry *the_geom)
 
int max (int a, int b)
 
double max (double a, double b)
 returns the maximum of two doubles or the first argument if both are equal More...
 
int min (int a, int b)
 
double min (double a, double b)
 returns the minimum of two doubles or the first argument if both are equal More...
 
double vabs (double x)
 
double degree2meter (double delta_deg)
 
double unit_convert (double x, Units from, Units to, int dpi, double scale, double delta_canvas_width)
 
void convert2pt (int *x, double scale, int dpi)
 
int convert2pt (double x, double scale, int dpi)
 
bool intCompare (int a, int b)
 
bool strCompare (char *a, char *b)
 
bool ptrLPosCompare (LabelPosition *a, LabelPosition *b)
 
bool ptrPSetCompare (PointSet *a, PointSet *b)
 
bool ptrFeatureCompare (Feature *a, Feature *b)
 
bool ptrFeaturePartCompare (FeaturePart *a, FeaturePart *b)
 
bool ptrFeatsCompare (Feats *a, Feats *b)
 
bool ptrLayerCompare (Layer *a, Layer *b)
 
bool ptrETCompare (ElemTrans *a, ElemTrans *b)
 

Detailed Description

Introduction

Pal is a labelling library released under the GPLv3 license

Typedef Documentation

typedef for _arrangement enumeration

typedef struct pal::_chain pal::Chain
typedef struct pal::_cHullBox pal::CHullBox
typedef struct pal::_cross pal::Crossing
typedef THREAD_TYPE pal::MUTEX_T

Typedef for _Units enumeration.

typedef struct pal::_subpart pal::SubPart
typedef struct pal::_Triple pal::Triple
typedef enum _Units pal::Units

Typedef for _Units enumeration.

Enumeration Type Documentation

The way to arrange labels against spatial entities.

image html arrangement.png "Arrangement modes" width=7cm

Enumerator
P_POINT 

arranges candidates around a point (centroid for polygon)

P_POINT_OVER 
P_LINE 

arranges candidates over a point (centroid for polygon)

Only for lines and polygons, arranges candidates over the line or the polygon perimeter

P_CURVED 
P_HORIZ 

Only for lines, labels along the line.

Only for polygon, arranges candidates horizontaly

P_FREE 

Only for polygon, arranges candidates with respect of polygon orientation.

Search method to use.

Enumerator
CHAIN 

is the worst but fastest method

POPMUSIC_TABU_CHAIN 

is the best but slowest

POPMUSIC_TABU 

is a little bit better than CHAIN but slower

POPMUSIC_CHAIN 

is slower and best than TABU, worse and faster than TABU_CHAIN

FALP 

Units for label sizes and distlabel.

Enumerator
PIXEL 

pixel [px]

METER 

meter [m]

FOOT 

foot [ft]

DEGREE 

degree [°]

enumeration line arrangement flags.

Flags can be combined.

Enumerator
FLAG_ON_LINE 
FLAG_ABOVE_LINE 
FLAG_BELOW_LINE 
FLAG_MAP_ORIENTATION 

Function Documentation

static LabelPosition* pal::_createCurvedCandidate ( LabelPosition *  lp,
double  angle,
double  dist 
)
static
static FeaturePart* pal::_findConnectedPart ( FeaturePart *  partCheck,
LinkedList< FeaturePart * > *  otherParts 
)
static
void pal::actualizeCandidateList ( int  nbOverlap,
int *  candidateListSize,
double  candidateBaseFactor,
double *  candidateFactor,
int  minCandidateListSize,
double  growingFactor,
int  n 
)
inline
void pal::actualizeTabuCandidateList ( int  m,
int  iteration,
int  nbOverlap,
int *  candidateListSize,
double  candidateBaseFactor,
double *  candidateFactor,
int  minCandidateListSize,
double  reductionFactor,
int  minTabuTSize,
double  tabuFactor,
int *  tenure,
int  n 
)
inline
bool pal::bigger ( double  l,
double  r 
)
bool pal::borderSizeDec ( void *  l,
void *  r 
)
inline
bool pal::borderSizeInc ( void *  l,
void *  r 
)
inline
bool pal::chainCallback ( LabelPosition *  lp,
void *  context 
)
bool pal::checkCallback ( LabelPosition *  lp,
void *  ctx 
)
bool pal::computeLineIntersection ( double  x1,
double  y1,
double  x2,
double  y2,
double  x3,
double  y3,
double  x4,
double  y4,
double *  x,
double *  y 
)
bool pal::computeLineSegIntersection ( double  x1,
double  y1,
double  x2,
double  y2,
double  x3,
double  y3,
double  x4,
double  y4,
double *  x,
double *  y 
)
bool pal::computeSegIntersection ( double  x1,
double  y1,
double  x2,
double  y2,
double  x3,
double  y3,
double  x4,
double  y4,
double *  x,
double *  y 
)
bool pal::computeSegIntersectionExt ( double  x1,
double  y1,
double  x2,
double  y2,
double  xs1,
double  ys1,
double  x3,
double  y3,
double  x4,
double  y4,
double  xs2,
double  ys2,
double *  x,
double *  y 
)
void pal::convert2pt ( int *  x,
double  scale,
int  dpi 
)
inline
int pal::convert2pt ( double  x,
double  scale,
int  dpi 
)
inline
int pal::convexHull ( int *  id,
const double *const  x,
const double *const  y,
int  n 
)
int pal::convexHullId ( int *  id,
const double *const  x,
const double *const  y,
int  n,
int *&  cHull 
)
double pal::cross_product ( double  x1,
double  y1,
double  x2,
double  y2,
double  x3,
double  y3 
)
inline
bool pal::crossingDist ( void *  a,
void *  b 
)
inline
bool pal::decreaseCost ( void *  tl,
void *  tr 
)
double pal::degree2meter ( double  delta_deg)
inline
void pal::delete_chain ( Chain *  chain)
inline
double pal::dist_euc2d ( double  x1,
double  y1,
double  x2,
double  y2 
)
inline
double pal::dist_euc2d_sq ( double  x1,
double  y1,
double  x2,
double  y2 
)
inline
bool pal::extractFeatCallback ( FeaturePart *  ft_ptr,
void *  ctx 
)
bool pal::falpCallback1 ( LabelPosition *  lp,
void *  ctx 
)
bool pal::falpCallback2 ( LabelPosition *  lp,
void *  ctx 
)
bool pal::filteringCallback ( PointSet *  pset,
void *  ctx 
)
void pal::findLineCircleIntersection ( double  cx,
double  cy,
double  radius,
double  x1,
double  y1,
double  x2,
double  y2,
double &  xRes,
double &  yRes 
)
GEOSContextHandle_t pal::geosContext ( )

Get GEOS context handle to be used in all GEOS library calls with reentrant API.

void pal::geosError ( const char *  fmt,
  ... 
)
void pal::geosNotice ( const char *  fmt,
  ... 
)
void pal::heapsort ( int *  sid,
int *  id,
const double *const  x,
int  N 
)
void pal::heapsort2 ( int *  x,
double *  heap,
int  N 
)
void pal::ignoreLabel ( LabelPosition *  lp,
PriorityQueue *  list,
RTree< LabelPosition *, double, 2, double > *  candidates 
)
bool pal::increaseCost ( void *  tl,
void *  tr 
)
bool pal::increaseImportance ( void *  l,
void *  r 
)
inline
bool pal::increaseNbOverlap ( void *  l,
void *  r 
)
inline
bool pal::intCompare ( int  a,
int  b 
)
inline
bool pal::isPointInPolygon ( int  npol,
double *  xp,
double *  yp,
double  x,
double  y 
)
bool pal::isSegIntersects ( double  x1,
double  y1,
double  x2,
double  y2,
double  x3,
double  y3,
double  x4,
double  y4 
)
int pal::max ( int  a,
int  b 
)
inline
double pal::max ( double  a,
double  b 
)
inline

returns the maximum of two doubles or the first argument if both are equal

int pal::min ( int  a,
int  b 
)
inline
double pal::min ( double  a,
double  b 
)
inline

returns the minimum of two doubles or the first argument if both are equal

bool pal::nokCallback ( LabelPosition *  lp,
void *  context 
)
bool pal::ptrCrossingCompare ( Crossing *  a,
Crossing *  b 
)
inline
bool pal::ptrETCompare ( ElemTrans *  a,
ElemTrans *  b 
)
inline
bool pal::ptrFeatsCompare ( Feats *  a,
Feats *  b 
)
inline
bool pal::ptrFeatureCompare ( Feature *  a,
Feature *  b 
)
inline
bool pal::ptrFeaturePartCompare ( FeaturePart *  a,
FeaturePart *  b 
)
inline
bool pal::ptrGeomEq ( const GEOSGeometry *  l,
const GEOSGeometry *  r 
)
inline
bool pal::ptrLayerCompare ( Layer *  a,
Layer *  b 
)
inline
bool pal::ptrLPosCompare ( LabelPosition *  a,
LabelPosition *  b 
)
inline
bool pal::ptrPSetCompare ( PointSet *  a,
PointSet *  b 
)
inline
int pal::reorderPolygon ( int  nbPoints,
double *  x,
double *  y 
)
bool pal::smaller ( double  l,
double  r 
)
void pal::sort ( double *  heap,
int *  x,
int *  y,
int  N 
)
void pal::sort ( void **  items,
int  N,
bool(*)(void *l, void *r)  greater 
)

Sort an array of pointers.

Parameters
itemsarays of pointers to sort
Nnumber of items
greaterfunction to compare two items
bool pal::strCompare ( char *  a,
char *  b 
)
inline
bool pal::subPartCallback ( LabelPosition *  lp,
void *  ctx 
)
void pal::tabcpy ( int  n,
const int *const  x,
const int *const  y,
const double *const  prob,
int *  cx,
int *  cy,
double *  p 
)
double pal::unit_convert ( double  x,
Units  from,
Units  to,
int  dpi,
double  scale,
double  delta_canvas_width 
)
inline
LinkedList< const GEOSGeometry * > * pal::unmulti ( const GEOSGeometry *  the_geom)
bool pal::updateCandidatesCost ( LabelPosition *  lp,
void *  context 
)
double pal::vabs ( double  x)
inline