diff options
author | Ulrich-Matthias Schäfer <ulima.ums@googlemail.com> | 2020-03-28 13:52:57 +1000 |
---|---|---|
committer | Ulrich-Matthias Schäfer <ulima.ums@googlemail.com> | 2020-03-28 13:52:57 +1000 |
commit | ba2948bfad00906ffa3ba5ea7ff15ac0be517445 (patch) | |
tree | 953b7ebfef53b8a3e594632d9d2b7458028c7170 /src/modules/core/textable.js | |
parent | 9beddac36db60c0e4097e01272b6faa04bdb1065 (diff) | |
download | svg.js-ba2948bfad00906ffa3ba5ea7ff15ac0be517445.tar.gz svg.js-ba2948bfad00906ffa3ba5ea7ff15ac0be517445.zip |
This is a big one...
### Fixed
- fixed `zoom()` method of runner which was passed a wrong parameter
- fixed positioning methods of `TSpan` to position them by its bounding box
- fixed `flip()` method which flips correctly by center by default now and accepts correct arguments
- fixed a case in `rbox()` where not always all values of the box were updated
- fixed `getOrigin()` function used by `transform()` so that all origin (#1085) popssibilities specified in the docs are working
- fixed positioning of text by its baseline when using `amove()`
- fixed tons of typings in the svg.d.ts file
### Added
- added second Parameter to `SVG(el, isHTML)` which allows to explicitely create elements in the HTML namespace (#1058)
- added `unlink()` and `linker()` to hyperlinked elements to remove or access the underling `<a>` element
- added `wrap()` method to `Dom` which lets you wrap an element by another one
- added `orient()` method to `Marker`
- added `options` parameter to `dispatch()` and `fire()` to allow for more special needs
- added `newLine()` constructor to `Text` to create a tspan marked as new line (#1088)
- added lots of tests in es6 format
Diffstat (limited to 'src/modules/core/textable.js')
-rw-r--r-- | src/modules/core/textable.js | 64 |
1 files changed, 64 insertions, 0 deletions
diff --git a/src/modules/core/textable.js b/src/modules/core/textable.js index 55df7c6..28b13cb 100644 --- a/src/modules/core/textable.js +++ b/src/modules/core/textable.js @@ -17,3 +17,67 @@ export function plain (text) { export function length () { return this.node.getComputedTextLength() } + +// Move over x-axis +// Text is moved by its bounding box +// text-anchor does NOT matter +export function x (x, box = this.bbox()) { + if (x == null) { + return box.x + } + + return this.attr('x', this.attr('x') + x - box.x) +} + +// Move over y-axis +export function y (y, box = this.bbox()) { + if (y == null) { + return box.y + } + + return this.attr('y', this.attr('y') + y - box.y) +} + +export function move (x, y, box = this.bbox()) { + return this.x(x, box).y(y, box) +} + +// Move center over x-axis +export function cx (x, box = this.bbox()) { + if (x == null) { + return box.cx + } + + return this.attr('x', this.attr('x') + x - box.cx) +} + +// Move center over y-axis +export function cy (y, box = this.bbox()) { + if (y == null) { + return box.cy + } + + return this.attr('y', this.attr('y') + y - box.cy) +} + +export function center (x, y, box = this.bbox()) { + return this.cx(x, box).cy(y, box) +} + +export function ax (x) { + return this.attr('x', x) +} + +export function ay (y) { + return this.attr('y', y) +} + +export function amove (x, y) { + return this.ax(x).ay(y) +} + +// Enable / disable build mode +export function build (build) { + this._build = !!build + return this +} |