Path class¶
This page explains the Path
class.
What class is this?¶
The Path
class creates a path vector graphics object.
Basic usage¶
The Path
class constructor requires the path_data_list
argument.
The path_data_list
argument is a list of each path setting, such as the PathLineTo
or PathBezier2D
.
The constructor also accepts each style’s argument, such as the fill_color
and line_color
.
import apysc as ap
ap.Stage(
background_color=ap.Color("#333"),
stage_width=200,
stage_height=100,
stage_elem_id="stage",
)
path: ap.Path = ap.Path(
path_data_list=[
ap.PathMoveTo(x=50, y=50),
ap.PathLineTo(x=150, y=50),
],
line_color=ap.Color("0af"),
line_thickness=5,
)
ap.save_overall_html(dest_dir_path="path_basic_usage/")
PathMoveTo class setting¶
The PathMoveTo
class is the class to set a new position on a path.
For more information, please see:
PathLineTo class setting¶
The PathLineTo
class is the class to set a new line from the current position on a path.
For more information, please see:
PathHorizontal class setting¶
The PathHorizontal
class is the class to set a new horizontal line on a path.
For more information, please see:
PathVertical class setting¶
The PathVertical
class is the class to set a new vertical line on a path.
For more information, please see:
PathClose class setting¶
The PathClose
class is the class to close a path.
For more information, please see:
PathBezier2D class setting¶
The PathBezier2D
class is the class to set a 2D bezier curve on a path.
For more information, please see:
PathBezier2DContinual class setting¶
The PathBezier2DContinual
class is the class to set a continual 2D bezier curve on a path.
For more information, please see:
PathBezier3D class setting¶
The PathBezier3D
class is the class to set a 3D bezier curve on a path.
For more information, please see:
PathBezier3DContinual class setting¶
The PathBezier3DContinual
class is the class to set a continual 3D bezier curve on a path.
For more information, please see:
x property interface example¶
The x
property updates or gets the instance’s x-coordinate:
import apysc as ap
ap.Stage(
background_color=ap.Color("#333"),
stage_width=150,
stage_height=100,
stage_elem_id="stage",
)
sprite: ap.Sprite = ap.Sprite()
path: ap.Path = ap.Path(
path_data_list=[
ap.PathMoveTo(x=0, y=0),
ap.PathLineTo(x=0, y=50),
ap.PathLineTo(x=50, y=50),
ap.PathClose(),
],
line_color=ap.Color("#0af"),
line_thickness=5,
)
path.x = ap.Number(50)
ap.save_overall_html(dest_dir_path="path_x/")
y property interface example¶
The y
property updates or gets the instance’s y-coordinate:
import apysc as ap
ap.Stage(
background_color=ap.Color("#333"),
stage_width=100,
stage_height=150,
stage_elem_id="stage",
)
sprite: ap.Sprite = ap.Sprite()
path: ap.Path = ap.Path(
path_data_list=[
ap.PathMoveTo(x=0, y=0),
ap.PathLineTo(x=0, y=50),
ap.PathLineTo(x=50, y=50),
ap.PathClose(),
],
line_color=ap.Color("#0af"),
line_thickness=5,
)
path.y = ap.Number(50)
ap.save_overall_html(dest_dir_path="path_y/")
fill_color property interface example¶
The fill_color
property updates or gets the instance’s fill color:
import apysc as ap
ap.Stage(
background_color=ap.Color("#333"),
stage_width=150,
stage_height=150,
stage_elem_id="stage",
)
sprite: ap.Sprite = ap.Sprite()
path: ap.Path = ap.Path(
path_data_list=[
ap.PathMoveTo(x=50, y=50),
ap.PathLineTo(x=50, y=100),
ap.PathLineTo(x=100, y=100),
ap.PathClose(),
],
)
path.fill_color = ap.Color("#0af")
ap.save_overall_html(dest_dir_path="path_fill_color/")
fill_alpha property interface example¶
The fill_alpha
property updates or gets the instance’s fill alpha (opacity):
import apysc as ap
ap.Stage(
background_color=ap.Color("#333"),
stage_width=150,
stage_height=150,
stage_elem_id="stage",
)
sprite: ap.Sprite = ap.Sprite()
path: ap.Path = ap.Path(
path_data_list=[
ap.PathMoveTo(x=50, y=50),
ap.PathLineTo(x=50, y=100),
ap.PathLineTo(x=100, y=100),
ap.PathClose(),
],
fill_color=ap.Color("#0af"),
)
path.fill_alpha = ap.Number(0.5)
ap.save_overall_html(dest_dir_path="path_fill_alpha/")
line_color property interface example¶
The line_color
property updates or gets the instance’s line color:
import apysc as ap
ap.Stage(
background_color=ap.Color("#333"),
stage_width=150,
stage_height=150,
stage_elem_id="stage",
)
sprite: ap.Sprite = ap.Sprite()
path: ap.Path = ap.Path(
path_data_list=[
ap.PathMoveTo(x=50, y=50),
ap.PathLineTo(x=50, y=100),
ap.PathLineTo(x=100, y=100),
ap.PathClose(),
],
line_thickness=5,
)
path.line_color = ap.Color("#0af")
ap.save_overall_html(dest_dir_path="path_line_color/")
line_alpha property interface example¶
The line_alpha
property updates or gets the instance’s line alpha (opacity):
import apysc as ap
ap.Stage(
background_color=ap.Color("#333"),
stage_width=150,
stage_height=150,
stage_elem_id="stage",
)
sprite: ap.Sprite = ap.Sprite()
path: ap.Path = ap.Path(
path_data_list=[
ap.PathMoveTo(x=50, y=50),
ap.PathLineTo(x=50, y=100),
ap.PathLineTo(x=100, y=100),
ap.PathClose(),
],
line_color=ap.Color("#0af"),
line_thickness=5,
)
path.line_alpha = ap.Number(0.5)
ap.save_overall_html(dest_dir_path="path_line_alpha/")
line_thickness property interface example¶
The line_thickness
property updates or gets the instance’s line thickness (line width):
import apysc as ap
ap.Stage(
background_color=ap.Color("#333"),
stage_width=150,
stage_height=150,
stage_elem_id="stage",
)
sprite: ap.Sprite = ap.Sprite()
path: ap.Path = ap.Path(
path_data_list=[
ap.PathMoveTo(x=50, y=50),
ap.PathLineTo(x=50, y=100),
ap.PathLineTo(x=100, y=100),
ap.PathClose(),
],
line_color=ap.Color("#0af"),
)
path.line_thickness = ap.Int(10)
ap.save_overall_html(dest_dir_path="path_line_thickness/")
line_dot_setting property interface example¶
The line_dot_setting
property updates or gets the instance’s line dot-style setting:
import apysc as ap
ap.Stage(
background_color=ap.Color("#333"),
stage_width=150,
stage_height=150,
stage_elem_id="stage",
)
sprite: ap.Sprite = ap.Sprite()
path: ap.Path = ap.Path(
path_data_list=[
ap.PathMoveTo(x=50, y=50),
ap.PathLineTo(x=50, y=100),
ap.PathLineTo(x=100, y=100),
ap.PathClose(),
],
line_color=ap.Color("#0af"),
line_thickness=3,
)
path.line_dot_setting = ap.LineDotSetting(dot_size=3)
ap.save_overall_html(dest_dir_path="path_line_dot_setting/")
line_dash_setting property interface example¶
The line_dash_setting
property updates or gets the instance’s line dash-style setting:
import apysc as ap
ap.Stage(
background_color=ap.Color("#333"),
stage_width=150,
stage_height=150,
stage_elem_id="stage",
)
sprite: ap.Sprite = ap.Sprite()
path: ap.Path = ap.Path(
path_data_list=[
ap.PathMoveTo(x=50, y=50),
ap.PathLineTo(x=50, y=100),
ap.PathLineTo(x=100, y=100),
ap.PathClose(),
],
line_color=ap.Color("#0af"),
line_thickness=3,
)
path.line_dash_setting = ap.LineDashSetting(dash_size=7, space_size=2)
ap.save_overall_html(dest_dir_path="path_line_dash_setting/")
line_round_dot_setting property interface example¶
The line_round_dot_setting
property updates or gets the instance’s line-round dot-style setting:
import apysc as ap
ap.Stage(
background_color=ap.Color("#333"),
stage_width=150,
stage_height=150,
stage_elem_id="stage",
)
sprite: ap.Sprite = ap.Sprite()
path: ap.Path = ap.Path(
path_data_list=[
ap.PathMoveTo(x=50, y=50),
ap.PathLineTo(x=50, y=100),
ap.PathLineTo(x=100, y=100),
ap.PathClose(),
],
line_color=ap.Color("#0af"),
)
path.line_round_dot_setting = ap.LineRoundDotSetting(round_size=5, space_size=4)
ap.save_overall_html(dest_dir_path="path_line_round_dot_setting/")
line_dash_dot_setting property interface example¶
The line_dash_dot_setting
property updates or gets the instance’s dash-dotted line style setting:
import apysc as ap
ap.Stage(
background_color=ap.Color("#333"),
stage_width=150,
stage_height=150,
stage_elem_id="stage",
)
sprite: ap.Sprite = ap.Sprite()
path: ap.Path = ap.Path(
path_data_list=[
ap.PathMoveTo(x=50, y=50),
ap.PathLineTo(x=50, y=100),
ap.PathLineTo(x=100, y=100),
ap.PathClose(),
],
line_color=ap.Color("#0af"),
line_thickness=3,
)
path.line_dash_dot_setting = ap.LineDashDotSetting(
dot_size=3,
dash_size=6,
space_size=3,
)
ap.save_overall_html(dest_dir_path="path_line_dash_dot_setting/")
rotation_around_center property interface example¶
The rotation_around_center
property updates or gets the instance’s rotation value (0 to 359) from the center point:
import apysc as ap
ap.Stage(
background_color=ap.Color("#333"),
stage_width=150,
stage_height=150,
stage_elem_id="stage",
)
sprite: ap.Sprite = ap.Sprite()
path: ap.Path = ap.Path(
path_data_list=[
ap.PathMoveTo(x=50, y=50),
ap.PathLineTo(x=50, y=100),
ap.PathLineTo(x=100, y=100),
ap.PathClose(),
],
line_color=ap.Color("#0af"),
line_thickness=3,
)
def on_timer(e: ap.TimerEvent, options: dict) -> None:
"""
The timer event handler.
Parameters
----------
e : ap.TimerEvent
Event instance.
options : dict
Optional arguments dictionary.
"""
path.rotation_around_center += 1
ap.Timer(handler=on_timer, delay=ap.FPS.FPS_60).start()
ap.save_overall_html(dest_dir_path="path_rotation_around_center/")
set_rotation_around_point and get_rotation_around_point methods interface example¶
The set_rotation_around_point
method updates the instance’s rotation value (0 to 359) from a specified point.
Similarly, the get_rotation_around_point
method gets the instance’s rotation value (0 to 359) from a specified point:
import apysc as ap
ap.Stage(
background_color=ap.Color("#333"),
stage_width=150,
stage_height=150,
stage_elem_id="stage",
)
sprite: ap.Sprite = ap.Sprite()
path: ap.Path = ap.Path(
path_data_list=[
ap.PathMoveTo(x=50, y=50),
ap.PathLineTo(x=50, y=100),
ap.PathLineTo(x=100, y=100),
ap.PathClose(),
],
line_color=ap.Color("#0af"),
line_thickness=3,
)
X: ap.Int = ap.Int(100)
Y: ap.Int = ap.Int(100)
def on_timer(e: ap.TimerEvent, options: dict) -> None:
"""
The timer event handler.
Parameters
----------
e : ap.TimerEvent
Event instance.
options : dict
Optional arguments dictionary.
"""
rotation: ap.Int = path.get_rotation_around_point(x=X, y=Y) + 1
path.set_rotation_around_point(rotation=rotation, x=X, y=Y)
ap.Timer(handler=on_timer, delay=ap.FPS.FPS_60).start()
ap.save_overall_html(dest_dir_path="path_rotation_around_point/")
scale_x_from_center property interface example¶
The scale_x_from_center
property updates or gets the instance’s scale-x from the center point:
import apysc as ap
ap.Stage(
background_color=ap.Color("#333"),
stage_width=150,
stage_height=150,
stage_elem_id="stage",
)
sprite: ap.Sprite = ap.Sprite()
path: ap.Path = ap.Path(
path_data_list=[
ap.PathMoveTo(x=50, y=50),
ap.PathLineTo(x=50, y=100),
ap.PathLineTo(x=100, y=100),
ap.PathClose(),
],
line_color=ap.Color("#0af"),
line_thickness=3,
)
direction: ap.Int = ap.Int(1)
def on_timer(e: ap.TimerEvent, options: dict) -> None:
"""
The timer event handler.
Parameters
----------
e : ap.TimerEvent
Event instance.
options : dict
Optional arguments dictionary.
"""
scale: ap.Number = path.scale_x_from_center
with ap.If(scale <= 0.001):
direction.value = 1
with ap.If(scale >= 2):
direction.value = -1
path.scale_x_from_center += direction * 0.01
ap.Timer(handler=on_timer, delay=ap.FPS.FPS_60).start()
ap.save_overall_html(dest_dir_path="path_scale_x_from_center/")
scale_y_from_center property interface example¶
The scale_y_from_center
property updates or gets the instance’s scale-y from the center point:
import apysc as ap
ap.Stage(
background_color=ap.Color("#333"),
stage_width=150,
stage_height=150,
stage_elem_id="stage",
)
sprite: ap.Sprite = ap.Sprite()
path: ap.Path = ap.Path(
path_data_list=[
ap.PathMoveTo(x=50, y=50),
ap.PathLineTo(x=50, y=100),
ap.PathLineTo(x=100, y=100),
ap.PathClose(),
],
line_color=ap.Color("#0af"),
line_thickness=3,
)
direction: ap.Int = ap.Int(1)
def on_timer(e: ap.TimerEvent, options: dict) -> None:
"""
The timer event handler.
Parameters
----------
e : ap.TimerEvent
Event instance.
options : dict
Optional arguments dictionary.
"""
scale: ap.Number = path.scale_y_from_center
with ap.If(scale <= 0.001):
direction.value = 1
with ap.If(scale >= 2):
direction.value = -1
path.scale_y_from_center += direction * 0.01
ap.Timer(handler=on_timer, delay=ap.FPS.FPS_60).start()
ap.save_overall_html(dest_dir_path="path_scale_y_from_center/")
set_scale_x_from_point and get_scale_x_from_point methods interface example¶
The set_scale_x_from_point
method updates the instance’s scale-x from a specified point.
Similarly, the get_scale_x_from_point
method gets the instance’s scale-x from a specified point:
import apysc as ap
ap.Stage(
background_color=ap.Color("#333"),
stage_width=150,
stage_height=150,
stage_elem_id="stage",
)
sprite: ap.Sprite = ap.Sprite()
path: ap.Path = ap.Path(
path_data_list=[
ap.PathMoveTo(x=50, y=50),
ap.PathLineTo(x=50, y=100),
ap.PathLineTo(x=100, y=100),
ap.PathClose(),
],
line_color=ap.Color("#0af"),
line_thickness=3,
)
direction: ap.Int = ap.Int(1)
X: ap.Int = ap.Int(100)
def on_timer(e: ap.TimerEvent, options: dict) -> None:
"""
The timer event handler.
Parameters
----------
e : ap.TimerEvent
Event instance.
options : dict
Optional arguments dictionary.
"""
scale: ap.Number = path.get_scale_x_from_point(x=X)
with ap.If(scale <= 0.001):
direction.value = 1
with ap.If(scale >= 2):
direction.value = -1
scale += direction * 0.005
path.set_scale_x_from_point(scale_x=scale, x=X)
ap.Timer(handler=on_timer, delay=ap.FPS.FPS_60).start()
ap.save_overall_html(dest_dir_path="path_scale_x_from_point/")
set_scale_y_from_point and get_scale_y_from_point methods interface example¶
The set_scale_y_from_point
method updates the instance’s scale-y from a specified point.
Similarly, the get_scale_y_from_point
method gets the instance’s scale-y from a specified point:
import apysc as ap
ap.Stage(
background_color=ap.Color("#333"),
stage_width=150,
stage_height=150,
stage_elem_id="stage",
)
sprite: ap.Sprite = ap.Sprite()
path: ap.Path = ap.Path(
path_data_list=[
ap.PathMoveTo(x=50, y=50),
ap.PathLineTo(x=50, y=100),
ap.PathLineTo(x=100, y=100),
ap.PathClose(),
],
line_color=ap.Color("#0af"),
line_thickness=3,
)
direction: ap.Int = ap.Int(1)
Y: ap.Int = ap.Int(100)
def on_timer(e: ap.TimerEvent, options: dict) -> None:
"""
The timer event handler.
Parameters
----------
e : ap.TimerEvent
Event instance.
options : dict
Optional arguments dictionary.
"""
scale: ap.Number = path.get_scale_y_from_point(y=Y)
with ap.If(scale <= 0.001):
direction.value = 1
with ap.If(scale >= 2):
direction.value = -1
scale += direction * 0.005
path.set_scale_y_from_point(scale_y=scale, y=Y)
ap.Timer(handler=on_timer, delay=ap.FPS.FPS_60).start()
ap.save_overall_html(dest_dir_path="path_scale_y_from_point/")
flip_x property interface example¶
The flip_x
property updates or gets the instance’s flip-x (reflecting state) boolean value:
import apysc as ap
ap.Stage(
background_color=ap.Color("#333"),
stage_width=150,
stage_height=150,
stage_elem_id="stage",
)
sprite: ap.Sprite = ap.Sprite()
path: ap.Path = ap.Path(
path_data_list=[
ap.PathMoveTo(x=50, y=50),
ap.PathLineTo(x=50, y=100),
ap.PathLineTo(x=100, y=100),
ap.PathClose(),
],
line_color=ap.Color("#0af"),
line_thickness=3,
)
def on_timer(e: ap.TimerEvent, options: dict) -> None:
"""
The timer event handler.
Parameters
----------
e : ap.TimerEvent
Event instance.
options : dict
Optional arguments dictionary.
"""
path.flip_x = path.flip_x.not_
ap.Timer(handler=on_timer, delay=1000).start()
ap.save_overall_html(dest_dir_path="path_flip_x/")
flip_y property interface example¶
The flip_y
property updates or gets the instance’s flip-y (reflecting state) boolean value:
import apysc as ap
ap.Stage(
background_color=ap.Color("#333"),
stage_width=150,
stage_height=150,
stage_elem_id="stage",
)
sprite: ap.Sprite = ap.Sprite()
path: ap.Path = ap.Path(
path_data_list=[
ap.PathMoveTo(x=50, y=50),
ap.PathLineTo(x=50, y=100),
ap.PathLineTo(x=100, y=100),
ap.PathClose(),
],
line_color=ap.Color("#0af"),
line_thickness=3,
)
def on_timer(e: ap.TimerEvent, options: dict) -> None:
"""
The timer event handler.
Parameters
----------
e : ap.TimerEvent
Event instance.
options : dict
Optional arguments dictionary.
"""
path.flip_y = path.flip_y.not_
ap.Timer(handler=on_timer, delay=1000).start()
ap.save_overall_html(dest_dir_path="path_flip_y/")
skew_x property interface example¶
The skew_x
property updates or gets the instance’s skew-x (distortion) value:
import apysc as ap
ap.Stage(
background_color=ap.Color("#333"),
stage_width=150,
stage_height=150,
stage_elem_id="stage",
)
sprite: ap.Sprite = ap.Sprite()
path: ap.Path = ap.Path(
path_data_list=[
ap.PathMoveTo(x=50, y=50),
ap.PathLineTo(x=50, y=100),
ap.PathLineTo(x=100, y=100),
ap.PathClose(),
],
line_color=ap.Color("#0af"),
line_thickness=3,
)
def on_timer(e: ap.TimerEvent, options: dict) -> None:
"""
The timer event handler.
Parameters
----------
e : ap.TimerEvent
Event instance.
options : dict
Optional arguments dictionary.
"""
path.skew_x += 1
ap.Timer(handler=on_timer, delay=ap.FPS.FPS_60).start()
ap.save_overall_html(dest_dir_path="path_skew_x/")
skew_y property interface example¶
The skew_y
property updates or gets the instance’s skew-y (distortion) value:
import apysc as ap
ap.Stage(
background_color=ap.Color("#333"),
stage_width=150,
stage_height=150,
stage_elem_id="stage",
)
sprite: ap.Sprite = ap.Sprite()
path: ap.Path = ap.Path(
path_data_list=[
ap.PathMoveTo(x=50, y=50),
ap.PathLineTo(x=50, y=100),
ap.PathLineTo(x=100, y=100),
ap.PathClose(),
],
line_color=ap.Color("#0af"),
line_thickness=3,
)
def on_timer(e: ap.TimerEvent, options: dict) -> None:
"""
The timer event handler.
Parameters
----------
e : ap.TimerEvent
Event instance.
options : dict
Optional arguments dictionary.
"""
path.skew_y += 1
ap.Timer(handler=on_timer, delay=ap.FPS.FPS_60).start()
ap.save_overall_html(dest_dir_path="path_skew_y/")
Path class constructor API¶
Note: the document build script generates and updates this API document section automatically. Maybe this section is duplicated compared with previous sections.
[Interface signature] __init__(self, *, path_data_list: List[apysc._geom.path_data_base.PathDataBase], fill_color: apysc._color.color.Color = Color(""), fill_alpha: Union[float, apysc._type.number.Number] = 1.0, line_color: apysc._color.color.Color = Color(""), line_alpha: Union[float, apysc._type.number.Number] = 1.0, line_thickness: Union[int, apysc._type.int.Int] = 1, line_cap: Union[apysc._type.string.String, apysc._display.line_caps.LineCaps, NoneType] = None, line_joints: Union[apysc._type.string.String, apysc._display.line_joints.LineJoints, NoneType] = None, line_dot_setting: Union[apysc._display.line_dot_setting.LineDotSetting, NoneType] = None, line_dash_setting: Union[apysc._display.line_dash_setting.LineDashSetting, NoneType] = None, line_round_dot_setting: Union[apysc._display.line_round_dot_setting.LineRoundDotSetting, NoneType] = None, line_dash_dot_setting: Union[apysc._display.line_dash_dot_setting.LineDashDotSetting, NoneType] = None, parent: Union[apysc._display.child_mixin.ChildMixIn, NoneType] = None, variable_name_suffix: str = '') -> None
[Interface summary]
Create a path vector graphic.
[Parameters]
path_data_list
: list of PathDataBaseTarget path data settings, such as the ap.PathData.MoveTo.
fill_color
: Color, default COLORLESSA fill-color to set.
fill_alpha
: float or Number, default 1.0A fill-alpha to set.
line_color
: Color, default COLORLESSA line-color to set.
line_alpha
: float or Number, default 1.0A line-alpha to set.
line_thickness
: int or Int, default 1A line-thickness (line-width) to set.
line_cap
: String or LineCaps or None, default NoneA line-cap setting to set.
line_joints
: String or LineJoints or None, default NoneA line-joints setting to set.
line_dot_setting
: LineDotSetting or None, default NoneA dot setting to set.
line_dash_setting
: LineDashSetting or None, default NoneA dash setting to set.
line_round_dot_setting
: LineRoundDotSetting or None, default NoneA round-dot setting to set.
line_dash_dot_setting
: LineDashDotSetting or None, default NoneA dash-dot (1-dot chain) setting to set.
parent
: ChildMixIn or None, default NoneA parent instance to add this instance. If the specified value is None, this interface uses a stage instance.
variable_name_suffix
: str, default “”A JavaScript variable name suffix string. This setting is sometimes useful for JavaScript debugging.
[Examples]
>>> import apysc as ap
>>> stage: ap.Stage = ap.Stage()
>>> path: ap.Path = ap.Path(
... path_data_list=[
... ap.PathMoveTo(x=0, y=50),
... ap.PathBezier2D(control_x=50, control_y=0, dest_x=100, dest_y=50),
... ],
... line_color=ap.Color("#ffffff"),
... line_thickness=3,
... )
>>> path.line_color
Color("#ffffff")
>>> path.line_thickness
Int(3)
[References]