CBlueUI  
C++ 跨平台跨框架的数据可视化工具
载入中...
搜索中...
未找到
BUI::GPathStorage类 参考

路径顶点源(在GPathStorage的世界里,椭圆,弧线,样条曲线都是由足够细腻的直线拟合的) 更多...

类 BUI::GPathStorage 继承关系图:

Public 类型

enum  CombinationPathFlag {
  combination_or , combination_and , combination_xor , combination_a_minus_b ,
  combination_b_minus_a
}
typedef vertex_base_f value_type

Public 成员函数

 GPathStorage ()
 GPathStorage (GPathStorage *other)
virtual ~GPathStorage ()
unsigned vertex (double *x, double *y)
 获得顶点数据。调用一次后,内部游标会自动指向下一个顶点,直到返回0结束。 rewind(0)表示将游标设置到0位置
unsigned last_command ()
unsigned last_vertex (double *x, double *y)
unsigned prev_vertex (double *x, double *y)
void rewind (unsigned path_id)
 重置内部访问游标
void add_vertex (double x, double y, unsigned cmd)
 添加顶点
UINT size () const
 顶点个数
void clear ()
 清除所有顶点
value_typeoperator[] (unsigned int pos)
float total_length ()
 计算路径长度
BOOL GetScreenPoint (POINT &pt, int pos, int dx, int dy)
 获得pos位置的顶点坐标,然后经过变换,最后加上(dx,dy)的偏移量
void ConcatPath (GPathStorage &vs, unsigned path_id=0, PathConvType type=CONV_NONE)
 将vs连接到本路径中。
void Revert ()
 首尾翻转。同时翻转坐标和顶点类型
BOOL IsClosed ()
 判断是否是几何闭合路径
void Invert ()
 路径顶点倒置。值翻转坐标,顶点类型不翻转
void SetTransform (PathTransform *trans)
 设置顶点变换
BoundRect PathBox (unsigned path_id=0, bool use_trans=false, Transform2d *mtx=NULL)
 获得路径的矩形区域
RECT PathBoxToRect (unsigned path_id=0, bool use_trans=false, Transform2d *mtx=NULL)
void CenterAverage (double *x, double *y)
 计算几何中心
void PuckerOrBloat (GPathStorage *other, float xa, float ya, float xc, float yc, float amount)
 Pucker/Bloat效果
int StartNewPath ()
unsigned PathIDCounts ()
 组合路径数量
unsigned PathId ()
 当前的索引ID
void ClosePath ()
void RelToAbs (double *x, double *y)
void PathMoveTo (double x, double y)
void PathLineTo (double x, double y)
void PathHLineTo (double x)
void PathVLineTo (double y)
void Curve3 (double to_x, double y_to)
void Curve4 (double ctrl2_x, double y_ctrl2, double to_x, double to_y)
void PathCurve4 (POINT pt[4])
void PathCurve3 (POINT pt[3])
void PathCurve4WithDouble (VecFloat2 pt[4])
void PathCurve3WithDouble (VecFloat2 pt[3])
void PathBSpline (POINT *pt, int len)
void ParseCmdData (const char *data)
void ParsePointsData (const char *data, BOOL is_close)
void PathArcTo (double x, double y, double rx, double ry, double a1, double a2, bool ccw=true)
 PathArcTo
void PathJoinArcTo (double x, double y, double rx, double ry, double a1, double a2, bool ccw)
void PathPie (double x0, double y0, double rx, double ry, double a1, double a2)
void PathRing (double x0, double y0, double rx, double ry, double a1, double a2, double dis)
void PathRingRound (double x0, double y0, double rx, double ry, double a1, double a2, double dis, double round=PI/45)
void PathEllipse (double cx, double cy, double rx, double ry)
void PathRect (double x1, double y1, double w, double h, double rx1=0, double ry1=0, double rx2=0, double ry2=0, double rx3=0, double ry3=0, double rx4=0, double ry4=0)
void CurveFrom (GPathStorage *vs)
 片段化。用折线近似曲线
void Trimmed (GPathStorage *output, float start, float end, float offset, BOOL curve=FALSE)
 截取路径的一部分
void UpdateYValue (double low, double hight)
 随机生成Y更新测试数据
BOOL HitTestPoint (double x, double y)
 测试命中点
void ConvertToPolarCoordinate (double cx, double cy)
 将笛卡尔坐标系数据点,转换为极坐标系
