1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283 |
- import { ImageLike } from '../core/types';
- import { SVGVNode } from '../svg/core';
- type ImagePatternRepeat = 'repeat' | 'repeat-x' | 'repeat-y' | 'no-repeat'
- export interface PatternObjectBase {
- id?: number
- // type is now unused, so make it optional
- type?: 'pattern'
- x?: number
- y?: number
- rotation?: number
- scaleX?: number
- scaleY?: number
- }
- export interface ImagePatternObject extends PatternObjectBase {
- image: ImageLike | string
- repeat?: ImagePatternRepeat
- /**
- * Width and height of image.
- * `imageWidth` and `imageHeight` are only used in svg-ssr renderer.
- * Because we can't get the size of image in svg-ssr renderer.
- * They need to be give explictly.
- */
- imageWidth?: number
- imageHeight?: number
- }
- export interface InnerImagePatternObject extends ImagePatternObject {
- // Cached image. Which is created in the canvas painter.
- __image?: ImageLike
- }
- export interface SVGPatternObject extends PatternObjectBase {
- /**
- * svg vnode can only be used in svg renderer currently.
- * svgWidth, svgHeight defines width and height used for pattern.
- */
- svgElement?: SVGVNode
- svgWidth?: number
- svgHeight?: number
- }
- export type PatternObject = ImagePatternObject | SVGPatternObject
- class Pattern {
- type: 'pattern'
- image: ImageLike | string
- /**
- * svg element can only be used in svg renderer currently.
- *
- * Will be string if using SSR rendering.
- */
- svgElement: SVGElement | string
- repeat: ImagePatternRepeat
- x: number
- y: number
- rotation: number
- scaleX: number
- scaleY: number
- constructor(image: ImageLike | string, repeat: ImagePatternRepeat) {
- // Should do nothing more in this constructor. Because gradient can be
- // declard by `color: {image: ...}`, where this constructor will not be called.
- this.image = image;
- this.repeat = repeat;
- this.x = 0;
- this.y = 0;
- this.rotation = 0;
- this.scaleX = 1;
- this.scaleY = 1;
- }
- }
- export default Pattern;
|