void CreateWebTabPath (RECT rc_box, double angle, int dir, float r=4, BOOL is_border=TRUE)
 Create a Web Tab Path object
void generate_soft_icon (int R)
 软件图标
void CreateG3RoundRectPath (RECT rc_box, int n)
 生成G3曲率的圆角矩形
void generate_star_round (int R)
 圆角五角星
void generate_petal5 (int R)
 五花瓣
void generate_gear_wheel (int R1, double a1, int R2, double a2)
 齿轮
void generate_along_with_single_path (TransAlongSinglePath &tap)
 将图形沿单一路径变换
void generate_along_with_double_path (TransAlongDoublePath &tap)
 将图形沿双路径变换
void clip_polygon (GPathStorage *out_path, int x1, int y1, int x2, int y2)
 矩形区域裁剪路径

静态 Public 成员函数

static void generate_arrowhead (ArrowHead &head, int size)
static void build_radius_border_path (GPathStorage *path, RECT &rc_round, RoundRectRadius &radius, BOOL is_round_radius_draw_line, BOOL is_round_radius_parl)
 构建边缘路径
static void build_radius_border_parl_path (GPathStorage *path, RECT &rc_round, RoundRectRadius &radius)
static void combination_path (GPathStorage *result_path, GPathStorage *path1, GPathStorage *path2, CombinationPathFlag cmp_op)
 路径组合操作

Protected 成员函数

virtual value_typeGetAt (unsigned int pos)
virtual void push_back (const value_type &vt)
unsigned get_transform_vertex (unsigned int pos, double *x, double *y)

Protected 属性

unsigned int m_index
unsigned int m_num_vertices
std::vector< value_typem_vertexs
PathTransformm_transform

详细描述

路径顶点源(在GPathStorage的世界里,椭圆,弧线,样条曲线都是由足够细腻的直线拟合的)

成员类型定义说明

◆ value_type

成员枚举类型说明

◆ CombinationPathFlag

枚举值
combination_or 
combination_and 
combination_xor 
combination_a_minus_b 
combination_b_minus_a 

构造及析构函数说明

◆ GPathStorage() [1/2]

BUI::GPathStorage::GPathStorage ( )

◆ GPathStorage() [2/2]

BUI::GPathStorage::GPathStorage ( GPathStorage * other)

◆ ~GPathStorage()

virtual BUI::GPathStorage::~GPathStorage ( )
virtual

成员函数说明

◆ add_vertex()

void BUI::GPathStorage::add_vertex ( double x,
double y,
unsigned cmd )

添加顶点

◆ build_radius_border_parl_path()

void BUI::GPathStorage::build_radius_border_parl_path ( GPathStorage * path,
RECT & rc_round,
RoundRectRadius & radius )
static

◆ build_radius_border_path()

void BUI::GPathStorage::build_radius_border_path ( GPathStorage * path,
RECT & rc_round,
RoundRectRadius & radius,
BOOL is_round_radius_draw_line,
BOOL is_round_radius_parl )
static

构建边缘路径

参数
is_round_radius_draw_line直线型为TRUE, 圆角为FALSE

◆ CenterAverage()

void BUI::GPathStorage::CenterAverage ( double * x,
double * y )

计算几何中心

参数
x输出参数:X坐标
y输出参数:Y坐标

◆ clear()

void BUI::GPathStorage::clear ( )

清除所有顶点

◆ clip_polygon()

void BUI::GPathStorage::clip_polygon ( GPathStorage * out_path,
int x1,
int y1,
int x2,
int y2 )

矩形区域裁剪路径

◆ ClosePath()

void BUI::GPathStorage::ClosePath ( )

◆ combination_path()

void BUI::GPathStorage::combination_path ( GPathStorage * result_path,
GPathStorage * path1,
GPathStorage * path2,
CombinationPathFlag cmp_op )
static

路径组合操作

参数
result_path输出结果路径
path1
path2
cmp_op合并操作

◆ ConcatPath()

void BUI::GPathStorage::ConcatPath ( GPathStorage & vs,
unsigned path_id = 0,
PathConvType type = CONV_NONE )

将vs连接到本路径中。

◆ ConvertToPolarCoordinate()

void BUI::GPathStorage::ConvertToPolarCoordinate ( double cx,
double cy )

将笛卡尔坐标系数据点,转换为极坐标系

◆ CreateG3RoundRectPath()

void BUI::GPathStorage::CreateG3RoundRectPath ( RECT rc_box,
int n )

生成G3曲率的圆角矩形

◆ CreateWebTabPath()

void BUI::GPathStorage::CreateWebTabPath ( RECT rc_box,
double angle,
int dir,
float r = 4,
BOOL is_border = TRUE )

Create a Web Tab Path object

参数
angle偏角大小
dir方向
r圆角尺寸

◆ Curve3()

void BUI::GPathStorage::Curve3 ( double to_x,
double y_to )

◆ Curve4()

void BUI::GPathStorage::Curve4 ( double ctrl2_x,
double y_ctrl2,
double to_x,
double to_y )

◆ CurveFrom()

void BUI::GPathStorage::CurveFrom ( GPathStorage * vs)

片段化。用折线近似曲线

◆ generate_along_with_double_path()

void BUI::GPathStorage::generate_along_with_double_path ( TransAlongDoublePath & tap)

将图形沿双路径变换

◆ generate_along_with_single_path()

void BUI::GPathStorage::generate_along_with_single_path ( TransAlongSinglePath & tap)

将图形沿单一路径变换

◆ generate_arrowhead()

void BUI::GPathStorage::generate_arrowhead ( ArrowHead & head,
int size )
static

◆ generate_gear_wheel()

void BUI::GPathStorage::generate_gear_wheel ( int R1,
double a1,
int R2,
double a2 )

齿轮

参数
R1齿外边缘半径
a1齿外边缘弧度大小
R2齿内边缘半径
a2齿内边缘弧度大小

◆ generate_petal5()

void BUI::GPathStorage::generate_petal5 ( int R)

五花瓣

◆ generate_soft_icon()

void BUI::GPathStorage::generate_soft_icon ( int R)

软件图标

◆ generate_star_round()

void BUI::GPathStorage::generate_star_round ( int R)

圆角五角星

◆ get_transform_vertex()

unsigned BUI::GPathStorage::get_transform_vertex ( unsigned int pos,
double * x,
double * y )
protected

◆ GetAt()

virtual value_type & BUI::GPathStorage::GetAt ( unsigned int pos)
protectedvirtual

◆ GetScreenPoint()

BOOL BUI::GPathStorage::GetScreenPoint ( POINT & pt,
int pos,
int dx,
int dy )

获得pos位置的顶点坐标,然后经过变换,最后加上(dx,dy)的偏移量

参数
pt:输出结果
pos:顶点索引
dx: x增量
dy: y增量
返回
BOOL : 是否是有效

◆ HitTestPoint()

BOOL BUI::GPathStorage::HitTestPoint ( double x,
double y )

测试命中点

◆ Invert()

void BUI::GPathStorage::Invert ( )

路径顶点倒置。值翻转坐标,顶点类型不翻转

◆ IsClosed()

BOOL BUI::GPathStorage::IsClosed ( )

判断是否是几何闭合路径

◆ last_command()

unsigned BUI::GPathStorage::last_command ( )

◆ last_vertex()

unsigned BUI::GPathStorage::last_vertex ( double * x,
double * y )

◆ operator[]()

value_type & BUI::GPathStorage::operator[] ( unsigned int pos)

◆ ParseCmdData()

void BUI::GPathStorage::ParseCmdData ( const char * data)

◆ ParsePointsData()

void BUI::GPathStorage::ParsePointsData ( const char * data,
BOOL is_close )

◆ PathArcTo()

void BUI::GPathStorage::PathArcTo ( double x,
double y,
double rx,
double ry,
double a1,
double a2,
bool ccw = true )

PathArcTo

参数
a1a2 基于三点方向顺时针的角度
ccw优弧顺时针方向为true,劣弧逆时针方向为false

◆ PathBox()

BoundRect BUI::GPathStorage::PathBox ( unsigned path_id = 0,
bool use_trans = false,
Transform2d * mtx = NULL )

获得路径的矩形区域

参数
path_id路径起始位置
use_transfalse:原始坐标点,true:变换后的坐标点
mtx变换矩阵
返回
BoundRect 矩形区域

◆ PathBoxToRect()

RECT BUI::GPathStorage::PathBoxToRect ( unsigned path_id = 0,
bool use_trans = false,
Transform2d * mtx = NULL )

◆ PathBSpline()

void BUI::GPathStorage::PathBSpline ( POINT * pt,
int len )

◆ PathCurve3()

void BUI::GPathStorage::PathCurve3 ( POINT pt[3])

◆ PathCurve3WithDouble()

void BUI::GPathStorage::PathCurve3WithDouble ( VecFloat2 pt[3])

◆ PathCurve4()

void BUI::GPathStorage::PathCurve4 ( POINT pt[4])

◆ PathCurve4WithDouble()

void BUI::GPathStorage::PathCurve4WithDouble ( VecFloat2 pt[4])

◆ PathEllipse()

void BUI::GPathStorage::PathEllipse ( double cx,
double cy,
double rx,
double ry )

◆ PathHLineTo()

void BUI::GPathStorage::PathHLineTo ( double x)

◆ PathId()

unsigned BUI::GPathStorage::PathId ( )

当前的索引ID

◆ PathIDCounts()

unsigned BUI::GPathStorage::PathIDCounts ( )

组合路径数量

◆ PathJoinArcTo()

void BUI::GPathStorage::PathJoinArcTo ( double x,
double y,
double rx,
double ry,
double a1,
double a2,
bool ccw )

◆ PathLineTo()

void BUI::GPathStorage::PathLineTo ( double x,
double y )

◆ PathMoveTo()

void BUI::GPathStorage::PathMoveTo ( double x,
double y )

◆ PathPie()

void BUI::GPathStorage::PathPie ( double x0,
double y0,
double rx,
double ry,
double a1,
double a2 )

◆ PathRect()

void BUI::GPathStorage::PathRect ( double x1,
double y1,
double w,
double h,
double rx1 = 0,
double ry1 = 0,
double rx2 = 0,
double ry2 = 0,
double rx3 = 0,
double ry3 = 0,
double rx4 = 0,
double ry4 = 0 )

◆ PathRing()

void BUI::GPathStorage::PathRing ( double x0,
double y0,
double rx,
double ry,
double a1,
double a2,
double dis )

◆ PathRingRound()

void BUI::GPathStorage::PathRingRound ( double x0,
double y0,
double rx,
double ry,
double a1,
double a2,
double dis,
double round = PI/45 )

◆ PathVLineTo()

void BUI::GPathStorage::PathVLineTo ( double y)

◆ prev_vertex()

unsigned BUI::GPathStorage::prev_vertex ( double * x,
double * y )

◆ PuckerOrBloat()

void BUI::GPathStorage::PuckerOrBloat ( GPathStorage * other,
float xa,
float ya,
float xc,
float yc,
float amount )

Pucker/Bloat效果

参数
other输入源路径
xa锚点的x坐标
ya锚点的y坐标
xc中心的x坐标。可以是几何中心,也可以是质心(也称重心)
yc中心的y坐标
amount百分比(0-1)

◆ push_back()

virtual void BUI::GPathStorage::push_back ( const value_type & vt)
protectedvirtual

◆ RelToAbs()

void BUI::GPathStorage::RelToAbs ( double * x,
double * y )

◆ Revert()

void BUI::GPathStorage::Revert ( )

首尾翻转。同时翻转坐标和顶点类型

◆ rewind()

void BUI::GPathStorage::rewind ( unsigned path_id)

重置内部访问游标

◆ SetTransform()

void BUI::GPathStorage::SetTransform ( PathTransform * trans)

设置顶点变换

◆ size()

UINT BUI::GPathStorage::size ( ) const

顶点个数

◆ StartNewPath()

int BUI::GPathStorage::StartNewPath ( )

◆ total_length()

float BUI::GPathStorage::total_length ( )

计算路径长度

◆ Trimmed()

void BUI::GPathStorage::Trimmed ( GPathStorage * output,
float start,
float end,
float offset,
BOOL curve = FALSE )

截取路径的一部分

◆ UpdateYValue()

void BUI::GPathStorage::UpdateYValue ( double low,
double hight )

随机生成Y更新测试数据

◆ vertex()

unsigned BUI::GPathStorage::vertex ( double * x,
double * y )

获得顶点数据。调用一次后,内部游标会自动指向下一个顶点,直到返回0结束。 rewind(0)表示将游标设置到0位置

参数
x:输出参数
y:输出参数
返回
unsigned : 顶点类型(moveto,lineto,curve3,curve4...)

类成员变量说明

◆ m_index

unsigned int BUI::GPathStorage::m_index
protected

◆ m_num_vertices

unsigned int BUI::GPathStorage::m_num_vertices
protected

◆ m_transform

PathTransform* BUI::GPathStorage::m_transform
protected

◆ m_vertexs

std::vector<value_type> BUI::GPathStorage::m_vertexs
protected
鄂公网安备42018502007752 鄂ICP备2024082886
Copyright © 2026 · CBlueStudio 版权所有