Compare commits

..

60 Commits

Author SHA1 Message Date
c4e670addf v1.0.0-alpha6 2017-12-28 14:19:52 +08:00
0aeb54ca2e Remove console.logs 2017-12-28 13:58:42 +08:00
eec84fa39e Fix list-style-type: none (Fix #1340) 2017-12-28 13:52:05 +08:00
22f58d5d1c Merge branch 'vnmc-feature/HTC-0010_PseudoContent' 2017-12-24 17:09:27 +08:00
9046e0d554 Update to use list style parser from ListItem 2017-12-24 17:08:54 +08:00
afa5d7cb8e Merge branch 'feature/HTC-0010_PseudoContent' of git://github.com/vnmc/html2canvas into vnmc-feature/HTC-0010_PseudoContent 2017-12-24 16:30:13 +08:00
3881e3cf96 Update support for list-style 2017-12-22 00:07:10 +08:00
0aa973ab0d v1.0.0-alpha.5 2017-12-21 23:54:27 +08:00
baaf9b0701 Merge branch 'bugfix/underlines' of git://github.com/eKoopmans/html2canvas into eKoopmans-bugfix/underlines 2017-12-21 23:45:06 +08:00
02de2ee829 Document data-html2canvas-ignore (Fix #1316) 2017-12-21 23:42:59 +08:00
a570f5df74 Update useCORS documentation (Fix #1323) 2017-12-21 23:41:01 +08:00
38749bc4b6 Fix canvas rendering on Chrome 2017-12-21 23:31:55 +08:00
e1d6b4c76f Fix overflow: auto 2017-12-21 23:29:59 +08:00
31f2c22477 Fix list style issues 2017-12-21 23:22:09 +08:00
6d0cd2d226 fixed flow problems in PseudoNodeContent.js 2017-12-15 23:46:26 +01:00
7335984ab7 added support for rendering ordered lists and list-style 2017-12-15 22:55:27 +01:00
78c3c7fc71 improved support of 'content' for pseudo elements (multiple components, counters, attr, quotes) 2017-12-15 12:40:04 +01:00
4551976246 Merge pull request #1312 from a0viedo/patch-1
change build badge to SVG
2017-12-14 11:01:32 +08:00
9e04772b42 change build badge to SVG
since it will be better for high-res screens
2017-12-13 13:01:35 -03:00
54c4002df7 Fix example button hitbox 2017-12-12 23:58:09 +08:00
91641a3746 Deploy new website 2017-12-12 23:26:28 +08:00
c4ba6f795c Update CHANGELOG 2017-12-12 22:55:32 +08:00
0b9f34a5bf Fix formatting 2017-12-12 22:39:27 +08:00
757c32f6c4 Update unsupported features 2017-12-12 22:32:20 +08:00
09bab18b48 Fix flow error 2017-12-12 22:32:12 +08:00
7e53b195ea Add no-response bot config 2017-12-12 22:28:27 +08:00
ab966ff311 Fix formatting 2017-12-12 22:23:48 +08:00
7bb4a6f08f Fix compiled code using symbols 2017-12-12 22:18:15 +08:00
f50da9718f Fix NaN color stop in IE 2017-12-12 22:08:46 +08:00
3965a0fd40 Fix backgroundColor option documentation (Fix #1164) 2017-12-12 21:23:53 +08:00
77d258f1d8 Fix rendering with multiple fonts defined (Fix #796) 2017-12-12 21:08:19 +08:00
261702a693 Merge branch 'vnmc-feature/HTC-0009_RadialGradients' 2017-12-12 20:58:07 +08:00
cacb9f64e4 Radial gradient support 2017-12-12 20:57:48 +08:00
8ef3861a5c added support for radial gradients 2017-12-12 20:16:04 +08:00
0b74e69611 Update website demo 2017-12-12 19:43:59 +08:00
c272b2e122 Remove reftest results 2017-12-11 21:38:16 +08:00
2d132b85c6 Add gzipped package size to website (Fix #992) 2017-12-11 21:20:14 +08:00
50608e9cd4 Fix external SVG loading with proxies (#802) 2017-12-11 20:51:39 +08:00
d87fef11a4 Fix logging option (#1302) 2017-12-11 20:23:43 +08:00
250208dc99 Add support for rendering webgl canvas content (#646) 2017-12-11 20:17:20 +08:00
2237e8e230 Update wip website 2017-12-10 22:28:34 +08:00
d3c640088c Merge branch 'feature/HTC-0008_LinearGradients' of git://github.com/vnmc/html2canvas into vnmc-feature/HTC-0008_LinearGradients 2017-12-10 16:46:31 +08:00
8fd616aed2 Update wip website 2017-12-10 16:43:34 +08:00
d1e870de88 added support for gradient background size and fixed linear gradient angle when vendor prefix is used 2017-12-09 23:07:27 +01:00
9bc0fb0bd1 Fix __DEV__ value for minified build 2017-12-09 18:00:45 +08:00
d83bc0247a Disable foreignObjectRendering by default (#1295) 2017-12-09 17:51:28 +08:00
13e80cc635 Begin implementing new website 2017-12-09 17:47:25 +08:00
b239937e00 Refactor Font.js 2017-12-09 17:46:32 +08:00
e8a4d775e8 Update docs 2017-12-09 17:46:07 +08:00
a6a3c1bd0f Fix tests and refactor background calculations out from Renderer 2017-12-09 17:45:58 +08:00
850338a76a added support for background-origin: content-box, fixed background-origin related background sizes 2017-12-09 00:12:29 +01:00
63377d47a4 Begin adding documentation 2017-12-07 23:50:30 +08:00
1d1c74a74e Add Github issue templates 2017-12-07 17:30:13 +08:00
ef5c59e26d Fix scroll positions for CanvasRenderer (Fix #1259) 2017-12-07 16:36:09 +08:00
8b653f89bc Prevent generated iframe from getting re-rendered 2017-12-07 16:16:22 +08:00
9db8580b97 Fix data-html2canvas-ignore attribute (Fix #1253) 2017-12-07 16:12:39 +08:00
4a09264103 Update CHANGELOG 2017-12-07 15:47:53 +08:00
b8178e92b4 Add deprecation warning for onrendered (Fix #1290) 2017-12-07 15:47:42 +08:00
166cbba7c2 Fix decimal letter spacing values (#1293) 2017-12-07 15:20:24 +08:00
0c8d38d9c0 Fix underlines, relative to 'bottom' baseline 2017-12-06 23:49:11 +11:00
147 changed files with 23949 additions and 7214 deletions

View File

@ -1,4 +1,5 @@
[ignore]
.*/www/.*
[include]
[libs]
./flow-typed

19
.github/ISSUE_TEMPLATE.md vendored Normal file
View File

@ -0,0 +1,19 @@
Please make sure you are testing with the latest [release of html2canvas](https://github.com/niklasvh/html2canvas/releases).
Old versions are not supported and issues reported for them will be closed.
# Please follow the general troubleshooting steps first:
- [ ] You are using the latest [version](https://github.com/niklasvh/html2canvas/releases)
- [ ] You are testing using the non-minified version of html2canvas and checked any potential issues reported in the console
<!-- You can erase any parts of this template not applicable to your Issue. -->
### Bug reports:
Please replace this line with a brief summary of your issue **AND** if possible an example on [jsfiddle](https://jsfiddle.net/).
### Specifications:
* html2canvas version tested with:
* Browser & version:
* Operating system:

37
.github/PULL_REQUEST_TEMPLATE.md vendored Normal file
View File

@ -0,0 +1,37 @@
A similar PR may already be submitted!
Please search among the [Pull request](https://github.com/niklasvh/html2canvas/pulls) before creating one.
Thanks for submitting a pull request! Please provide enough information so that others can review your pull request:
Before opening a pull request, please make sure all the tests pass locally by running `npm test`.
**Summary**
<!-- Summary of the PR -->
This PR fixes/implements the following **bugs/features**
* [ ] Bug 1
* [ ] Bug 2
* [ ] Feature 1
* [ ] Feature 2
* [ ] Breaking changes
<!-- You can skip this if you're fixing a typo or adding an app to the Showcase. -->
Explain the **motivation** for making this change. What existing problem does the pull request solve?
<!-- Example: When "Adding a function to do X", explain why it is necessary to have a way to do X. -->
**Test plan (required)**
Demonstrate how the issue/feature can be replicated. For most cases, simply adding an appropriate html/css template into the [reftests](https://github.com/niklasvh/html2canvas/tree/master/tests/reftests) should be sufficient. Please see other tests there for reference.
**Code formatting**
Please make sure that code adheres to the project code formatting. Running `npm run format` will automatically format your code correctly.
**Closing issues**
<!-- Put `closes #XXXX` in your comment to auto-close the issue that your PR fixes (if such). -->
Fixes #

13
.github/no-response.yml vendored Normal file
View File

@ -0,0 +1,13 @@
# Configuration for probot-no-response - https://github.com/probot/no-response
# Number of days of inactivity before an Issue is closed for lack of response
daysUntilClose: 14
# Label requiring a response
responseRequiredLabel: Needs More Information
# Comment to post when closing an Issue for lack of response. Set to `false` to disable
closeComment: >
This issue has been automatically closed because there has been no response
to our request for more information from the original author. With only the
information that is currently in the issue, we don't have enough information
to take action. Please reach out if you have or find the answers we need so
that we can investigate further.

View File

@ -1,14 +1,18 @@
build/
docs/
examples/
scripts/
src/
tests/
www/
.github/
*.iml
.babelrc
.idea/
.editorconfig
.npmignore
.jshintrc
.eslintrc
.travis.yml
karma.js
karma.config.js
karma.conf.js
webpack.config.js

View File

@ -22,6 +22,7 @@ notifications:
on_start: false
script:
- npm run build
- cd www && npm install && npm run build && cd ..
- npm test
deploy:
- provider: npm
@ -44,3 +45,13 @@ deploy:
tags: true
branch: master
repo: niklasvh/html2canvas
- provider: pages
skip_cleanup: true
local_dir: www/public
target_branch: gh-pages
fqdn: html2canvas.hertzen.com
github_token:
secure: "PowO/Jat660k3gHcjgI6DlJz15RM7pLUu11UPsLCtYJ8ZwodppE6Keg0DfVkSFSIZttZor+UssDwP/WOEqfZNLqmXbcj3Gec4xolohet/GOe0KJKKuF/HgggbcxumopxMX6sMVePlMBpkLpHh7tgEAEHBWTlzC1c1a7Xa48fZ7k="
on:
branch: master
repo: niklasvh/html2canvas

View File

@ -1,6 +1,33 @@
### Changelog ###
#### v1.0.0-alpha1 - TBD ####
#### v1.0.0-alpha6 - 28.12.2017 ####
* Fix list-style: none (#1340)
* Extend supported values for pseudo element content
#### v1.0.0-alpha5 - 21.12.2017 ####
* Fix underline positioning
* Fix canvas rendering on Chrome
* Fix overflow: auto
* Added support for rendering list-style
#### v1.0.0-alpha4 - 12.12.2017 ####
* Fix rendering with multiple fonts defined (Fix #796)
* Add support for radial-gradients
* Fix logging option (#1302)
* Add support for rendering webgl canvas content (#646)
* Fix external SVG loading with proxies (#802)
#### v1.0.0-alpha3 - 9.12.2017 ####
* Disable `foreignObjectRendering` by default (#1295)
* Fix background-size when using background-origin and background-size: cover/contain (#1299)
* Added support for background-origin: content-box (#1299)
#### v1.0.0-alpha2 - 7.12.2017 ####
* Fix scroll positions for CanvasRenderer (#1259)
* Fix `data-html2canvas-ignore` attribute (#1253)
* Fix decimal `letter-spacing` values (#1293)
#### v1.0.0-alpha1 - 5.12.2017 ####
* Complete rewrite of library
##### Breaking Changes #####
* Remove deprecated onrendered callback, calling `html2canvas` returns a `Promise<HTMLCanvasElement>`

View File

@ -3,7 +3,7 @@ html2canvas
[Homepage](https://html2canvas.hertzen.com) | [Downloads](https://github.com/niklasvh/html2canvas/releases) | [Questions](http://stackoverflow.com/questions/tagged/html2canvas?sort=newest) | [Donate](https://www.gittip.com/niklasvh/)
[![Gitter](https://badges.gitter.im/Join%20Chat.svg)](https://gitter.im/niklasvh/html2canvas?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge) [![Build Status](https://travis-ci.org/niklasvh/html2canvas.png)](https://travis-ci.org/niklasvh/html2canvas)
[![Gitter](https://badges.gitter.im/Join%20Chat.svg)](https://gitter.im/niklasvh/html2canvas?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge) [![Build Status](https://travis-ci.org/niklasvh/html2canvas.svg)](https://travis-ci.org/niklasvh/html2canvas)
#### JavaScript HTML renderer ####

View File

@ -1,9 +0,0 @@
{
"name": "html2canvas",
"description": "Screenshots with JavaScript",
"main": "dist/html2canvas.js",
"ignore": [
"tests",
".travis.yml"
]
}

34
docs/configuration.md Normal file
View File

@ -0,0 +1,34 @@
---
title: "Configuration"
description: "Explore the different configuration options available for html2canvas"
previousUrl: "/getting-started"
previousTitle: "Getting Started"
nextUrl: "/features"
nextTitle: "Features"
---
These are all of the available configuration options.
| Name | Default | Description |
| ------------- | :------: | ----------- |
| async | `true` | Whether to parse and render the element asynchronously
| allowTaint | `false` | Whether to allow cross-origin images to taint the canvas
| backgroundColor | `#ffffff` | Canvas background color, if none is specified in DOM. Set `null` for transparent
| canvas | `null` | Existing `canvas` element to use as a base for drawing on
| foreignObjectRendering | `false` | Whether to use ForeignObject rendering if the browser supports it
| imageTimeout | `15000` | Timeout for loading an image (in milliseconds). Set to `0` to disable timeout.
| logging | `true` | Enable logging for debug purposes
| proxy | `null` | Url to the [proxy](/proxy/) which is to be used for loading cross-origin images. If left empty, cross-origin images won't be loaded.
| removeContainer | `true` | Whether to cleanup the cloned DOM elements html2canvas creates temporarily
| scale | `window.devicePixelRatio` | The scale to use for rendering. Defaults to the browsers device pixel ratio.
| useCORS | `false` | Whether to attempt to load images from a server using CORS
| width | `Element` width | The width of the `canvas`
| height | `Element` height | The height of the `canvas`
| x | `Element` x-offset | Crop canvas x-coordinate
| y | `Element` y-offset| Crop canvas y-coordinate
| scrollX | `Element` scrollX | The x-scroll position to used when rendering element, (for example if the Element uses `position: fixed`)
| scrollY | `Element` scrollY | The y-scroll position to used when rendering element, (for example if the Element uses `position: fixed`)
| windowWidth | `Window.innerWidth` | Window width to use when rendering `Element`, which may affect things like Media queries
| windowHeight | `Window.innerHeight` | Window height to use when rendering `Element`, which may affect things like Media queries
If you wish to exclude certain `Element`s from getting rendered, you can add a `data-html2canvas-ignore` attribute to those elements and html2canvas will exclude them from the rendering.

42
docs/documentation.md Normal file
View File

@ -0,0 +1,42 @@
---
title: "About"
description: "Learn about html2canvas, how it works and some of its limitations"
nextUrl: "/getting-started"
nextTitle: "Getting Started"
---
Before you get started with the script, there are a few things that are good to know regarding the
script and some of its limitations.
## Introduction
The script allows you to take "screenshots" of webpages or parts of it, directly on the users browser.
The screenshot is based on the DOM and as such may not be 100% accurate to the real representation
as it does not make an actual screenshot, but builds the screenshot based on the information
available on the page.
## How it works
The script traverses through the DOM of the page it is loaded on. It gathers information on all the elements
there, which it then uses to build a representation of the page. In other words, it does not actually take a
screenshot of the page, but builds a representation of it based on the properties it reads from the DOM.
As a result, it is only able to render correctly properties that it understands, meaning there are many
CSS properties which do not work. For a full list of supported CSS properties, check out the
[supported features](/features/) page.
## Limitations
All the images that the script uses need to reside under the [same origin](http://en.wikipedia.org/wiki/Same_origin_policy)
for it to be able to read them without the assistance of a [proxy](/proxy/). Similarly, if you have other `canvas`
elements on the page, which have been tainted with cross-origin content, they will become dirty and no longer readable by html2canvas.
The script doesn't render plugin content such as Flash or Java applets.
## Browser compatibility
The library should work fine on the following browsers (with `Promise` polyfill):
- Firefox 3.5+
- Google Chrome
- Opera 12+
- IE9+
- Edge
- Safari 6+

42
docs/faq.md Normal file
View File

@ -0,0 +1,42 @@
---
title: "FAQ"
description: "Explore Frequently Asked Questions regarding html2canvas"
---
## Why aren't my images rendered?
html2canvas does not get around content policy restrictions set by your browser. Drawing images that reside outside of
the [origin](https://developer.mozilla.org/en-US/docs/Web/Security/Same-origin_policy) of the current page [taint the
canvas](https://developer.mozilla.org/en-US/docs/Web/HTML/CORS_enabled_image#What_is_a_tainted_canvas) that they are drawn upon. If the canvas gets tainted, it cannot be read anymore. As such, html2canvas implements
methods to check whether an image would taint the canvas before applying it. If you have set the `allowTaint`
[option](/configuration) to `false`, it will not draw the image.
If you wish to load images that reside outside of your pages origin, you can use a [proxy](/proxy) to load the images.
## Why is the produced canvas empty or cuts off half way through?
Make sure that `canvas` element doesn't hit [browser limitations](https://stackoverflow.com/questions/6081483/maximum-size-of-a-canvas-element) for the `canvas` size.
The limitations vary by browser, operating system and system hardware.
### Chrome
> Maximum height/width: 32,767 pixels
> Maximum area: 268,435,456 pixels (e.g., 16,384 x 16,384)
### Firefox
> Maximum height/width: 32,767 pixels
> Maximum area: 472,907,776 pixels (e.g., 22,528 x 20,992)
### Internet Explorer
> Maximum height/width: 8,192 pixels
> Maximum area: N/A
### iOS
> The maximum size for a canvas element is 3 megapixels for devices with less than 256 MB RAM and 5 megapixels for devices with greater or equal than 256 MB RAM
## Why doesn't CSS property X render correctly or only partially?
As each CSS property needs to be manually coded to render correctly, html2canvas will *never* have full CSS support.
The library tries to support the most [commonly used CSS properties](/features) to the extent that it can. If some CSS property
is missing or incomplete and you feel that it should be part of the library, create test cases for it and a new issue for it.
## How do I get html2canvas to work in a browser extension?
You shouldn't use html2canvas in a browser extension. Most browsers have native support for capturing screenshots from
tabs within extensions. Relevant information for [Chrome](https://developer.chrome.com/extensions/tabs#method-captureVisibleTab) and
[Firefox](https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D#drawWindow()).

83
docs/features.md Normal file
View File

@ -0,0 +1,83 @@
---
title: "Features"
description: "Discover the different features supported by html2canvas"
---
Below is a list of all the supported CSS properties and values.
- background
- background-clip (**Does not support `text`**)
- background-color
- background-image
- url()
- linear-gradient()
- radial-gradient()
- background-origin
- background-position
- background-size
- border
- border-color
- border-radius
- border-style (**Only supports `solid`**)
- border-width
- bottom
- box-sizing
- content
- color
- display
- flex
- float
- font
- font-family
- font-size
- font-style
- font-variant
- font-weight
- height
- left
- letter-spacing
- list-style
- list-style-image
- list-style-position
- list-style-type
- margin
- max-height
- max-width
- min-height
- min-width
- opacity
- overflow
- padding
- position
- right
- text-align
- text-decoration
- text-decoration-color
- text-decoration-line
- text-decoration-style (**Only supports `solid`**)
- text-shadow
- text-transform
- top
- transform (**Limited support**)
- visibility
- white-space
- width
- word-spacing
- z-index
## Unsupported CSS properties
These CSS properties are **NOT** currently supported
- [background-blend-mode](https://github.com/niklasvh/html2canvas/issues/966)
- [border-image](https://github.com/niklasvh/html2canvas/issues/1287)
- [box-decoration-break](https://github.com/niklasvh/html2canvas/issues/552)
- [box-shadow](https://github.com/niklasvh/html2canvas/pull/1086)
- [filter](https://github.com/niklasvh/html2canvas/issues/493)
- [font-variant-ligatures](https://github.com/niklasvh/html2canvas/pull/1085)
- [mix-blend-mode](https://github.com/niklasvh/html2canvas/issues/580)
- [object-fit](https://github.com/niklasvh/html2canvas/issues/1064)
- [repeating-linear-gradient()](https://github.com/niklasvh/html2canvas/issues/1162)
- word-break
- [word-wrap](https://github.com/niklasvh/html2canvas/issues/664)
- [writing-mode](https://github.com/niklasvh/html2canvas/issues/1258)
- [zoom](https://github.com/niklasvh/html2canvas/issues/732)

30
docs/getting-started.md Normal file
View File

@ -0,0 +1,30 @@
---
title: "Getting Started"
description: "Learn how to start using html2canvas"
previousUrl: "/documentation"
previousTitle: "About"
nextUrl: "/configuration"
nextTitle: "Configuration"
---
## Installing
You can install `html2canvas` through npm or [download a built release](https://github.com/niklasvh/html2canvas/releases).
### npm
npm install html2canvas
```javascript
import html2canvas from 'html2canvas';
```
## Usage
To render an `element` with html2canvas with some (optional) [options](/configuration/), simply call `html2canvas(element, options);`
```javascript
html2canvas(document.body).then(function(canvas) {
document.body.appendChild(canvas);
});
```

12
docs/proxy.md Normal file
View File

@ -0,0 +1,12 @@
---
title: "Proxy"
description: "Browse different proxies available for supporting CORS content"
---
html2canvas does not get around content policy restrictions set by your browser. Drawing images that reside outside of
the origin of the current page taint the canvas that they are drawn upon. If the canvas gets tainted,
it cannot be read anymore. If you wish to load images that reside outside of your pages origin, you can use a proxy to load the images.
## Available proxies
- [node.js](https://github.com/niklasvh/html2canvas-proxy-nodejs)

7326
package-lock.json generated Normal file

File diff suppressed because it is too large Load Diff

View File

@ -3,7 +3,7 @@
"name": "html2canvas",
"description": "Screenshots with JavaScript",
"main": "dist/npm/index.js",
"version": "1.0.0-alpha.1",
"version": "1.0.0-alpha.6",
"author": {
"name": "Niklas von Hertzen",
"email": "niklasvh@gmail.com",
@ -65,7 +65,7 @@
"build": "rimraf dist/ && node scripts/create-reftest-list && npm run build:npm && npm run build:browser",
"build:npm": "babel src/ -d dist/npm/ --plugins=dev-expression,transform-es2015-modules-commonjs && replace-in-file __VERSION__ '\"$npm_package_version\"' dist/npm/index.js",
"build:browser": "webpack",
"format": "prettier --single-quote --no-bracket-spacing --tab-width 4 --print-width 100 --write \"{src,tests,scripts}/**/*.js\"",
"format": "prettier --single-quote --no-bracket-spacing --tab-width 4 --print-width 100 --write \"{src,www,tests,scripts}/**/*.js\"",
"flow": "flow",
"lint": "eslint src/**",
"test": "npm run flow && npm run lint && npm run test:node && npm run karma",

View File

@ -2,6 +2,7 @@
'use strict';
import type {Bounds} from './Bounds';
import type {Options} from './index';
import type {PseudoContentData, PseudoContentItem} from './PseudoNodeContent';
import type Logger from './Logger';
import {parseBounds} from './Bounds';
@ -10,6 +11,14 @@ import ResourceLoader from './ResourceLoader';
import {copyCSSStyles} from './Util';
import {parseBackgroundImage} from './parsing/background';
import CanvasRenderer from './renderer/CanvasRenderer';
import {
parseCounterReset,
popCounters,
resolvePseudoContent,
PSEUDO_CONTENT_ITEM_TYPE
} from './PseudoNodeContent';
const IGNORE_ATTRIBUTE = 'data-html2canvas-ignore';
export class DocumentCloner {
scrolledElements: Array<[HTMLElement, number, number]>;
@ -22,6 +31,7 @@ export class DocumentCloner {
inlineImages: boolean;
copyStyles: boolean;
renderer: (element: HTMLElement, options: Options, logger: Logger) => Promise<*>;
pseudoContentData: PseudoContentData;
constructor(
element: HTMLElement,
@ -38,6 +48,10 @@ export class DocumentCloner {
this.options = options;
this.renderer = renderer;
this.resourceLoader = new ResourceLoader(options, logger, window);
this.pseudoContentData = {
counters: {},
quoteDepth: 0
};
// $FlowFixMe
this.documentElement = this.cloneNode(element.ownerDocument.documentElement);
}
@ -175,10 +189,12 @@ export class DocumentCloner {
backgroundColor: '#ffffff',
canvas: null,
imageTimeout: this.options.imageTimeout,
logging: this.options.logging,
proxy: this.options.proxy,
removeContainer: this.options.removeContainer,
scale: this.options.scale,
foreignObjectRendering: this.options.foreignObjectRendering,
useCORS: this.options.useCORS,
target: new CanvasRenderer(),
width,
height,
@ -223,6 +239,11 @@ export class DocumentCloner {
: this.createElementClone(node);
const window = node.ownerDocument.defaultView;
const style = node instanceof window.HTMLElement ? window.getComputedStyle(node) : null;
const styleBefore =
node instanceof window.HTMLElement ? window.getComputedStyle(node, ':before') : null;
const styleAfter =
node instanceof window.HTMLElement ? window.getComputedStyle(node, ':after') : null;
if (this.referenceElement === node && clone instanceof window.HTMLElement) {
this.clonedReferenceElement = clone;
@ -232,22 +253,41 @@ export class DocumentCloner {
createPseudoHideStyles(clone);
}
const counters = parseCounterReset(style, this.pseudoContentData);
const contentBefore = resolvePseudoContent(node, styleBefore, this.pseudoContentData);
for (let child = node.firstChild; child; child = child.nextSibling) {
if (child.nodeType !== Node.ELEMENT_NODE || child.nodeName !== 'SCRIPT') {
if (
child.nodeType !== Node.ELEMENT_NODE ||
// $FlowFixMe
(child.nodeName !== 'SCRIPT' && !child.hasAttribute(IGNORE_ATTRIBUTE))
) {
if (!this.copyStyles || child.nodeName !== 'STYLE') {
clone.appendChild(this.cloneNode(child));
}
}
}
const contentAfter = resolvePseudoContent(node, styleAfter, this.pseudoContentData);
popCounters(counters, this.pseudoContentData);
if (node instanceof window.HTMLElement && clone instanceof window.HTMLElement) {
this.inlineAllImages(inlinePseudoElement(node, clone, PSEUDO_BEFORE));
this.inlineAllImages(inlinePseudoElement(node, clone, PSEUDO_AFTER));
if (this.copyStyles && !(node instanceof HTMLIFrameElement)) {
copyCSSStyles(node.ownerDocument.defaultView.getComputedStyle(node), clone);
if (styleBefore) {
this.inlineAllImages(
inlinePseudoElement(node, clone, styleBefore, contentBefore, PSEUDO_BEFORE)
);
}
if (styleAfter) {
this.inlineAllImages(
inlinePseudoElement(node, clone, styleAfter, contentAfter, PSEUDO_AFTER)
);
}
if (style && this.copyStyles && !(node instanceof HTMLIFrameElement)) {
copyCSSStyles(style, clone);
}
this.inlineAllImages(clone);
if (node.scrollTop !== 0 || node.scrollLeft !== 0) {
this.scrolledElements.push([node, node.scrollLeft, node.scrollTop]);
this.scrolledElements.push([clone, node.scrollLeft, node.scrollTop]);
}
switch (node.nodeName) {
case 'CANVAS':
@ -340,13 +380,13 @@ const cloneCanvasContents = (canvas: HTMLCanvasElement, clonedCanvas: HTMLCanvas
if (clonedCanvas) {
clonedCanvas.width = canvas.width;
clonedCanvas.height = canvas.height;
clonedCanvas
.getContext('2d')
.putImageData(
canvas.getContext('2d').getImageData(0, 0, canvas.width, canvas.height),
0,
0
);
const ctx = canvas.getContext('2d');
const clonedCtx = clonedCanvas.getContext('2d');
if (ctx) {
clonedCtx.putImageData(ctx.getImageData(0, 0, canvas.width, canvas.height), 0, 0);
} else {
clonedCtx.drawImage(canvas, 0, 0);
}
}
} catch (e) {}
};
@ -354,9 +394,10 @@ const cloneCanvasContents = (canvas: HTMLCanvasElement, clonedCanvas: HTMLCanvas
const inlinePseudoElement = (
node: HTMLElement,
clone: HTMLElement,
style: CSSStyleDeclaration,
contentItems: ?Array<PseudoContentItem>,
pseudoElt: ':before' | ':after'
): ?HTMLElement => {
const style = node.ownerDocument.defaultView.getComputedStyle(node, pseudoElt);
if (
!style ||
!style.content ||
@ -367,20 +408,29 @@ const inlinePseudoElement = (
return;
}
const content = stripQuotes(style.content);
const image = content.match(URL_REGEXP);
const anonymousReplacedElement = clone.ownerDocument.createElement(
image ? 'img' : 'html2canvaspseudoelement'
);
if (image) {
// $FlowFixMe
anonymousReplacedElement.src = stripQuotes(image[1]);
} else {
anonymousReplacedElement.textContent = content;
}
const anonymousReplacedElement = clone.ownerDocument.createElement('html2canvaspseudoelement');
copyCSSStyles(style, anonymousReplacedElement);
if (contentItems) {
const len = contentItems.length;
for (var i = 0; i < len; i++) {
const item = contentItems[i];
switch (item.type) {
case PSEUDO_CONTENT_ITEM_TYPE.IMAGE:
const img = clone.ownerDocument.createElement('img');
img.src = parseBackgroundImage(`url(${item.value})`)[0].args[0];
img.style.opacity = '1';
anonymousReplacedElement.appendChild(img);
break;
case PSEUDO_CONTENT_ITEM_TYPE.TEXT:
anonymousReplacedElement.appendChild(
clone.ownerDocument.createTextNode(item.value)
);
break;
}
}
}
anonymousReplacedElement.className = `${PSEUDO_HIDE_ELEMENT_CLASS_BEFORE} ${PSEUDO_HIDE_ELEMENT_CLASS_AFTER}`;
clone.className +=
pseudoElt === PSEUDO_BEFORE
@ -395,13 +445,6 @@ const inlinePseudoElement = (
return anonymousReplacedElement;
};
const stripQuotes = (content: string): string => {
const first = content.substr(0, 1);
return first === content.substr(content.length - 1) && first.match(/['"]/)
? content.substr(1, content.length - 2)
: content;
};
const URL_REGEXP = /^url\((.+)\)$/i;
const PSEUDO_BEFORE = ':before';
const PSEUDO_AFTER = ':after';
@ -493,6 +536,7 @@ const createIframeContainer = (
cloneIframeContainer.width = bounds.width.toString();
cloneIframeContainer.height = bounds.height.toString();
cloneIframeContainer.scrolling = 'no'; // ios won't scroll without it
cloneIframeContainer.setAttribute(IGNORE_ATTRIBUTE, 'true');
if (!ownerDocument.body) {
return Promise.reject(
__DEV__ ? `Body element not found in Document that is getting rendered` : ''

View File

@ -63,9 +63,11 @@ export class FontMetrics {
return {baseline, middle};
}
getMetrics(font: Font) {
if (this._data[`${font.fontFamily} ${font.fontSize}`] === undefined) {
this._data[`${font.fontFamily} ${font.fontSize}`] = this._parseMetrics(font);
const key = `${font.fontFamily} ${font.fontSize}`;
if (this._data[key] === undefined) {
this._data[key] = this._parseMetrics(font);
}
return this._data[`${font.fontFamily} ${font.fontSize}`];
return this._data[key];
}
}

View File

@ -3,14 +3,22 @@
import type {BackgroundSource} from './parsing/background';
import type {Bounds} from './Bounds';
import NodeContainer from './NodeContainer';
import {parseAngle} from './Angle';
import Color from './Color';
import Length, {LENGTH_TYPE} from './Length';
import Length, {LENGTH_TYPE, calculateLengthFromValueWithUnit} from './Length';
import {distance} from './Util';
const SIDE_OR_CORNER = /^(to )?(left|top|right|bottom)( (left|top|right|bottom))?$/i;
const PERCENTAGE_ANGLES = /^([+-]?\d*\.?\d+)% ([+-]?\d*\.?\d+)%$/i;
const ENDS_WITH_LENGTH = /(px)|%|( 0)$/i;
const FROM_TO = /^(from|to)\((.+)\)$/i;
const FROM_TO_COLORSTOP = /^(from|to|color-stop)\((?:([\d.]+)(%)?,\s*)?(.+?)\)$/i;
const RADIAL_SHAPE_DEFINITION = /^\s*(circle|ellipse)?\s*((?:([\d.]+)(px|r?em|%)\s*(?:([\d.]+)(px|r?em|%))?)|closest-side|closest-corner|farthest-side|farthest-corner)?\s*(?:at\s*(?:(left|center|right)|([\d.]+)(px|r?em|%))\s+(?:(top|center|bottom)|([\d.]+)(px|r?em|%)))?(?:\s|$)/i;
export type Point = {
x: number,
y: number
};
export type Direction = {
x0: number,
@ -24,46 +32,97 @@ export type ColorStop = {
stop: number
};
export type Gradient = {
direction: Direction,
export interface Gradient {
type: GradientType,
colorStops: Array<ColorStop>
}
export const GRADIENT_TYPE = {
LINEAR_GRADIENT: 0,
RADIAL_GRADIENT: 1
};
export type GradientType = $Values<typeof GRADIENT_TYPE>;
export const RADIAL_GRADIENT_SHAPE = {
CIRCLE: 0,
ELLIPSE: 1
};
export type RadialGradientShapeType = $Values<typeof RADIAL_GRADIENT_SHAPE>;
const LENGTH_FOR_POSITION = {
left: new Length('0%'),
top: new Length('0%'),
center: new Length('50%'),
right: new Length('100%'),
bottom: new Length('100%')
};
export class LinearGradient implements Gradient {
type: GradientType;
colorStops: Array<ColorStop>;
direction: Direction;
constructor(colorStops: Array<ColorStop>, direction: Direction) {
this.type = GRADIENT_TYPE.LINEAR_GRADIENT;
this.colorStops = colorStops;
this.direction = direction;
}
}
export class RadialGradient implements Gradient {
type: GradientType;
colorStops: Array<ColorStop>;
shape: RadialGradientShapeType;
center: Point;
radius: Point;
constructor(
colorStops: Array<ColorStop>,
shape: RadialGradientShapeType,
center: Point,
radius: Point
) {
this.type = GRADIENT_TYPE.RADIAL_GRADIENT;
this.colorStops = colorStops;
this.shape = shape;
this.center = center;
this.radius = radius;
}
}
export const parseGradient = (
container: NodeContainer,
{args, method, prefix}: BackgroundSource,
bounds: Bounds
): ?Gradient => {
if (method === 'linear-gradient') {
return parseLinearGradient(args, bounds);
return parseLinearGradient(args, bounds, !!prefix);
} else if (method === 'gradient' && args[0] === 'linear') {
// TODO handle correct angle
return parseLinearGradient(
['to bottom'].concat(
args
.slice(3)
.map(color => color.match(FROM_TO))
.filter(v => v !== null)
// $FlowFixMe
.map(v => v[2])
),
['to bottom'].concat(transformObsoleteColorStops(args.slice(3))),
bounds,
!!prefix
);
} else if (method === 'radial-gradient') {
return parseRadialGradient(
container,
prefix === '-webkit-' ? transformWebkitRadialGradientArgs(args) : args,
bounds
);
} else if (method === 'gradient' && args[0] === 'radial') {
return parseRadialGradient(
container,
transformObsoleteColorStops(transformWebkitRadialGradientArgs(args.slice(1))),
bounds
);
}
};
const parseLinearGradient = (args: Array<string>, bounds: Bounds): Gradient => {
const angle = parseAngle(args[0]);
const HAS_SIDE_OR_CORNER = SIDE_OR_CORNER.test(args[0]);
const HAS_DIRECTION = HAS_SIDE_OR_CORNER || angle !== null || PERCENTAGE_ANGLES.test(args[0]);
const direction = HAS_DIRECTION
? angle !== null
? calculateGradientDirection(angle, bounds)
: HAS_SIDE_OR_CORNER
? parseSideOrCorner(args[0], bounds)
: parsePercentageAngle(args[0], bounds)
: calculateGradientDirection(Math.PI, bounds);
const parseColorStops = (args: Array<string>, firstColorStopIndex: number, lineLength: number) => {
const colorStops = [];
const firstColorStopIndex = HAS_DIRECTION ? 1 : 0;
for (let i = firstColorStopIndex; i < args.length; i++) {
const value = args[i];
@ -78,21 +137,14 @@ const parseLinearGradient = (args: Array<string>, bounds: Bounds): Gradient => {
colorStops.push({color, stop});
}
// TODO: Fix some inaccuracy with color stops with px values
const lineLength = Math.min(
Math.sqrt(
Math.pow(Math.abs(direction.x0) + Math.abs(direction.x1), 2) +
Math.pow(Math.abs(direction.y0) + Math.abs(direction.y1), 2)
),
bounds.width * 2,
bounds.height * 2
);
const absoluteValuedColorStops = colorStops.map(({color, stop}) => {
const absoluteStop =
lineLength === 0 ? 0 : stop ? stop.getAbsoluteValue(lineLength) / lineLength : null;
return {
color,
// $FlowFixMe
stop: stop ? stop.getAbsoluteValue(lineLength) / lineLength : null
stop: absoluteStop
};
});
@ -118,10 +170,104 @@ const parseLinearGradient = (args: Array<string>, bounds: Bounds): Gradient => {
}
}
return {
direction,
colorStops: absoluteValuedColorStops
return absoluteValuedColorStops;
};
const parseLinearGradient = (
args: Array<string>,
bounds: Bounds,
hasPrefix: boolean
): LinearGradient => {
const angle = parseAngle(args[0]);
const HAS_SIDE_OR_CORNER = SIDE_OR_CORNER.test(args[0]);
const HAS_DIRECTION = HAS_SIDE_OR_CORNER || angle !== null || PERCENTAGE_ANGLES.test(args[0]);
const direction = HAS_DIRECTION
? angle !== null
? calculateGradientDirection(
// if there is a prefix, the 0° angle points due East (instead of North per W3C)
hasPrefix ? angle - Math.PI * 0.5 : angle,
bounds
)
: HAS_SIDE_OR_CORNER
? parseSideOrCorner(args[0], bounds)
: parsePercentageAngle(args[0], bounds)
: calculateGradientDirection(Math.PI, bounds);
const firstColorStopIndex = HAS_DIRECTION ? 1 : 0;
// TODO: Fix some inaccuracy with color stops with px values
const lineLength = Math.min(
distance(
Math.abs(direction.x0) + Math.abs(direction.x1),
Math.abs(direction.y0) + Math.abs(direction.y1)
),
bounds.width * 2,
bounds.height * 2
);
return new LinearGradient(parseColorStops(args, firstColorStopIndex, lineLength), direction);
};
const parseRadialGradient = (
container: NodeContainer,
args: Array<string>,
bounds: Bounds
): RadialGradient => {
const m = args[0].match(RADIAL_SHAPE_DEFINITION);
const shape =
m &&
(m[1] === 'circle' || // explicit shape specification
(m[3] !== undefined && m[5] === undefined)) // only one radius coordinate
? RADIAL_GRADIENT_SHAPE.CIRCLE
: RADIAL_GRADIENT_SHAPE.ELLIPSE;
const radius = {};
const center = {};
if (m) {
// Radius
if (m[3] !== undefined) {
radius.x = calculateLengthFromValueWithUnit(container, m[3], m[4]).getAbsoluteValue(
bounds.width
);
}
if (m[5] !== undefined) {
radius.y = calculateLengthFromValueWithUnit(container, m[5], m[6]).getAbsoluteValue(
bounds.height
);
}
// Position
if (m[7]) {
center.x = LENGTH_FOR_POSITION[m[7].toLowerCase()];
} else if (m[8] !== undefined) {
center.x = calculateLengthFromValueWithUnit(container, m[8], m[9]);
}
if (m[10]) {
center.y = LENGTH_FOR_POSITION[m[10].toLowerCase()];
} else if (m[11] !== undefined) {
center.y = calculateLengthFromValueWithUnit(container, m[11], m[12]);
}
}
const gradientCenter = {
x: center.x === undefined ? bounds.width / 2 : center.x.getAbsoluteValue(bounds.width),
y: center.y === undefined ? bounds.height / 2 : center.y.getAbsoluteValue(bounds.height)
};
const gradientRadius = calculateRadius(
(m && m[2]) || 'farthest-corner',
shape,
gradientCenter,
radius,
bounds
);
return new RadialGradient(
parseColorStops(args, m ? 1 : 0, Math.min(gradientRadius.x, gradientRadius.y)),
shape,
gradientCenter,
gradientRadius
);
};
const calculateGradientDirection = (radian: number, bounds: Bounds): Direction => {
@ -141,9 +287,7 @@ const calculateGradientDirection = (radian: number, bounds: Bounds): Direction =
};
const parseTopRight = (bounds: Bounds) =>
Math.acos(
bounds.width / 2 / (Math.sqrt(Math.pow(bounds.width, 2) + Math.pow(bounds.height, 2)) / 2)
);
Math.acos(bounds.width / 2 / (distance(bounds.width, bounds.height) / 2));
const parseSideOrCorner = (side: string, bounds: Bounds): Direction => {
switch (side) {
@ -189,3 +333,226 @@ const parsePercentageAngle = (angle: string, bounds: Bounds): Direction => {
return calculateGradientDirection(Math.atan(isNaN(ratio) ? 1 : ratio) + Math.PI / 2, bounds);
};
const findCorner = (bounds: Bounds, x: number, y: number, closest: boolean): Point => {
var corners = [
{x: 0, y: 0},
{x: 0, y: bounds.height},
{x: bounds.width, y: 0},
{x: bounds.width, y: bounds.height}
];
// $FlowFixMe
return corners.reduce(
(stat, corner) => {
const d = distance(x - corner.x, y - corner.y);
if (closest ? d < stat.optimumDistance : d > stat.optimumDistance) {
return {
optimumCorner: corner,
optimumDistance: d
};
}
return stat;
},
{
optimumDistance: closest ? Infinity : -Infinity,
optimumCorner: null
}
).optimumCorner;
};
const calculateRadius = (
extent: string,
shape: RadialGradientShapeType,
center: Point,
radius: Point,
bounds: Bounds
): Point => {
const x = center.x;
const y = center.y;
let rx = 0;
let ry = 0;
switch (extent) {
case 'closest-side':
// The ending shape is sized so that that it exactly meets the side of the gradient box closest to the gradients center.
// If the shape is an ellipse, it exactly meets the closest side in each dimension.
if (shape === RADIAL_GRADIENT_SHAPE.CIRCLE) {
rx = ry = Math.min(
Math.abs(x),
Math.abs(x - bounds.width),
Math.abs(y),
Math.abs(y - bounds.height)
);
} else if (shape === RADIAL_GRADIENT_SHAPE.ELLIPSE) {
rx = Math.min(Math.abs(x), Math.abs(x - bounds.width));
ry = Math.min(Math.abs(y), Math.abs(y - bounds.height));
}
break;
case 'closest-corner':
// The ending shape is sized so that that it passes through the corner of the gradient box closest to the gradients center.
// If the shape is an ellipse, the ending shape is given the same aspect-ratio it would have if closest-side were specified.
if (shape === RADIAL_GRADIENT_SHAPE.CIRCLE) {
rx = ry = Math.min(
distance(x, y),
distance(x, y - bounds.height),
distance(x - bounds.width, y),
distance(x - bounds.width, y - bounds.height)
);
} else if (shape === RADIAL_GRADIENT_SHAPE.ELLIPSE) {
// Compute the ratio ry/rx (which is to be the same as for "closest-side")
const c =
Math.min(Math.abs(y), Math.abs(y - bounds.height)) /
Math.min(Math.abs(x), Math.abs(x - bounds.width));
const corner = findCorner(bounds, x, y, true);
rx = distance(corner.x - x, (corner.y - y) / c);
ry = c * rx;
}
break;
case 'farthest-side':
// Same as closest-side, except the ending shape is sized based on the farthest side(s)
if (shape === RADIAL_GRADIENT_SHAPE.CIRCLE) {
rx = ry = Math.max(
Math.abs(x),
Math.abs(x - bounds.width),
Math.abs(y),
Math.abs(y - bounds.height)
);
} else if (shape === RADIAL_GRADIENT_SHAPE.ELLIPSE) {
rx = Math.max(Math.abs(x), Math.abs(x - bounds.width));
ry = Math.max(Math.abs(y), Math.abs(y - bounds.height));
}
break;
case 'farthest-corner':
// Same as closest-corner, except the ending shape is sized based on the farthest corner.
// If the shape is an ellipse, the ending shape is given the same aspect ratio it would have if farthest-side were specified.
if (shape === RADIAL_GRADIENT_SHAPE.CIRCLE) {
rx = ry = Math.max(
distance(x, y),
distance(x, y - bounds.height),
distance(x - bounds.width, y),
distance(x - bounds.width, y - bounds.height)
);
} else if (shape === RADIAL_GRADIENT_SHAPE.ELLIPSE) {
// Compute the ratio ry/rx (which is to be the same as for "farthest-side")
const c =
Math.max(Math.abs(y), Math.abs(y - bounds.height)) /
Math.max(Math.abs(x), Math.abs(x - bounds.width));
const corner = findCorner(bounds, x, y, false);
rx = distance(corner.x - x, (corner.y - y) / c);
ry = c * rx;
}
break;
default:
// pixel or percentage values
rx = radius.x || 0;
ry = radius.y !== undefined ? radius.y : rx;
break;
}
return {
x: rx,
y: ry
};
};
export const transformWebkitRadialGradientArgs = (args: Array<string>): Array<string> => {
let shape = '';
let radius = '';
let extent = '';
let position = '';
let idx = 0;
const POSITION = /^(left|center|right|\d+(?:px|r?em|%)?)(?:\s+(top|center|bottom|\d+(?:px|r?em|%)?))?$/i;
const SHAPE_AND_EXTENT = /^(circle|ellipse)?\s*(closest-side|closest-corner|farthest-side|farthest-corner|contain|cover)?$/i;
const RADIUS = /^\d+(px|r?em|%)?(?:\s+\d+(px|r?em|%)?)?$/i;
const matchStartPosition = args[idx].match(POSITION);
if (matchStartPosition) {
idx++;
}
const matchShapeExtent = args[idx].match(SHAPE_AND_EXTENT);
if (matchShapeExtent) {
shape = matchShapeExtent[1] || '';
extent = matchShapeExtent[2] || '';
if (extent === 'contain') {
extent = 'closest-side';
} else if (extent === 'cover') {
extent = 'farthest-corner';
}
idx++;
}
const matchStartRadius = args[idx].match(RADIUS);
if (matchStartRadius) {
idx++;
}
const matchEndPosition = args[idx].match(POSITION);
if (matchEndPosition) {
idx++;
}
const matchEndRadius = args[idx].match(RADIUS);
if (matchEndRadius) {
idx++;
}
const matchPosition = matchEndPosition || matchStartPosition;
if (matchPosition && matchPosition[1]) {
position = matchPosition[1] + (/^\d+$/.test(matchPosition[1]) ? 'px' : '');
if (matchPosition[2]) {
position += ' ' + matchPosition[2] + (/^\d+$/.test(matchPosition[2]) ? 'px' : '');
}
}
const matchRadius = matchEndRadius || matchStartRadius;
if (matchRadius) {
radius = matchRadius[0];
if (!matchRadius[1]) {
radius += 'px';
}
}
if (position && !shape && !radius && !extent) {
radius = position;
position = '';
}
if (position) {
position = `at ${position}`;
}
return [[shape, extent, radius, position].filter(s => !!s).join(' ')].concat(args.slice(idx));
};
const transformObsoleteColorStops = (args: Array<string>): Array<string> => {
return (
args
.map(color => color.match(FROM_TO_COLORSTOP))
// $FlowFixMe
.map((v: Array<string>, index: number) => {
if (!v) {
return args[index];
}
switch (v[1]) {
case 'from':
return `${v[4]} 0%`;
case 'to':
return `${v[4]} 100%`;
case 'color-stop':
if (v[3] === '%') {
return `${v[4]} ${v[2]}`;
}
return `${v[4]} ${parseFloat(v[2]) * 100}%`;
}
})
);
};

View File

@ -1,6 +1,10 @@
/* @flow */
'use strict';
import NodeContainer from './NodeContainer';
const LENGTH_WITH_UNIT = /([\d.]+)(px|r?em|%)/i;
export const LENGTH_TYPE = {
PX: 0,
PERCENTAGE: 1
@ -34,3 +38,31 @@ export default class Length {
return new Length(v);
}
}
const getRootFontSize = (container: NodeContainer): number => {
const parent = container.parent;
return parent ? getRootFontSize(parent) : parseFloat(container.style.font.fontSize);
};
export const calculateLengthFromValueWithUnit = (
container: NodeContainer,
value: string,
unit: string
): Length => {
switch (unit) {
case 'px':
case '%':
return new Length(value + unit);
case 'em':
case 'rem':
const length = new Length(value);
length.value *=
unit === 'em'
? parseFloat(container.style.font.fontSize)
: getRootFontSize(container);
return length;
default:
// TODO: handle correctly if unknown unit is used
return new Length('0');
}
};

711
src/ListItem.js Normal file
View File

@ -0,0 +1,711 @@
/* @flow */
'use strict';
import type ResourceLoader from './ResourceLoader';
import type {ListStyleType} from './parsing/listStyle';
import {copyCSSStyles, contains} from './Util';
import NodeContainer from './NodeContainer';
import TextContainer from './TextContainer';
import {LIST_STYLE_POSITION, LIST_STYLE_TYPE} from './parsing/listStyle';
import {fromCodePoint} from './Unicode';
// Margin between the enumeration and the list item content
const MARGIN_RIGHT = 7;
const ancestorTypes = ['OL', 'UL', 'MENU'];
export const getListOwner = (container: NodeContainer): ?NodeContainer => {
let parent = container.parent;
if (!parent) {
return null;
}
do {
let isAncestor = ancestorTypes.indexOf(parent.tagName) !== -1;
if (isAncestor) {
return parent;
}
parent = parent.parent;
} while (parent);
return container.parent;
};
export const inlineListItemElement = (
node: HTMLElement,
container: NodeContainer,
resourceLoader: ResourceLoader
): void => {
const listStyle = container.style.listStyle;
if (!listStyle) {
return;
}
const style = node.ownerDocument.defaultView.getComputedStyle(node, null);
const wrapper = node.ownerDocument.createElement('html2canvaswrapper');
copyCSSStyles(style, wrapper);
wrapper.style.position = 'absolute';
wrapper.style.bottom = 'auto';
wrapper.style.display = 'block';
wrapper.style.letterSpacing = 'normal';
switch (listStyle.listStylePosition) {
case LIST_STYLE_POSITION.OUTSIDE:
wrapper.style.left = 'auto';
wrapper.style.right = `${node.ownerDocument.defaultView.innerWidth -
container.bounds.left -
container.style.margin[1].getAbsoluteValue(container.bounds.width) +
MARGIN_RIGHT}px`;
wrapper.style.textAlign = 'right';
break;
case LIST_STYLE_POSITION.INSIDE:
wrapper.style.left = `${container.bounds.left -
container.style.margin[3].getAbsoluteValue(container.bounds.width)}px`;
wrapper.style.right = 'auto';
wrapper.style.textAlign = 'left';
break;
}
let text;
const MARGIN_TOP = container.style.margin[0].getAbsoluteValue(container.bounds.width);
const styleImage = listStyle.listStyleImage;
if (styleImage) {
if (styleImage.method === 'url') {
const image = node.ownerDocument.createElement('img');
image.src = styleImage.args[0];
wrapper.style.top = `${container.bounds.top - MARGIN_TOP}px`;
wrapper.style.width = 'auto';
wrapper.style.height = 'auto';
wrapper.appendChild(image);
} else {
const size = parseFloat(container.style.font.fontSize) * 0.5;
wrapper.style.top = `${container.bounds.top -
MARGIN_TOP +
container.bounds.height -
1.5 * size}px`;
wrapper.style.width = `${size}px`;
wrapper.style.height = `${size}px`;
wrapper.style.backgroundImage = style.listStyleImage;
}
} else if (typeof container.listIndex === 'number') {
text = node.ownerDocument.createTextNode(
createCounterText(container.listIndex, listStyle.listStyleType, true)
);
wrapper.appendChild(text);
wrapper.style.top = `${container.bounds.top - MARGIN_TOP}px`;
}
// $FlowFixMe
const body: HTMLBodyElement = node.ownerDocument.body;
body.appendChild(wrapper);
if (text) {
container.childNodes.push(TextContainer.fromTextNode(text, container));
body.removeChild(wrapper);
} else {
// $FlowFixMe
container.childNodes.push(new NodeContainer(wrapper, container, resourceLoader, 0));
}
};
const ROMAN_UPPER = {
integers: [1000, 900, 500, 400, 100, 90, 50, 40, 10, 9, 5, 4, 1],
values: ['M', 'CM', 'D', 'CD', 'C', 'XC', 'L', 'XL', 'X', 'IX', 'V', 'IV', 'I']
};
const ARMENIAN = {
integers: [
9000,
8000,
7000,
6000,
5000,
4000,
3000,
2000,
1000,
900,
800,
700,
600,
500,
400,
300,
200,
100,
90,
80,
70,
60,
50,
40,
30,
20,
10,
9,
8,
7,
6,
5,
4,
3,
2,
1
],
values: [
'Ք',
'Փ',
'Ւ',
'Ց',
'Ր',
'Տ',
'Վ',
'Ս',
'Ռ',
'Ջ',
'Պ',
'Չ',
'Ո',
'Շ',
'Ն',
'Յ',
'Մ',
'Ճ',
'Ղ',
'Ձ',
'Հ',
'Կ',
'Ծ',
'Խ',
'Լ',
'Ի',
'Ժ',
'Թ',
'Ը',
'Է',
'Զ',
'Ե',
'Դ',
'Գ',
'Բ',
'Ա'
]
};
const HEBREW = {
integers: [
10000,
9000,
8000,
7000,
6000,
5000,
4000,
3000,
2000,
1000,
400,
300,
200,
100,
90,
80,
70,
60,
50,
40,
30,
20,
19,
18,
17,
16,
15,
10,
9,
8,
7,
6,
5,
4,
3,
2,
1
],
values: [
'י׳',
'ט׳',
'ח׳',
'ז׳',
'ו׳',
'ה׳',
'ד׳',
'ג׳',
'ב׳',
'א׳',
'ת',
'ש',
'ר',
'ק',
'צ',
'פ',
'ע',
'ס',
'נ',
'מ',
'ל',
'כ',
'יט',
'יח',
'יז',
'טז',
'טו',
'י',
'ט',
'ח',
'ז',
'ו',
'ה',
'ד',
'ג',
'ב',
'א'
]
};
const GEORGIAN = {
integers: [
10000,
9000,
8000,
7000,
6000,
5000,
4000,
3000,
2000,
1000,
900,
800,
700,
600,
500,
400,
300,
200,
100,
90,
80,
70,
60,
50,
40,
30,
20,
10,
9,
8,
7,
6,
5,
4,
3,
2,
1
],
values: [
'ჵ',
'ჰ',
'ჯ',
'ჴ',
'ხ',
'ჭ',
'წ',
'ძ',
'ც',
'ჩ',
'შ',
'',
'ღ',
'ქ',
'ფ',
'ჳ',
'ტ',
'ს',
'რ',
'ჟ',
'პ',
'ო',
'ჲ',
'ნ',
'მ',
'ლ',
'კ',
'ი',
'თ',
'ჱ',
'ზ',
'ვ',
'ე',
'დ',
'გ',
'ბ',
'ა'
]
};
const createAdditiveCounter = (
value: number,
min: number,
max: number,
symbols,
fallback: ListStyleType,
suffix: string
) => {
if (value < min || value > max) {
return createCounterText(value, fallback, suffix.length > 0);
}
return (
symbols.integers.reduce((string, integer, index) => {
while (value >= integer) {
value -= integer;
string += symbols.values[index];
}
return string;
}, '') + suffix
);
};
const createCounterStyleWithSymbolResolver = (
value: number,
codePointRangeLength: number,
isNumeric: boolean,
resolver
): string => {
let string = '';
do {
if (!isNumeric) {
value--;
}
string = resolver(value) + string;
value /= codePointRangeLength;
} while (value * codePointRangeLength >= codePointRangeLength);
return string;
};
const createCounterStyleFromRange = (
value: number,
codePointRangeStart: number,
codePointRangeEnd: number,
isNumeric: boolean,
suffix: string
): string => {
const codePointRangeLength = codePointRangeEnd - codePointRangeStart + 1;
return (
(value < 0 ? '-' : '') +
(createCounterStyleWithSymbolResolver(
Math.abs(value),
codePointRangeLength,
isNumeric,
codePoint =>
fromCodePoint(Math.floor(codePoint % codePointRangeLength) + codePointRangeStart)
) +
suffix)
);
};
const createCounterStyleFromSymbols = (
value: number,
symbols: string,
suffix: string = '. '
): string => {
const codePointRangeLength = symbols.length;
return (
createCounterStyleWithSymbolResolver(
Math.abs(value),
codePointRangeLength,
false,
codePoint => symbols[Math.floor(codePoint % codePointRangeLength)]
) + suffix
);
};
const CJK_ZEROS = 1 << 0;
const CJK_TEN_COEFFICIENTS = 1 << 1;
const CJK_TEN_HIGH_COEFFICIENTS = 1 << 2;
const CJK_HUNDRED_COEFFICIENTS = 1 << 3;
const createCJKCounter = (
value: number,
numbers: string,
multipliers: string,
negativeSign: string,
suffix: string,
flags: number
): string => {
if (value < -9999 || value > 9999) {
return createCounterText(value, LIST_STYLE_TYPE.CJK_DECIMAL, suffix.length > 0);
}
let tmp = Math.abs(value);
let string = suffix;
if (tmp === 0) {
return numbers[0] + string;
}
for (let digit = 0; tmp > 0 && digit <= 4; digit++) {
let coefficient = tmp % 10;
if (coefficient === 0 && contains(flags, CJK_ZEROS) && string !== '') {
string = numbers[coefficient] + string;
} else if (
coefficient > 1 ||
(coefficient === 1 && digit === 0) ||
(coefficient === 1 && digit === 1 && contains(flags, CJK_TEN_COEFFICIENTS)) ||
(coefficient === 1 &&
digit === 1 &&
contains(flags, CJK_TEN_HIGH_COEFFICIENTS) &&
value > 100) ||
(coefficient === 1 && digit > 1 && contains(flags, CJK_HUNDRED_COEFFICIENTS))
) {
string = numbers[coefficient] + (digit > 0 ? multipliers[digit - 1] : '') + string;
} else if (coefficient === 1 && digit > 0) {
string = multipliers[digit - 1] + string;
}
tmp = Math.floor(tmp / 10);
}
return (value < 0 ? negativeSign : '') + string;
};
const CHINESE_INFORMAL_MULTIPLIERS = '十百千萬';
const CHINESE_FORMAL_MULTIPLIERS = '拾佰仟萬';
const JAPANESE_NEGATIVE = 'マイナス';
const KOREAN_NEGATIVE = '마이너스 ';
export const createCounterText = (
value: number,
type: ListStyleType,
appendSuffix: boolean
): string => {
const defaultSuffix = appendSuffix ? '. ' : '';
const cjkSuffix = appendSuffix ? '、' : '';
const koreanSuffix = appendSuffix ? ', ' : '';
switch (type) {
case LIST_STYLE_TYPE.DISC:
return '•';
case LIST_STYLE_TYPE.CIRCLE:
return '◦';
case LIST_STYLE_TYPE.SQUARE:
return '◾';
case LIST_STYLE_TYPE.DECIMAL_LEADING_ZERO:
const string = createCounterStyleFromRange(value, 48, 57, true, defaultSuffix);
return string.length < 4 ? `0${string}` : string;
case LIST_STYLE_TYPE.CJK_DECIMAL:
return createCounterStyleFromSymbols(value, '〇一二三四五六七八九', cjkSuffix);
case LIST_STYLE_TYPE.LOWER_ROMAN:
return createAdditiveCounter(
value,
1,
3999,
ROMAN_UPPER,
LIST_STYLE_TYPE.DECIMAL,
defaultSuffix
).toLowerCase();
case LIST_STYLE_TYPE.UPPER_ROMAN:
return createAdditiveCounter(
value,
1,
3999,
ROMAN_UPPER,
LIST_STYLE_TYPE.DECIMAL,
defaultSuffix
);
case LIST_STYLE_TYPE.LOWER_GREEK:
return createCounterStyleFromRange(value, 945, 969, false, defaultSuffix);
case LIST_STYLE_TYPE.LOWER_ALPHA:
return createCounterStyleFromRange(value, 97, 122, false, defaultSuffix);
case LIST_STYLE_TYPE.UPPER_ALPHA:
return createCounterStyleFromRange(value, 65, 90, false, defaultSuffix);
case LIST_STYLE_TYPE.ARABIC_INDIC:
return createCounterStyleFromRange(value, 1632, 1641, true, defaultSuffix);
case LIST_STYLE_TYPE.ARMENIAN:
case LIST_STYLE_TYPE.UPPER_ARMENIAN:
return createAdditiveCounter(
value,
1,
9999,
ARMENIAN,
LIST_STYLE_TYPE.DECIMAL,
defaultSuffix
);
case LIST_STYLE_TYPE.LOWER_ARMENIAN:
return createAdditiveCounter(
value,
1,
9999,
ARMENIAN,
LIST_STYLE_TYPE.DECIMAL,
defaultSuffix
).toLowerCase();
case LIST_STYLE_TYPE.BENGALI:
return createCounterStyleFromRange(value, 2534, 2543, true, defaultSuffix);
case LIST_STYLE_TYPE.CAMBODIAN:
case LIST_STYLE_TYPE.KHMER:
return createCounterStyleFromRange(value, 6112, 6121, true, defaultSuffix);
case LIST_STYLE_TYPE.CJK_EARTHLY_BRANCH:
return createCounterStyleFromSymbols(value, '子丑寅卯辰巳午未申酉戌亥', cjkSuffix);
case LIST_STYLE_TYPE.CJK_HEAVENLY_STEM:
return createCounterStyleFromSymbols(value, '甲乙丙丁戊己庚辛壬癸', cjkSuffix);
case LIST_STYLE_TYPE.CJK_IDEOGRAPHIC:
case LIST_STYLE_TYPE.TRAD_CHINESE_INFORMAL:
return createCJKCounter(
value,
'零一二三四五六七八九',
CHINESE_INFORMAL_MULTIPLIERS,
'負',
cjkSuffix,
CJK_TEN_COEFFICIENTS | CJK_TEN_HIGH_COEFFICIENTS | CJK_HUNDRED_COEFFICIENTS
);
case LIST_STYLE_TYPE.TRAD_CHINESE_FORMAL:
return createCJKCounter(
value,
'零壹貳參肆伍陸柒捌玖',
CHINESE_FORMAL_MULTIPLIERS,
'負',
cjkSuffix,
CJK_ZEROS |
CJK_TEN_COEFFICIENTS |
CJK_TEN_HIGH_COEFFICIENTS |
CJK_HUNDRED_COEFFICIENTS
);
case LIST_STYLE_TYPE.SIMP_CHINESE_INFORMAL:
return createCJKCounter(
value,
'零一二三四五六七八九',
CHINESE_INFORMAL_MULTIPLIERS,
'负',
cjkSuffix,
CJK_TEN_COEFFICIENTS | CJK_TEN_HIGH_COEFFICIENTS | CJK_HUNDRED_COEFFICIENTS
);
case LIST_STYLE_TYPE.SIMP_CHINESE_FORMAL:
return createCJKCounter(
value,
'零壹贰叁肆伍陆柒捌玖',
CHINESE_FORMAL_MULTIPLIERS,
'负',
cjkSuffix,
CJK_ZEROS |
CJK_TEN_COEFFICIENTS |
CJK_TEN_HIGH_COEFFICIENTS |
CJK_HUNDRED_COEFFICIENTS
);
case LIST_STYLE_TYPE.JAPANESE_INFORMAL:
return createCJKCounter(value, '〇一二三四五六七八九', '十百千万', JAPANESE_NEGATIVE, cjkSuffix, 0);
case LIST_STYLE_TYPE.JAPANESE_FORMAL:
return createCJKCounter(
value,
'零壱弐参四伍六七八九',
'拾百千万',
JAPANESE_NEGATIVE,
cjkSuffix,
CJK_ZEROS | CJK_TEN_COEFFICIENTS | CJK_TEN_HIGH_COEFFICIENTS
);
case LIST_STYLE_TYPE.KOREAN_HANGUL_FORMAL:
return createCJKCounter(
value,
'영일이삼사오육칠팔구',
'십백천만',
KOREAN_NEGATIVE,
koreanSuffix,
CJK_ZEROS | CJK_TEN_COEFFICIENTS | CJK_TEN_HIGH_COEFFICIENTS
);
case LIST_STYLE_TYPE.KOREAN_HANJA_INFORMAL:
return createCJKCounter(value, '零一二三四五六七八九', '十百千萬', KOREAN_NEGATIVE, koreanSuffix, 0);
case LIST_STYLE_TYPE.KOREAN_HANJA_FORMAL:
return createCJKCounter(
value,
'零壹貳參四五六七八九',
'拾百千',
KOREAN_NEGATIVE,
koreanSuffix,
CJK_ZEROS | CJK_TEN_COEFFICIENTS | CJK_TEN_HIGH_COEFFICIENTS
);
case LIST_STYLE_TYPE.DEVANAGARI:
return createCounterStyleFromRange(value, 0x966, 0x96f, true, defaultSuffix);
case LIST_STYLE_TYPE.GEORGIAN:
return createAdditiveCounter(
value,
1,
19999,
GEORGIAN,
LIST_STYLE_TYPE.DECIMAL,
defaultSuffix
);
case LIST_STYLE_TYPE.GUJARATI:
return createCounterStyleFromRange(value, 0xae6, 0xaef, true, defaultSuffix);
case LIST_STYLE_TYPE.GURMUKHI:
return createCounterStyleFromRange(value, 0xa66, 0xa6f, true, defaultSuffix);
case LIST_STYLE_TYPE.HEBREW:
return createAdditiveCounter(
value,
1,
10999,
HEBREW,
LIST_STYLE_TYPE.DECIMAL,
defaultSuffix
);
case LIST_STYLE_TYPE.HIRAGANA:
return createCounterStyleFromSymbols(
value,
'あいうえおかきくけこさしすせそたちつてとなにぬねのはひふへほまみむめもやゆよらりるれろわゐゑをん'
);
case LIST_STYLE_TYPE.HIRAGANA_IROHA:
return createCounterStyleFromSymbols(
value,
'いろはにほへとちりぬるをわかよたれそつねならむうゐのおくやまけふこえてあさきゆめみしゑひもせす'
);
case LIST_STYLE_TYPE.KANNADA:
return createCounterStyleFromRange(value, 0xce6, 0xcef, true, defaultSuffix);
case LIST_STYLE_TYPE.KATAKANA:
return createCounterStyleFromSymbols(
value,
'アイウエオカキクケコサシスセソタチツテトナニヌネノハヒフヘホマミムメモヤユヨラリルレロワヰヱヲン',
cjkSuffix
);
case LIST_STYLE_TYPE.KATAKANA_IROHA:
return createCounterStyleFromSymbols(
value,
'イロハニホヘトチリヌルヲワカヨタレソツネナラムウヰノオクヤマケフコエテアサキユメミシヱヒモセス',
cjkSuffix
);
case LIST_STYLE_TYPE.LAO:
return createCounterStyleFromRange(value, 0xed0, 0xed9, true, defaultSuffix);
case LIST_STYLE_TYPE.MONGOLIAN:
return createCounterStyleFromRange(value, 0x1810, 0x1819, true, defaultSuffix);
case LIST_STYLE_TYPE.MYANMAR:
return createCounterStyleFromRange(value, 0x1040, 0x1049, true, defaultSuffix);
case LIST_STYLE_TYPE.ORIYA:
return createCounterStyleFromRange(value, 0xb66, 0xb6f, true, defaultSuffix);
case LIST_STYLE_TYPE.PERSIAN:
return createCounterStyleFromRange(value, 0x6f0, 0x6f9, true, defaultSuffix);
case LIST_STYLE_TYPE.TAMIL:
return createCounterStyleFromRange(value, 0xbe6, 0xbef, true, defaultSuffix);
case LIST_STYLE_TYPE.TELUGU:
return createCounterStyleFromRange(value, 0xc66, 0xc6f, true, defaultSuffix);
case LIST_STYLE_TYPE.THAI:
return createCounterStyleFromRange(value, 0xe50, 0xe59, true, defaultSuffix);
case LIST_STYLE_TYPE.TIBETAN:
return createCounterStyleFromRange(value, 0xf20, 0xf29, true, defaultSuffix);
case LIST_STYLE_TYPE.DECIMAL:
default:
return createCounterStyleFromRange(value, 48, 57, true, defaultSuffix);
}
};

View File

@ -2,21 +2,23 @@
'use strict';
export default class Logger {
enabled: boolean;
start: number;
id: ?string;
constructor(id: ?string, start: ?number) {
constructor(enabled: boolean, id: ?string, start: ?number) {
this.enabled = enabled;
this.start = start ? start : Date.now();
this.id = id;
}
child(id: string) {
return new Logger(id, this.start);
return new Logger(this.enabled, id, this.start);
}
// eslint-disable-next-line flowtype/no-weak-types
log(...args: any) {
if (window.console && window.console.log) {
if (this.enabled && window.console && window.console.log) {
Function.prototype.bind
.call(window.console.log, window.console)
.apply(
@ -31,7 +33,7 @@ export default class Logger {
// eslint-disable-next-line flowtype/no-weak-types
error(...args: any) {
if (window.console && window.console.error) {
if (this.enabled && window.console && window.console.error) {
Function.prototype.bind
.call(window.console.error, window.console)
.apply(

View File

@ -7,6 +7,8 @@ import type {BorderRadius} from './parsing/borderRadius';
import type {DisplayBit} from './parsing/display';
import type {Float} from './parsing/float';
import type {Font} from './parsing/font';
import type {ListStyle} from './parsing/listStyle';
import type {Margin} from './parsing/margin';
import type {Overflow} from './parsing/overflow';
import type {Padding} from './parsing/padding';
import type {Position} from './parsing/position';
@ -32,6 +34,8 @@ import {parseDisplay, DISPLAY} from './parsing/display';
import {parseCSSFloat, FLOAT} from './parsing/float';
import {parseFont} from './parsing/font';
import {parseLetterSpacing} from './parsing/letterSpacing';
import {parseListStyle} from './parsing/listStyle';
import {parseMargin} from './parsing/margin';
import {parseOverflow, OVERFLOW} from './parsing/overflow';
import {parsePadding} from './parsing/padding';
import {parsePosition, POSITION} from './parsing/position';
@ -50,6 +54,7 @@ import {
getInputBorderRadius,
reformatInputBounds
} from './Input';
import {getListOwner} from './ListItem';
type StyleDeclaration = {
background: Background,
@ -60,6 +65,8 @@ type StyleDeclaration = {
float: Float,
font: Font,
letterSpacing: number,
listStyle: ListStyle | null,
margin: Margin,
opacity: number,
overflow: Overflow,
padding: Padding,
@ -79,10 +86,14 @@ export default class NodeContainer {
parent: ?NodeContainer;
style: StyleDeclaration;
childNodes: Array<TextContainer | Path>;
listItems: Array<NodeContainer>;
listIndex: ?number;
listStart: ?number;
bounds: Bounds;
curvedBounds: BoundCurves;
image: ?string;
index: number;
tagName: string;
constructor(
node: HTMLElement | SVGSVGElement,
@ -91,8 +102,13 @@ export default class NodeContainer {
index: number
) {
this.parent = parent;
this.tagName = node.tagName;
this.index = index;
this.childNodes = [];
this.listItems = [];
if (typeof node.start === 'number') {
this.listStart = node.start;
}
const defaultView = node.ownerDocument.defaultView;
const scrollX = defaultView.pageXOffset;
const scrollY = defaultView.pageYOffset;
@ -117,6 +133,8 @@ export default class NodeContainer {
float: parseCSSFloat(style.float),
font: parseFont(style),
letterSpacing: parseLetterSpacing(style.letterSpacing),
listStyle: display === DISPLAY.LIST_ITEM ? parseListStyle(style) : null,
margin: parseMargin(style),
opacity: parseFloat(style.opacity),
overflow:
INPUT_TAGS.indexOf(node.tagName) === -1
@ -137,6 +155,20 @@ export default class NodeContainer {
node.style.transform = 'matrix(1,0,0,1,0,0)';
}
if (display === DISPLAY.LIST_ITEM) {
const listOwner = getListOwner(this);
if (listOwner) {
const listIndex = listOwner.listItems.length;
listOwner.listItems.push(this);
this.listIndex =
node.hasAttribute('value') && typeof node.value === 'number'
? node.value
: listIndex === 0
? typeof listOwner.listStart === 'number' ? listOwner.listStart : 1
: listOwner.listItems[listIndex - 1].listIndex + 1;
}
}
// TODO move bound retrieval for all nodes to a later stage?
if (node.tagName === 'IMG') {
node.addEventListener('load', () => {
@ -170,8 +202,7 @@ export default class NodeContainer {
}
getClipPaths(): Array<Path> {
const parentClips = this.parent ? this.parent.getClipPaths() : [];
const isClipped =
this.style.overflow === OVERFLOW.HIDDEN || this.style.overflow === OVERFLOW.SCROLL;
const isClipped = this.style.overflow !== OVERFLOW.VISIBLE;
return isClipped
? parentClips.concat([calculatePaddingBoxPath(this.curvedBounds)])

View File

@ -6,6 +6,8 @@ import StackingContext from './StackingContext';
import NodeContainer from './NodeContainer';
import TextContainer from './TextContainer';
import {inlineInputElement, inlineTextAreaElement, inlineSelectElement} from './Input';
import {inlineListItemElement} from './ListItem';
import {LIST_STYLE_TYPE} from './parsing/listStyle';
export const NodeParser = (
node: HTMLElement,
@ -71,6 +73,11 @@ const parseNodeTree = (
} else if (childNode.tagName === 'SELECT') {
// $FlowFixMe
inlineSelectElement(childNode, container);
} else if (
container.style.listStyle &&
container.style.listStyle.listStyleType !== LIST_STYLE_TYPE.NONE
) {
inlineListItemElement(childNode, container, resourceLoader);
}
const SHOULD_TRAVERSE_CHILDREN = childNode.tagName !== 'TEXTAREA';

341
src/PseudoNodeContent.js Normal file
View File

@ -0,0 +1,341 @@
/* @flow */
'use strict';
import {createCounterText} from './ListItem';
import {parseListStyleType} from './parsing/listStyle';
export const PSEUDO_CONTENT_ITEM_TYPE = {
TEXT: 0,
IMAGE: 1
};
export const TOKEN_TYPE = {
STRING: 0,
ATTRIBUTE: 1,
URL: 2,
COUNTER: 3,
COUNTERS: 4,
OPENQUOTE: 5,
CLOSEQUOTE: 6
};
export type PseudoContentData = {
counters: {[string]: Array<number>},
quoteDepth: number
};
export type PseudoContentItem = {
type: $Values<typeof PSEUDO_CONTENT_ITEM_TYPE>,
value: string
};
export type Token = {
type: $Values<typeof TOKEN_TYPE>,
value?: string,
name?: string,
format?: string,
glue?: string
};
export const parseCounterReset = (
style: ?CSSStyleDeclaration,
data: PseudoContentData
): Array<string> => {
if (!style || !style.counterReset || style.counterReset === 'none') {
return [];
}
const counterNames: Array<string> = [];
const counterResets = style.counterReset.split(/\s*,\s*/);
const lenCounterResets = counterResets.length;
for (let i = 0; i < lenCounterResets; i++) {
const [counterName, initialValue] = counterResets[i].split(/\s+/);
counterNames.push(counterName);
let counter = data.counters[counterName];
if (!counter) {
counter = data.counters[counterName] = [];
}
counter.push(parseInt(initialValue || 0, 10));
}
return counterNames;
};
export const popCounters = (counterNames: Array<string>, data: PseudoContentData): void => {
const lenCounters = counterNames.length;
for (let i = 0; i < lenCounters; i++) {
data.counters[counterNames[i]].pop();
}
};
export const resolvePseudoContent = (
node: Node,
style: ?CSSStyleDeclaration,
data: PseudoContentData
): ?Array<PseudoContentItem> => {
if (
!style ||
!style.content ||
style.content === 'none' ||
style.content === '-moz-alt-content' ||
style.display === 'none'
) {
return null;
}
const tokens = parseContent(style.content);
const len = tokens.length;
const contentItems: Array<PseudoContentItem> = [];
let s = '';
// increment the counter (if there is a "counter-increment" declaration)
const counterIncrement = style.counterIncrement;
if (counterIncrement && counterIncrement !== 'none') {
const [counterName, incrementValue] = counterIncrement.split(/\s+/);
const counter = data.counters[counterName];
if (counter) {
counter[counter.length - 1] +=
incrementValue === undefined ? 1 : parseInt(incrementValue, 10);
}
}
// build the content string
for (let i = 0; i < len; i++) {
const token = tokens[i];
switch (token.type) {
case TOKEN_TYPE.STRING:
s += token.value || '';
break;
case TOKEN_TYPE.ATTRIBUTE:
if (node instanceof HTMLElement && token.value) {
s += node.getAttribute(token.value) || '';
}
break;
case TOKEN_TYPE.COUNTER:
const counter = data.counters[token.name || ''];
if (counter) {
s += formatCounterValue([counter[counter.length - 1]], '', token.format);
}
break;
case TOKEN_TYPE.COUNTERS:
const counters = data.counters[token.name || ''];
if (counters) {
s += formatCounterValue(counters, token.glue, token.format);
}
break;
case TOKEN_TYPE.OPENQUOTE:
s += getQuote(style, true, data.quoteDepth);
data.quoteDepth++;
break;
case TOKEN_TYPE.CLOSEQUOTE:
data.quoteDepth--;
s += getQuote(style, false, data.quoteDepth);
break;
case TOKEN_TYPE.URL:
if (s) {
contentItems.push({type: PSEUDO_CONTENT_ITEM_TYPE.TEXT, value: s});
s = '';
}
contentItems.push({type: PSEUDO_CONTENT_ITEM_TYPE.IMAGE, value: token.value || ''});
break;
}
}
if (s) {
contentItems.push({type: PSEUDO_CONTENT_ITEM_TYPE.TEXT, value: s});
}
return contentItems;
};
export const parseContent = (content: string, cache?: {[string]: Array<Token>}): Array<Token> => {
if (cache && cache[content]) {
return cache[content];
}
const tokens: Array<Token> = [];
const len = content.length;
let isString = false;
let isEscaped = false;
let isFunction = false;
let str = '';
let functionName = '';
let args = [];
for (let i = 0; i < len; i++) {
const c = content.charAt(i);
switch (c) {
case "'":
case '"':
if (isEscaped) {
str += c;
} else {
isString = !isString;
if (!isFunction && !isString) {
tokens.push({type: TOKEN_TYPE.STRING, value: str});
str = '';
}
}
break;
case '\\':
if (isEscaped) {
str += c;
isEscaped = false;
} else {
isEscaped = true;
}
break;
case '(':
if (isString) {
str += c;
} else {
isFunction = true;
functionName = str;
str = '';
args = [];
}
break;
case ')':
if (isString) {
str += c;
} else if (isFunction) {
if (str) {
args.push(str);
}
switch (functionName) {
case 'attr':
if (args.length > 0) {
tokens.push({type: TOKEN_TYPE.ATTRIBUTE, value: args[0]});
}
break;
case 'counter':
if (args.length > 0) {
const counter: Token = {
type: TOKEN_TYPE.COUNTER,
name: args[0]
};
if (args.length > 1) {
counter.format = args[1];
}
tokens.push(counter);
}
break;
case 'counters':
if (args.length > 0) {
const counters: Token = {
type: TOKEN_TYPE.COUNTERS,
name: args[0]
};
if (args.length > 1) {
counters.glue = args[1];
}
if (args.length > 2) {
counters.format = args[2];
}
tokens.push(counters);
}
break;
case 'url':
if (args.length > 0) {
tokens.push({type: TOKEN_TYPE.URL, value: args[0]});
}
break;
}
isFunction = false;
str = '';
}
break;
case ',':
if (isString) {
str += c;
} else if (isFunction) {
args.push(str);
str = '';
}
break;
case ' ':
case '\t':
if (isString) {
str += c;
} else if (str) {
addOtherToken(tokens, str);
str = '';
}
break;
default:
str += c;
}
if (c !== '\\') {
isEscaped = false;
}
}
if (str) {
addOtherToken(tokens, str);
}
if (cache) {
cache[content] = tokens;
}
return tokens;
};
const addOtherToken = (tokens: Array<Token>, identifier: string): void => {
switch (identifier) {
case 'open-quote':
tokens.push({type: TOKEN_TYPE.OPENQUOTE});
break;
case 'close-quote':
tokens.push({type: TOKEN_TYPE.CLOSEQUOTE});
break;
}
};
const getQuote = (style: CSSStyleDeclaration, isOpening: boolean, quoteDepth: number): string => {
const quotes = style.quotes ? style.quotes.split(/\s+/) : ["'\"'", "'\"'"];
let idx = quoteDepth * 2;
if (idx >= quotes.length) {
idx = quotes.length - 2;
}
if (!isOpening) {
++idx;
}
return quotes[idx].replace(/^["']|["']$/g, '');
};
const formatCounterValue = (counter, glue: ?string, format: ?string): string => {
const len = counter.length;
let result = '';
for (let i = 0; i < len; i++) {
if (i > 0) {
result += glue || '';
}
result += createCounterText(counter[i], parseListStyleType(format || 'decimal'), false);
}
return result;
};

View File

@ -14,29 +14,24 @@ import type {TextShadow} from './parsing/textShadow';
import type {Matrix} from './parsing/transform';
import type {BoundCurves} from './Bounds';
import type {Gradient} from './Gradient';
import type {LinearGradient, RadialGradient} from './Gradient';
import type {ResourceStore, ImageElement} from './ResourceLoader';
import type NodeContainer from './NodeContainer';
import type StackingContext from './StackingContext';
import type {TextBounds} from './TextBounds';
import {
Bounds,
parsePathForBorder,
calculateContentBox,
calculatePaddingBox,
calculatePaddingBoxPath
} from './Bounds';
import {Bounds, parsePathForBorder, calculateContentBox, calculatePaddingBoxPath} from './Bounds';
import {FontMetrics} from './Font';
import {parseGradient} from './Gradient';
import {parseGradient, GRADIENT_TYPE} from './Gradient';
import TextContainer from './TextContainer';
import {
BACKGROUND_ORIGIN,
calculateBackgroungPositioningArea,
calculateBackgroungPaintingArea,
calculateBackgroundPosition,
calculateBackgroundRepeatPath,
calculateBackgroundSize
calculateBackgroundSize,
calculateGradientBackgroundSize
} from './parsing/background';
import {BORDER_STYLE} from './parsing/border';
@ -67,7 +62,9 @@ export interface RenderTarget<Output> {
render(options: RenderOptions): void,
renderLinearGradient(bounds: Bounds, gradient: Gradient): void,
renderLinearGradient(bounds: Bounds, gradient: LinearGradient): void,
renderRadialGradient(bounds: Bounds, gradient: RadialGradient): void,
renderRepeat(
path: Path,
@ -208,12 +205,8 @@ export default class Renderer {
container.style.background.backgroundImage.slice(0).reverse().forEach(backgroundImage => {
if (backgroundImage.source.method === 'url' && backgroundImage.source.args.length) {
this.renderBackgroundRepeat(container, backgroundImage);
} else {
const gradient = parseGradient(backgroundImage.source, container.bounds);
if (gradient) {
const bounds = container.bounds;
this.target.renderLinearGradient(bounds, gradient);
}
} else if (/gradient/i.test(backgroundImage.source.method)) {
this.renderBackgroundGradient(container, backgroundImage);
}
});
}
@ -221,16 +214,17 @@ export default class Renderer {
renderBackgroundRepeat(container: NodeContainer, background: BackgroundImage) {
const image = this.options.imageStore.get(background.source.args[0]);
if (image) {
const bounds = container.bounds;
const paddingBox = calculatePaddingBox(bounds, container.style.border);
const backgroundImageSize = calculateBackgroundSize(background, image, bounds);
// TODO support CONTENT_BOX
const backgroundPositioningArea =
container.style.background.backgroundOrigin === BACKGROUND_ORIGIN.BORDER_BOX
? bounds
: paddingBox;
const backgroundPositioningArea = calculateBackgroungPositioningArea(
container.style.background.backgroundOrigin,
container.bounds,
container.style.padding,
container.style.border
);
const backgroundImageSize = calculateBackgroundSize(
background,
image,
backgroundPositioningArea
);
const position = calculateBackgroundPosition(
background.position,
backgroundImageSize,
@ -241,15 +235,53 @@ export default class Renderer {
position,
backgroundImageSize,
backgroundPositioningArea,
bounds
container.bounds
);
const offsetX = Math.round(paddingBox.left + position.x);
const offsetY = Math.round(paddingBox.top + position.y);
const offsetX = Math.round(backgroundPositioningArea.left + position.x);
const offsetY = Math.round(backgroundPositioningArea.top + position.y);
this.target.renderRepeat(path, image, backgroundImageSize, offsetX, offsetY);
}
}
renderBackgroundGradient(container: NodeContainer, background: BackgroundImage) {
const backgroundPositioningArea = calculateBackgroungPositioningArea(
container.style.background.backgroundOrigin,
container.bounds,
container.style.padding,
container.style.border
);
const backgroundImageSize = calculateGradientBackgroundSize(
background,
backgroundPositioningArea
);
const position = calculateBackgroundPosition(
background.position,
backgroundImageSize,
backgroundPositioningArea
);
const gradientBounds = new Bounds(
Math.round(backgroundPositioningArea.left + position.x),
Math.round(backgroundPositioningArea.top + position.y),
backgroundImageSize.width,
backgroundImageSize.height
);
const gradient = parseGradient(container, background.source, gradientBounds);
if (gradient) {
switch (gradient.type) {
case GRADIENT_TYPE.LINEAR_GRADIENT:
// $FlowFixMe
this.target.renderLinearGradient(gradientBounds, gradient);
break;
case GRADIENT_TYPE.RADIAL_GRADIENT:
// $FlowFixMe
this.target.renderRadialGradient(gradientBounds, gradient);
break;
}
}
}
renderBorder(border: Border, side: BorderSide, curvePoints: BoundCurves) {
this.target.drawShape(parsePathForBorder(curvePoints, side), border.borderColor);
}
@ -321,8 +353,8 @@ export default class Renderer {
render(stack: StackingContext): Promise<*> {
if (this.options.backgroundColor) {
this.target.rectangle(
0,
0,
this.options.x,
this.options.y,
this.options.width,
this.options.height,
this.options.backgroundColor

View File

@ -34,16 +34,8 @@ export default class ResourceLoader {
return src;
}
if (isSVG(src)) {
if (this.options.allowTaint === true || FEATURES.SUPPORT_SVG_DRAWING) {
return this.addImage(src, src, false);
}
} else {
if (
this.options.allowTaint === true ||
isInlineBase64Image(src) ||
this.isSameOrigin(src)
) {
if (!isSVG(src) || FEATURES.SUPPORT_SVG_DRAWING) {
if (this.options.allowTaint === true || isInlineImage(src) || this.isSameOrigin(src)) {
return this.addImage(src, src, false);
} else if (!this.isSameOrigin(src)) {
if (typeof this.options.proxy === 'string') {

32
src/Unicode.js Normal file
View File

@ -0,0 +1,32 @@
/* @flow */
'use strict';
export const fromCodePoint = (...codePoints: Array<number>): string => {
if (String.fromCodePoint) {
return String.fromCodePoint(...codePoints);
}
const length = codePoints.length;
if (!length) {
return '';
}
const codeUnits = [];
let index = -1;
let result = '';
while (++index < length) {
let codePoint = codePoints[index];
if (codePoint <= 0xffff) {
codeUnits.push(codePoint);
} else {
codePoint -= 0x10000;
codeUnits.push((codePoint >> 10) + 0xd800, codePoint % 0x400 + 0xdc00);
}
if (index + 1 === length || codeUnits.length > 0x4000) {
result += String.fromCharCode(...codeUnits);
codeUnits.length = 0;
}
}
return result;
};

View File

@ -3,6 +3,8 @@
export const contains = (bit: number, value: number): boolean => (bit & value) !== 0;
export const distance = (a: number, b: number): number => Math.sqrt(a * a + b * b);
export const copyCSSStyles = (style: CSSStyleDeclaration, target: HTMLElement): HTMLElement => {
// Edge does not provide value for cssText
for (let i = style.length - 1; i >= 0; i--) {

View File

@ -97,16 +97,6 @@ export const renderElement = (
}
return resourceLoader.ready().then(imageStore => {
if (options.removeContainer === true) {
if (container.parentNode) {
container.parentNode.removeChild(container);
} else if (__DEV__) {
logger.log(
`Cannot detach cloned iframe as it is not in the DOM anymore`
);
}
}
const fontMetrics = new FontMetrics(clonedDocument);
if (__DEV__) {
logger.log(`Starting renderer`);
@ -133,7 +123,18 @@ export const renderElement = (
);
} else {
const renderer = new Renderer(options.target, renderOptions);
return renderer.render(stack);
const canvas = renderer.render(stack);
if (options.removeContainer === true) {
if (container.parentNode) {
container.parentNode.removeChild(container);
} else if (__DEV__) {
logger.log(
`Cannot detach cloned iframe as it is not in the DOM anymore`
);
}
}
return canvas;
}
});
})

View File

@ -15,10 +15,12 @@ export type Options = {
canvas: ?HTMLCanvasElement,
foreignObjectRendering: boolean,
imageTimeout: number,
logging: boolean,
proxy: ?string,
removeContainer: ?boolean,
scale: number,
target: RenderTarget<*>,
useCORS: boolean,
width: number,
height: number,
x: number,
@ -37,7 +39,13 @@ const html2canvas = (element: HTMLElement, conf: ?Options): Promise<*> => {
}
const config = conf || {};
const logger = new Logger();
const logger = new Logger(typeof config.logging === 'boolean' ? config.logging : true);
if (__DEV__ && typeof config.onrendered === 'function') {
logger.error(
`onrendered option is deprecated, html2canvas returns a Promise with the canvas as the value`
);
}
const ownerDocument = element.ownerDocument;
if (!ownerDocument) {
@ -57,12 +65,15 @@ const html2canvas = (element: HTMLElement, conf: ?Options): Promise<*> => {
const defaultOptions = {
async: true,
allowTaint: false,
backgroundColor: '#ffffff',
imageTimeout: 15000,
logging: true,
proxy: null,
removeContainer: true,
foreignObjectRendering: true,
foreignObjectRendering: false,
scale: defaultView.devicePixelRatio || 1,
target: new CanvasRenderer(config.canvas),
useCORS: false,
x: left,
y: top,
width: Math.ceil(width),

View File

@ -1,14 +1,22 @@
/* @flow */
'use strict';
import type {Path} from '../drawing/Path';
import type {Bounds, BoundCurves} from '../Bounds';
import type {BoundCurves} from '../Bounds';
import type ResourceLoader, {ImageElement} from '../ResourceLoader';
import type {Border} from './border';
import type {Padding} from './padding';
import Color from '../Color';
import Length from '../Length';
import Size from '../drawing/Size';
import Vector from '../drawing/Vector';
import {calculateBorderBoxPath, calculatePaddingBoxPath} from '../Bounds';
import {
calculateBorderBoxPath,
calculatePaddingBoxPath,
calculatePaddingBox,
Bounds
} from '../Bounds';
import {PADDING_SIDES} from './padding';
export type Background = {
backgroundImage: Array<BackgroundImage>,
@ -115,13 +123,25 @@ export const calculateBackgroundSize = (
return new Size(width, height);
};
export const calculateGradientBackgroundSize = (
backgroundImage: BackgroundImage,
bounds: Bounds
): Size => {
const size = backgroundImage.size;
const width = size[0].value ? size[0].value.getAbsoluteValue(bounds.width) : bounds.width;
const height = size[1].value
? size[1].value.getAbsoluteValue(bounds.height)
: size[0].value ? width : bounds.height;
return new Size(width, height);
};
const AUTO_SIZE = new BackgroundSize(AUTO);
export const calculateBackgroungPaintingArea = (
curves: BoundCurves,
clip: BackgroundClip
): Path => {
// TODO support CONTENT_BOX
switch (clip) {
case BACKGROUND_CLIP.BORDER_BOX:
return calculateBorderBoxPath(curves);
@ -131,6 +151,34 @@ export const calculateBackgroungPaintingArea = (
}
};
export const calculateBackgroungPositioningArea = (
backgroundOrigin: BackgroundOrigin,
bounds: Bounds,
padding: Padding,
border: Array<Border>
): Bounds => {
const paddingBox = calculatePaddingBox(bounds, border);
switch (backgroundOrigin) {
case BACKGROUND_ORIGIN.BORDER_BOX:
return bounds;
case BACKGROUND_ORIGIN.CONTENT_BOX:
const paddingLeft = padding[PADDING_SIDES.LEFT].getAbsoluteValue(bounds.width);
const paddingRight = padding[PADDING_SIDES.RIGHT].getAbsoluteValue(bounds.width);
const paddingTop = padding[PADDING_SIDES.TOP].getAbsoluteValue(bounds.width);
const paddingBottom = padding[PADDING_SIDES.BOTTOM].getAbsoluteValue(bounds.width);
return new Bounds(
paddingBox.left + paddingLeft,
paddingBox.top + paddingTop,
paddingBox.width - paddingLeft - paddingRight,
paddingBox.height - paddingTop - paddingBottom
);
case BACKGROUND_ORIGIN.PADDING_BOX:
default:
return paddingBox;
}
};
export const calculateBackgroundPosition = (
position: [Length, Length],
size: Size,

View File

@ -5,6 +5,6 @@ export const parseLetterSpacing = (letterSpacing: string): number => {
if (letterSpacing === 'normal') {
return 0;
}
const value = parseInt(letterSpacing, 10);
const value = parseFloat(letterSpacing);
return isNaN(value) ? 0 : value;
};

209
src/parsing/listStyle.js Normal file
View File

@ -0,0 +1,209 @@
/* @flow */
'use strict';
import type {BackgroundSource} from './background';
import {parseBackgroundImage} from './background';
export type ListStyle = {
listStyleType: ListStyleType,
listStyleImage: ?BackgroundSource,
listStylePosition: ListStylePosition
};
export const LIST_STYLE_POSITION = {
INSIDE: 0,
OUTSIDE: 1
};
export const LIST_STYLE_TYPE = {
NONE: -1,
DISC: 0,
CIRCLE: 1,
SQUARE: 2,
DECIMAL: 3,
CJK_DECIMAL: 4,
DECIMAL_LEADING_ZERO: 5,
LOWER_ROMAN: 6,
UPPER_ROMAN: 7,
LOWER_GREEK: 8,
LOWER_ALPHA: 9,
UPPER_ALPHA: 10,
ARABIC_INDIC: 11,
ARMENIAN: 12,
BENGALI: 13,
CAMBODIAN: 14,
CJK_EARTHLY_BRANCH: 15,
CJK_HEAVENLY_STEM: 16,
CJK_IDEOGRAPHIC: 17,
DEVANAGARI: 18,
ETHIOPIC_NUMERIC: 19,
GEORGIAN: 20,
GUJARATI: 21,
GURMUKHI: 22,
HEBREW: 22,
HIRAGANA: 23,
HIRAGANA_IROHA: 24,
JAPANESE_FORMAL: 25,
JAPANESE_INFORMAL: 26,
KANNADA: 27,
KATAKANA: 28,
KATAKANA_IROHA: 29,
KHMER: 30,
KOREAN_HANGUL_FORMAL: 31,
KOREAN_HANJA_FORMAL: 32,
KOREAN_HANJA_INFORMAL: 33,
LAO: 34,
LOWER_ARMENIAN: 35,
MALAYALAM: 36,
MONGOLIAN: 37,
MYANMAR: 38,
ORIYA: 39,
PERSIAN: 40,
SIMP_CHINESE_FORMAL: 41,
SIMP_CHINESE_INFORMAL: 42,
TAMIL: 43,
TELUGU: 44,
THAI: 45,
TIBETAN: 46,
TRAD_CHINESE_FORMAL: 47,
TRAD_CHINESE_INFORMAL: 48,
UPPER_ARMENIAN: 49,
DISCLOSURE_OPEN: 50,
DISCLOSURE_CLOSED: 51
};
export type ListStylePosition = $Values<typeof LIST_STYLE_POSITION>;
export type ListStyleType = $Values<typeof LIST_STYLE_TYPE>;
export const parseListStyleType = (type: string): ListStyleType => {
switch (type) {
case 'disc':
return LIST_STYLE_TYPE.DISC;
case 'circle':
return LIST_STYLE_TYPE.CIRCLE;
case 'square':
return LIST_STYLE_TYPE.SQUARE;
case 'decimal':
return LIST_STYLE_TYPE.DECIMAL;
case 'cjk-decimal':
return LIST_STYLE_TYPE.CJK_DECIMAL;
case 'decimal-leading-zero':
return LIST_STYLE_TYPE.DECIMAL_LEADING_ZERO;
case 'lower-roman':
return LIST_STYLE_TYPE.LOWER_ROMAN;
case 'upper-roman':
return LIST_STYLE_TYPE.UPPER_ROMAN;
case 'lower-greek':
return LIST_STYLE_TYPE.LOWER_GREEK;
case 'lower-alpha':
return LIST_STYLE_TYPE.LOWER_ALPHA;
case 'upper-alpha':
return LIST_STYLE_TYPE.UPPER_ALPHA;
case 'arabic-indic':
return LIST_STYLE_TYPE.ARABIC_INDIC;
case 'armenian':
return LIST_STYLE_TYPE.ARMENIAN;
case 'bengali':
return LIST_STYLE_TYPE.BENGALI;
case 'cambodian':
return LIST_STYLE_TYPE.CAMBODIAN;
case 'cjk-earthly-branch':
return LIST_STYLE_TYPE.CJK_EARTHLY_BRANCH;
case 'cjk-heavenly-stem':
return LIST_STYLE_TYPE.CJK_HEAVENLY_STEM;
case 'cjk-ideographic':
return LIST_STYLE_TYPE.CJK_IDEOGRAPHIC;
case 'devanagari':
return LIST_STYLE_TYPE.DEVANAGARI;
case 'ethiopic-numeric':
return LIST_STYLE_TYPE.ETHIOPIC_NUMERIC;
case 'georgian':
return LIST_STYLE_TYPE.GEORGIAN;
case 'gujarati':
return LIST_STYLE_TYPE.GUJARATI;
case 'gurmukhi':
return LIST_STYLE_TYPE.GURMUKHI;
case 'hebrew':
return LIST_STYLE_TYPE.HEBREW;
case 'hiragana':
return LIST_STYLE_TYPE.HIRAGANA;
case 'hiragana-iroha':
return LIST_STYLE_TYPE.HIRAGANA_IROHA;
case 'japanese-formal':
return LIST_STYLE_TYPE.JAPANESE_FORMAL;
case 'japanese-informal':
return LIST_STYLE_TYPE.JAPANESE_INFORMAL;
case 'kannada':
return LIST_STYLE_TYPE.KANNADA;
case 'katakana':
return LIST_STYLE_TYPE.KATAKANA;
case 'katakana-iroha':
return LIST_STYLE_TYPE.KATAKANA_IROHA;
case 'khmer':
return LIST_STYLE_TYPE.KHMER;
case 'korean-hangul-formal':
return LIST_STYLE_TYPE.KOREAN_HANGUL_FORMAL;
case 'korean-hanja-formal':
return LIST_STYLE_TYPE.KOREAN_HANJA_FORMAL;
case 'korean-hanja-informal':
return LIST_STYLE_TYPE.KOREAN_HANJA_INFORMAL;
case 'lao':
return LIST_STYLE_TYPE.LAO;
case 'lower-armenian':
return LIST_STYLE_TYPE.LOWER_ARMENIAN;
case 'malayalam':
return LIST_STYLE_TYPE.MALAYALAM;
case 'mongolian':
return LIST_STYLE_TYPE.MONGOLIAN;
case 'myanmar':
return LIST_STYLE_TYPE.MYANMAR;
case 'oriya':
return LIST_STYLE_TYPE.ORIYA;
case 'persian':
return LIST_STYLE_TYPE.PERSIAN;
case 'simp-chinese-formal':
return LIST_STYLE_TYPE.SIMP_CHINESE_FORMAL;
case 'simp-chinese-informal':
return LIST_STYLE_TYPE.SIMP_CHINESE_INFORMAL;
case 'tamil':
return LIST_STYLE_TYPE.TAMIL;
case 'telugu':
return LIST_STYLE_TYPE.TELUGU;
case 'thai':
return LIST_STYLE_TYPE.THAI;
case 'tibetan':
return LIST_STYLE_TYPE.TIBETAN;
case 'trad-chinese-formal':
return LIST_STYLE_TYPE.TRAD_CHINESE_FORMAL;
case 'trad-chinese-informal':
return LIST_STYLE_TYPE.TRAD_CHINESE_INFORMAL;
case 'upper-armenian':
return LIST_STYLE_TYPE.UPPER_ARMENIAN;
case 'disclosure-open':
return LIST_STYLE_TYPE.DISCLOSURE_OPEN;
case 'disclosure-closed':
return LIST_STYLE_TYPE.DISCLOSURE_CLOSED;
case 'none':
default:
return LIST_STYLE_TYPE.NONE;
}
};
export const parseListStyle = (style: CSSStyleDeclaration): ListStyle => {
const listStyleImage = parseBackgroundImage(style.getPropertyValue('list-style-image'));
return {
listStyleType: parseListStyleType(style.getPropertyValue('list-style-type')),
listStyleImage: listStyleImage.length ? listStyleImage[0] : null,
listStylePosition: parseListStylePosition(style.getPropertyValue('list-style-position'))
};
};
const parseListStylePosition = (position: string): ListStylePosition => {
switch (position) {
case 'inside':
return LIST_STYLE_POSITION.INSIDE;
case 'outside':
default:
return LIST_STYLE_POSITION.OUTSIDE;
}
};

11
src/parsing/margin.js Normal file
View File

@ -0,0 +1,11 @@
/* @flow */
'use strict';
import Length from '../Length';
const SIDES = ['top', 'right', 'bottom', 'left'];
export type Margin = Array<Length>;
export const parseMargin = (style: CSSStyleDeclaration): Margin => {
return SIDES.map(side => new Length(style.getPropertyValue(`margin-${side}`)));
};

View File

@ -2,6 +2,13 @@
'use strict';
import Length from '../Length';
export const PADDING_SIDES = {
TOP: 0,
RIGHT: 1,
BOTTOM: 2,
LEFT: 3
};
const SIDES = ['top', 'right', 'bottom', 'left'];
export type Padding = Array<Length>;

View File

@ -13,12 +13,23 @@ import type {Matrix} from '../parsing/transform';
import type {Bounds} from '../Bounds';
import type {ImageElement} from '../ResourceLoader';
import type {Gradient} from '../Gradient';
import type {LinearGradient, RadialGradient} from '../Gradient';
import type {TextBounds} from '../TextBounds';
import {PATH} from '../drawing/Path';
import {TEXT_DECORATION_LINE} from '../parsing/textDecoration';
const addColorStops = (
gradient: LinearGradient | RadialGradient,
canvasGradient: CanvasGradient
): void => {
const maxStop = Math.max.apply(null, gradient.colorStops.map(colorStop => colorStop.stop));
const f = 1 / Math.max(1, maxStop);
gradient.colorStops.forEach(colorStop => {
canvasGradient.addColorStop(f * colorStop.stop, colorStop.color.toString());
});
};
export default class CanvasRenderer implements RenderTarget<HTMLCanvasElement> {
canvas: HTMLCanvasElement;
ctx: CanvasRenderingContext2D;
@ -131,7 +142,7 @@ export default class CanvasRenderer implements RenderTarget<HTMLCanvasElement> {
this.ctx.fillRect(x, y, width, height);
}
renderLinearGradient(bounds: Bounds, gradient: Gradient) {
renderLinearGradient(bounds: Bounds, gradient: LinearGradient) {
const linearGradient = this.ctx.createLinearGradient(
bounds.left + gradient.direction.x1,
bounds.top + gradient.direction.y1,
@ -139,14 +150,43 @@ export default class CanvasRenderer implements RenderTarget<HTMLCanvasElement> {
bounds.top + gradient.direction.y0
);
gradient.colorStops.forEach(colorStop => {
linearGradient.addColorStop(colorStop.stop, colorStop.color.toString());
});
addColorStops(gradient, linearGradient);
this.ctx.fillStyle = linearGradient;
this.ctx.fillRect(bounds.left, bounds.top, bounds.width, bounds.height);
}
renderRadialGradient(bounds: Bounds, gradient: RadialGradient) {
const x = bounds.left + gradient.center.x;
const y = bounds.top + gradient.center.y;
const radialGradient = this.ctx.createRadialGradient(x, y, 0, x, y, gradient.radius.x);
if (!radialGradient) {
return;
}
addColorStops(gradient, radialGradient);
this.ctx.fillStyle = radialGradient;
if (gradient.radius.x !== gradient.radius.y) {
// transforms for elliptical radial gradient
const midX = bounds.left + 0.5 * bounds.width;
const midY = bounds.top + 0.5 * bounds.height;
const f = gradient.radius.y / gradient.radius.x;
const invF = 1 / f;
this.transform(midX, midY, [1, 0, 0, f, 0, 0], () =>
this.ctx.fillRect(
bounds.left,
invF * (bounds.top - midY) + midY,
bounds.width,
bounds.height * invF
)
);
} else {
this.ctx.fillRect(bounds.left, bounds.top, bounds.width, bounds.height);
}
}
renderRepeat(
path: Path,
image: ImageElement,
@ -174,9 +214,7 @@ export default class CanvasRenderer implements RenderTarget<HTMLCanvasElement> {
font.fontWeight,
font.fontSize,
font.fontFamily
]
.join(' ')
.split(',')[0];
].join(' ');
textBounds.forEach(text => {
this.ctx.fillStyle = color.toString();
@ -212,7 +250,7 @@ export default class CanvasRenderer implements RenderTarget<HTMLCanvasElement> {
const {baseline} = this.options.fontMetrics.getMetrics(font);
this.rectangle(
text.bounds.left,
Math.round(text.bounds.top + baseline),
Math.round(text.bounds.top + text.bounds.height - baseline),
text.bounds.width,
1,
textDecorationColor

View File

@ -18,7 +18,7 @@ import type {Matrix} from '../parsing/transform';
import type {Bounds} from '../Bounds';
import type {ImageElement} from '../ResourceLoader';
import type {Gradient} from '../Gradient';
import type {LinearGradient, RadialGradient} from '../Gradient';
import type {TextBounds} from '../TextBounds';
import {TEXT_DECORATION_STYLE, TEXT_DECORATION_LINE} from '../parsing/textDecoration';
@ -110,7 +110,7 @@ class RefTestRenderer implements RenderTarget<string> {
return `Path (${string})`;
}
renderLinearGradient(bounds: Bounds, gradient: Gradient) {
renderLinearGradient(bounds: Bounds, gradient: LinearGradient) {
const direction = [
`x0: ${Math.round(gradient.direction.x0)}`,
`x1: ${Math.round(gradient.direction.x1)}`,
@ -129,6 +129,19 @@ class RefTestRenderer implements RenderTarget<string> {
);
}
renderRadialGradient(bounds: Bounds, gradient: RadialGradient) {
const stops = gradient.colorStops.map(
stop => `${stop.color.toString()} ${Math.ceil(stop.stop * 100) / 100}`
);
this.writeLine(
`RadialGradient: ${this.formatBounds(bounds)} radial-gradient(${gradient.radius
.x} ${gradient.radius.y} at ${gradient.center.x} ${gradient.center.y}, ${stops.join(
', '
)})`
);
}
renderRepeat(
path: Path,
image: ImageElement,

151
tests/node/gradient.js Normal file
View File

@ -0,0 +1,151 @@
const Gradient = require('../../dist/npm/Gradient');
const assert = require('assert');
describe('Gradient', () => {
describe('transformWebkitRadialGradientArgs', () => {
it('white, black', () => {
assert.equal(Gradient.transformWebkitRadialGradientArgs(['white', 'black'])[0], '');
});
it('circle, white, black', () => {
assert.equal(
Gradient.transformWebkitRadialGradientArgs(['circle', 'white', 'black'])[0],
'circle'
);
});
it('10% 30%, white, black', () => {
assert.equal(
Gradient.transformWebkitRadialGradientArgs(['10% 30%', 'white', 'black'])[0],
'10% 30%'
);
});
it('30% 30%, closest-corner, white, black', () => {
assert.equal(
Gradient.transformWebkitRadialGradientArgs([
'30% 30%',
'closest-corner',
'white',
'black'
])[0],
'closest-corner at 30% 30%'
);
});
it('30% 30%, circle closest-corner, white, black', () => {
assert.equal(
Gradient.transformWebkitRadialGradientArgs([
'30% 30%',
'circle closest-corner',
'white',
'black'
])[0],
'circle closest-corner at 30% 30%'
);
});
it('center, 5em 40px, white, black', () => {
assert.equal(
Gradient.transformWebkitRadialGradientArgs([
'center',
'5em 40px',
'white',
'black'
])[0],
'5em 40px at center'
);
});
it('45 45, 10, 52 50, 30, from(#A7D30C), to(red)', () => {
assert.equal(
Gradient.transformWebkitRadialGradientArgs([
'45 45',
'10',
'52 50',
'30',
'from(#A7D30C)'
])[0],
'30px at 52px 50px'
);
});
it('75% 19%, ellipse closest-side, #ababab, #0000ff 33%,#991f1f 100%', () => {
assert.equal(
Gradient.transformWebkitRadialGradientArgs([
'75% 19%',
'ellipse closest-side',
'#ababab',
'#0000ff 33%',
'#991f1f 100%'
])[0],
'ellipse closest-side at 75% 19%'
);
});
it('75% 19%, circle contain, #ababab, #0000ff 33%,#991f1f 100%', () => {
assert.equal(
Gradient.transformWebkitRadialGradientArgs([
'75% 19%',
'circle contain',
'#ababab',
'#0000ff 33%',
'#991f1f 100%'
])[0],
'circle closest-side at 75% 19%'
);
});
it('75% 19%, circle cover, #ababab, #0000ff 33%,#991f1f 100%', () => {
assert.equal(
Gradient.transformWebkitRadialGradientArgs([
'75% 19%',
'circle cover',
'#ababab',
'#0000ff 33%',
'#991f1f 100%'
])[0],
'circle farthest-corner at 75% 19%'
);
});
it('right 19%, ellipse cover, #ababab, #0000ff 33%,#991f1f 100%', () => {
assert.equal(
Gradient.transformWebkitRadialGradientArgs([
'right 19%',
'ellipse cover',
'#ababab',
'#0000ff 33%',
'#991f1f 100%'
])[0],
'ellipse farthest-corner at right 19%'
);
});
it('left 19%, ellipse cover, #ababab, #0000ff 33%,#991f1f 100%', () => {
assert.equal(
Gradient.transformWebkitRadialGradientArgs([
'left 19%',
'ellipse cover',
'#ababab',
'#0000ff 33%',
'#991f1f 100%'
])[0],
'ellipse farthest-corner at left 19%'
);
});
it('left top, circle cover, #ababab, #0000ff 33%,#991f1f 100%', () => {
assert.equal(
Gradient.transformWebkitRadialGradientArgs([
'left top',
'circle cover',
'#ababab',
'#0000ff 33%',
'#991f1f 100%'
])[0],
'circle farthest-corner at left top'
);
});
});
});

View File

@ -0,0 +1,111 @@
const PseudoNodeContent = require('../../dist/npm/PseudoNodeContent');
const assert = require('assert');
describe('PseudoNodeContent', function() {
it('should parse string', function() {
assert.deepEqual(PseudoNodeContent.parseContent('"hello"'), [
{type: PseudoNodeContent.TOKEN_TYPE.STRING, value: 'hello'}
]);
});
it('should parse string with (,)', function() {
assert.deepEqual(PseudoNodeContent.parseContent('"a,b (c) d"'), [
{type: PseudoNodeContent.TOKEN_TYPE.STRING, value: 'a,b (c) d'}
]);
});
it('should parse string with escaped quotes', function() {
assert.deepEqual(PseudoNodeContent.parseContent('"3.14\\""'), [
{type: PseudoNodeContent.TOKEN_TYPE.STRING, value: '3.14"'}
]);
});
it('should parse string with escape', function() {
assert.deepEqual(PseudoNodeContent.parseContent('"a\\) \\\\ b"'), [
{type: PseudoNodeContent.TOKEN_TYPE.STRING, value: 'a) \\ b'}
]);
});
it('should parse two strings', function() {
assert.deepEqual(PseudoNodeContent.parseContent('"hello" \'world\''), [
{type: PseudoNodeContent.TOKEN_TYPE.STRING, value: 'hello'},
{type: PseudoNodeContent.TOKEN_TYPE.STRING, value: 'world'}
]);
});
it('should parse counter', function() {
assert.deepEqual(PseudoNodeContent.parseContent('counter(x)'), [
{type: PseudoNodeContent.TOKEN_TYPE.COUNTER, name: 'x'}
]);
});
it('should parse counters', function() {
assert.deepEqual(PseudoNodeContent.parseContent('counters(x, "-")'), [
{type: PseudoNodeContent.TOKEN_TYPE.COUNTERS, name: 'x', glue: '-'}
]);
});
it('should parse strings and counters', function() {
assert.deepEqual(PseudoNodeContent.parseContent('"["counters(c2, " < ") \']\''), [
{type: PseudoNodeContent.TOKEN_TYPE.STRING, value: '['},
{type: PseudoNodeContent.TOKEN_TYPE.COUNTERS, name: 'c2', glue: ' < '},
{type: PseudoNodeContent.TOKEN_TYPE.STRING, value: ']'}
]);
});
it('should parse counter with format', function() {
assert.deepEqual(PseudoNodeContent.parseContent('counter(x, lower-greek)'), [
{type: PseudoNodeContent.TOKEN_TYPE.COUNTER, name: 'x', format: 'lower-greek'}
]);
});
it('should parse counters with format', function() {
assert.deepEqual(PseudoNodeContent.parseContent('counters(x, "-", upper-roman)'), [
{
type: PseudoNodeContent.TOKEN_TYPE.COUNTERS,
name: 'x',
glue: '-',
format: 'upper-roman'
}
]);
});
it('should parse strings and counters with format', function() {
assert.deepEqual(PseudoNodeContent.parseContent("\"[\"counters(c2, ' < ', disc) ']'"), [
{type: PseudoNodeContent.TOKEN_TYPE.STRING, value: '['},
{type: PseudoNodeContent.TOKEN_TYPE.COUNTERS, name: 'c2', glue: ' < ', format: 'disc'},
{type: PseudoNodeContent.TOKEN_TYPE.STRING, value: ']'}
]);
});
it('should parse attr', function() {
assert.deepEqual(PseudoNodeContent.parseContent('attr(id)'), [
{type: PseudoNodeContent.TOKEN_TYPE.ATTRIBUTE, value: 'id'}
]);
});
it('should parse url', function() {
assert.deepEqual(PseudoNodeContent.parseContent('url(http://www.abc.de/f/g.png)'), [
{type: PseudoNodeContent.TOKEN_TYPE.URL, value: 'http://www.abc.de/f/g.png'}
]);
});
it('should parse open-quote', function() {
assert.deepEqual(PseudoNodeContent.parseContent('open-quote'), [
{type: PseudoNodeContent.TOKEN_TYPE.OPENQUOTE}
]);
});
it('should parse close-quote', function() {
assert.deepEqual(PseudoNodeContent.parseContent('close-quote'), [
{type: PseudoNodeContent.TOKEN_TYPE.CLOSEQUOTE}
]);
});
it('should parse open-quote and string', function() {
assert.deepEqual(PseudoNodeContent.parseContent('open-quote "!"'), [
{type: PseudoNodeContent.TOKEN_TYPE.OPENQUOTE},
{type: PseudoNodeContent.TOKEN_TYPE.STRING, value: '!'}
]);
});
});

View File

@ -1,145 +0,0 @@
Window: [800, 1496]
Rectangle: [0, 0, 800, 1496] rgb(255,255,255)
Opacity: 1
Clip: Path (Vector(x: 0, y: 0) > Vector(x: 800, y: 0) > Vector(x: 800, y: 1496) > Vector(x: 0, y: 1496))
Clip: Path (Vector(x: 0, y: 0) > Vector(x: 800, y: 0) > Vector(x: 800, y: 1496) > Vector(x: 0, y: 1496))
Clip: Path (Vector(x: 0, y: 0) > Vector(x: 800, y: 0) > Vector(x: 800, y: 1496) > Vector(x: 0, y: 1496))
Clip: Path (Vector(x: 0, y: 0) > Vector(x: 800, y: 0) > Vector(x: 800, y: 1496) > Vector(x: 0, y: 1496))
Clip: Path (Vector(x: 0, y: 0) > Vector(x: 800, y: 0) > Vector(x: 800, y: 1496) > Vector(x: 0, y: 1496))
Clip: Path (Vector(x: 0, y: 0) > Vector(x: 800, y: 0) > Vector(x: 800, y: 1496) > Vector(x: 0, y: 1496))
Clip: Path (Vector(x: 0, y: 0) > Vector(x: 800, y: 0) > Vector(x: 800, y: 1496) > Vector(x: 0, y: 1496))
Clip: Path (Vector(x: 0, y: 0) > Vector(x: 800, y: 0) > Vector(x: 800, y: 1496) > Vector(x: 0, y: 1496))
Clip: Path (Vector(x: 0, y: 0) > Vector(x: 800, y: 0) > Vector(x: 800, y: 1496) > Vector(x: 0, y: 1496))
Clip: Path (Vector(x: 96, y: 130) > Vector(x: 216, y: 130) > Vector(x: 216, y: 142) > Vector(x: 96, y: 142))
Fill: rgb(255,0,0)
Repeat: Image ("/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAIAAACQd1PeAAAADElEQVR42mP4%2F58BAAT%2FAf9jgNErAAAAAElF") [108, 130] Size (1, 1) Path (Vector(x: 96, y: 130) > Vector(x: 216, y: 130) > Vector(x: 216, y: 142) > Vector(x: 96, y: 142))
Shape: rgb(0,0,0) Path (Vector(x: 96, y: 130) > Vector(x: 216, y: 130) > Vector(x: 204, y: 130) > Vector(x: 108, y: 130))
Shape: rgb(0,0,0) Path (Vector(x: 216, y: 130) > Vector(x: 216, y: 142) > Vector(x: 204, y: 142) > Vector(x: 204, y: 130))
Clip: Path (Vector(x: 0, y: 0) > Vector(x: 800, y: 0) > Vector(x: 800, y: 1496) > Vector(x: 0, y: 1496))
Clip: Path (Vector(x: 0, y: 0) > Vector(x: 800, y: 0) > Vector(x: 800, y: 1496) > Vector(x: 0, y: 1496))
Clip: Path (Vector(x: 0, y: 0) > Vector(x: 800, y: 0) > Vector(x: 800, y: 1496) > Vector(x: 0, y: 1496))
Clip: Path (Vector(x: 0, y: 0) > Vector(x: 800, y: 0) > Vector(x: 800, y: 1496) > Vector(x: 0, y: 1496))
Clip: Path (Vector(x: 0, y: 0) > Vector(x: 800, y: 0) > Vector(x: 800, y: 1496) > Vector(x: 0, y: 1496))
Clip: Path (Vector(x: 0, y: 0) > Vector(x: 800, y: 0) > Vector(x: 800, y: 1496) > Vector(x: 0, y: 1496))
Clip: Path (Vector(x: 96, y: 238) > Vector(x: 216, y: 238) > Vector(x: 216, y: 250) > Vector(x: 96, y: 250))
Fill: rgb(255,255,0)
Repeat: Image ("/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAIAAAFSDNYfAAAAaklEQVR42u3XQQrAIAwAQeP%2F%2F6wf8CJBJTK9") [108, 238] Size (64, 64) Path (Vector(x: 108, y: 238) > Vector(x: 172, y: 238) > Vector(x: 172, y: 302) > Vector(x: 108, y: 302))
Shape: rgb(0,0,0) Path (Vector(x: 96, y: 238) > Vector(x: 216, y: 238) > Vector(x: 204, y: 238) > Vector(x: 108, y: 238))
Shape: rgb(0,0,0) Path (Vector(x: 216, y: 238) > Vector(x: 216, y: 250) > Vector(x: 204, y: 250) > Vector(x: 204, y: 238))
Clip: Path (Vector(x: 0, y: 0) > Vector(x: 800, y: 0) > Vector(x: 800, y: 1496) > Vector(x: 0, y: 1496))
Clip: Path (Vector(x: 0, y: 0) > Vector(x: 800, y: 0) > Vector(x: 800, y: 1496) > Vector(x: 0, y: 1496))
Clip: Path (Vector(x: 0, y: 0) > Vector(x: 800, y: 0) > Vector(x: 800, y: 1496) > Vector(x: 0, y: 1496))
Clip: Path (Vector(x: 108, y: 250) > Vector(x: 204, y: 250) > Vector(x: 204, y: 262) > Vector(x: 108, y: 262))
Fill: rgb(255,255,0)
Shape: rgb(0,0,0) Path (Vector(x: 108, y: 250) > Vector(x: 204, y: 250) > Vector(x: 180, y: 250) > Vector(x: 132, y: 250))
Shape: rgb(0,0,0) Path (Vector(x: 204, y: 250) > Vector(x: 204, y: 262) > Vector(x: 180, y: 262) > Vector(x: 180, y: 250))
Shape: rgb(0,0,0) Path (Vector(x: 204, y: 262) > Vector(x: 108, y: 262) > Vector(x: 132, y: 262) > Vector(x: 180, y: 262))
Shape: rgb(0,0,0) Path (Vector(x: 108, y: 262) > Vector(x: 108, y: 250) > Vector(x: 132, y: 250) > Vector(x: 132, y: 262))
Clip: Path (Vector(x: 0, y: 0) > Vector(x: 800, y: 0) > Vector(x: 800, y: 1496) > Vector(x: 0, y: 1496))
Clip: Path (Vector(x: 0, y: 0) > Vector(x: 800, y: 0) > Vector(x: 800, y: 1496) > Vector(x: 0, y: 1496))
Clip: Path (Vector(x: 132, y: 262) > Vector(x: 180, y: 262) > Vector(x: 180, y: 274) > Vector(x: 132, y: 274))
Fill: rgb(255,0,0)
Clip: Path (Vector(x: 0, y: 0) > Vector(x: 800, y: 0) > Vector(x: 800, y: 1496) > Vector(x: 0, y: 1496))
Clip: Path (Vector(x: 0, y: 0) > Vector(x: 800, y: 0) > Vector(x: 800, y: 1496) > Vector(x: 0, y: 1496))
Clip: Path (Vector(x: 132, y: 262) > Vector(x: 144, y: 262) > Vector(x: 144, y: 274) > Vector(x: 132, y: 274))
Fill: rgb(0,0,0)
Clip: Path (Vector(x: 0, y: 0) > Vector(x: 800, y: 0) > Vector(x: 800, y: 1496) > Vector(x: 0, y: 1496))
Clip: Path (Vector(x: 0, y: 0) > Vector(x: 800, y: 0) > Vector(x: 800, y: 1496) > Vector(x: 0, y: 1496))
Clip: Path (Vector(x: 144, y: 262) > Vector(x: 156, y: 262) > Vector(x: 156, y: 274) > Vector(x: 144, y: 274))
Fill: rgb(0,0,0)
Clip: Path (Vector(x: 0, y: 0) > Vector(x: 800, y: 0) > Vector(x: 800, y: 1496) > Vector(x: 0, y: 1496))
Clip: Path (Vector(x: 0, y: 0) > Vector(x: 800, y: 0) > Vector(x: 800, y: 1496) > Vector(x: 0, y: 1496))
Clip: Path (Vector(x: 156, y: 262) > Vector(x: 168, y: 262) > Vector(x: 168, y: 274) > Vector(x: 156, y: 274))
Fill: rgb(0,0,0)
Clip: Path (Vector(x: 0, y: 0) > Vector(x: 800, y: 0) > Vector(x: 800, y: 1496) > Vector(x: 0, y: 1496))
Clip: Path (Vector(x: 0, y: 0) > Vector(x: 800, y: 0) > Vector(x: 800, y: 1496) > Vector(x: 0, y: 1496))
Clip: Path (Vector(x: 168, y: 262) > Vector(x: 180, y: 262) > Vector(x: 180, y: 274) > Vector(x: 168, y: 274))
Fill: rgb(0,0,0)
Clip: Path (Vector(x: 0, y: 0) > Vector(x: 800, y: 0) > Vector(x: 800, y: 1496) > Vector(x: 0, y: 1496))
Clip: Path (Vector(x: 0, y: 0) > Vector(x: 800, y: 0) > Vector(x: 800, y: 1496) > Vector(x: 0, y: 1496)) | Path (Vector(x: 48, y: 274) > Vector(x: 788, y: 274) > Vector(x: 788, y: 284) > Vector(x: 48, y: 284))
Clip: Path (Vector(x: 0, y: 0) > Vector(x: 800, y: 0) > Vector(x: 800, y: 1496) > Vector(x: 0, y: 1496)) | Path (Vector(x: 48, y: 274) > Vector(x: 788, y: 274) > Vector(x: 788, y: 284) > Vector(x: 48, y: 284))
Clip: Path (Vector(x: 0, y: 0) > Vector(x: 800, y: 0) > Vector(x: 800, y: 1496) > Vector(x: 0, y: 1496)) | Path (Vector(x: 48, y: 274) > Vector(x: 788, y: 274) > Vector(x: 788, y: 284) > Vector(x: 48, y: 284))
Clip: Path (Vector(x: 0, y: 0) > Vector(x: 800, y: 0) > Vector(x: 800, y: 1496) > Vector(x: 0, y: 1496)) | Path (Vector(x: 48, y: 274) > Vector(x: 788, y: 274) > Vector(x: 788, y: 284) > Vector(x: 48, y: 284))
Clip: Path (Vector(x: 0, y: 0) > Vector(x: 800, y: 0) > Vector(x: 800, y: 1496) > Vector(x: 0, y: 1496)) | Path (Vector(x: 48, y: 274) > Vector(x: 788, y: 274) > Vector(x: 788, y: 284) > Vector(x: 48, y: 284))
Clip: Path (Vector(x: 0, y: 0) > Vector(x: 800, y: 0) > Vector(x: 800, y: 1496) > Vector(x: 0, y: 1496))
Shape: rgb(0,0,0) Path (Vector(x: 72, y: 166) > Vector(x: 240, y: 166) > Vector(x: 228, y: 166) > Vector(x: 84, y: 166))
Shape: rgb(0,0,0) Path (Vector(x: 240, y: 166) > Vector(x: 240, y: 214) > Vector(x: 228, y: 202) > Vector(x: 228, y: 166))
Shape: rgb(0,0,0) Path (Vector(x: 240, y: 214) > Vector(x: 72, y: 214) > Vector(x: 84, y: 202) > Vector(x: 228, y: 202))
Clip: Path (Vector(x: 0, y: 0) > Vector(x: 800, y: 0) > Vector(x: 800, y: 1496) > Vector(x: 0, y: 1496))
Clip: Path (Vector(x: 0, y: 0) > Vector(x: 800, y: 0) > Vector(x: 800, y: 1496) > Vector(x: 0, y: 1496))
Clip: Path (Vector(x: 84, y: 166) > Vector(x: 228, y: 166) > Vector(x: 228, y: 214) > Vector(x: 84, y: 214))
Fill: rgb(255,255,0)
Clip: Path (Vector(x: 0, y: 0) > Vector(x: 800, y: 0) > Vector(x: 800, y: 1496) > Vector(x: 0, y: 1496))
Clip: Path (Vector(x: 0, y: 0) > Vector(x: 800, y: 0) > Vector(x: 800, y: 1496) > Vector(x: 0, y: 1496))
Clip: Path (Vector(x: 144, y: 178) > Vector(x: 168, y: 178) > Vector(x: 168, y: 202) > Vector(x: 144, y: 202))
Fill: rgb(255,0,0)
Clip: Path (Vector(x: 0, y: 0) > Vector(x: 800, y: 0) > Vector(x: 800, y: 1496) > Vector(x: 0, y: 1496))
Clip: Path (Vector(x: 0, y: 0) > Vector(x: 800, y: 0) > Vector(x: 800, y: 1496) > Vector(x: 0, y: 1496))
Shape: rgb(255,255,0) Path (Vector(x: 144, y: 178) > Vector(x: 168, y: 178) > Vector(x: 156, y: 178) > Vector(x: 156, y: 178))
Shape: rgb(0,0,0) Path (Vector(x: 168, y: 178) > Vector(x: 168, y: 190) > Vector(x: 156, y: 178) > Vector(x: 156, y: 178))
Shape: rgb(255,255,0) Path (Vector(x: 168, y: 190) > Vector(x: 144, y: 190) > Vector(x: 156, y: 178) > Vector(x: 156, y: 178))
Clip: Path (Vector(x: 0, y: 0) > Vector(x: 800, y: 0) > Vector(x: 800, y: 1496) > Vector(x: 0, y: 1496))
Clip: Path (Vector(x: 0, y: 0) > Vector(x: 800, y: 0) > Vector(x: 800, y: 1496) > Vector(x: 0, y: 1496))
Shape: rgb(0,0,0) Path (Vector(x: 144, y: 190) > Vector(x: 168, y: 190) > Vector(x: 156, y: 202) > Vector(x: 156, y: 202))
Shape: rgb(255,255,0) Path (Vector(x: 168, y: 190) > Vector(x: 168, y: 202) > Vector(x: 156, y: 202) > Vector(x: 156, y: 202))
Shape: rgb(255,255,0) Path (Vector(x: 168, y: 202) > Vector(x: 144, y: 202) > Vector(x: 156, y: 202) > Vector(x: 156, y: 202))
Clip: Path (Vector(x: 0, y: 0) > Vector(x: 800, y: 0) > Vector(x: 800, y: 1496) > Vector(x: 0, y: 1496))
Clip: Path (Vector(x: 0, y: 0) > Vector(x: 800, y: 0) > Vector(x: 800, y: 1496) > Vector(x: 0, y: 1496))
Clip: Path (Vector(x: 0, y: 0) > Vector(x: 800, y: 0) > Vector(x: 800, y: 1496) > Vector(x: 0, y: 1496)) | Path (Vector(x: 48, y: 274) > Vector(x: 788, y: 274) > Vector(x: 788, y: 284) > Vector(x: 48, y: 284))
Clip: Path (Vector(x: 48, y: 429) > Vector(x: 112, y: 429) > Vector(x: 112, y: 493) > Vector(x: 48, y: 493))
Draw image: Image ("/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAIAAAFSDNYfAAAAaklEQVR42u3XQQrAIAwAQeP%2F%2F6wf8CJBJTK9") (source: [0, 0, 64, 64]) (destination: [0, 0, 64, 64])
Clip: Path (Vector(x: 0, y: 0) > Vector(x: 800, y: 0) > Vector(x: 800, y: 1496) > Vector(x: 0, y: 1496))
Clip: Path (Vector(x: 132, y: 108) > Vector(x: 180, y: 108) > Vector(x: 180, y: 126) > Vector(x: 132, y: 126))
Fill: rgb(0,0,0)
Shape: rgb(255,255,0) Path (Vector(x: 132, y: 108) > Vector(x: 180, y: 108) > Vector(x: 180, y: 108) > Vector(x: 132, y: 108))
Clip: Path (Vector(x: 0, y: 0) > Vector(x: 800, y: 0) > Vector(x: 800, y: 1496) > Vector(x: 0, y: 1496))
Clip: Path (Vector(x: 0, y: 0) > Vector(x: 800, y: 0) > Vector(x: 800, y: 1496) > Vector(x: 0, y: 1496))
Clip: Path (Vector(x: 132, y: 144) > Vector(x: 180, y: 144) > Vector(x: 180, y: 157) > Vector(x: 132, y: 157))
Fill: rgb(0,0,0)
Shape: rgb(255,0,0) Path (Vector(x: 132, y: 144) > Vector(x: 180, y: 144) > Vector(x: 180, y: 144) > Vector(x: 132, y: 144))
Clip: Path (Vector(x: 0, y: 0) > Vector(x: 800, y: 0) > Vector(x: 800, y: 1496) > Vector(x: 0, y: 1496))
Clip: Path (Vector(x: 0, y: 0) > Vector(x: 800, y: 0) > Vector(x: 800, y: 1496) > Vector(x: 0, y: 1496))
Shape: rgb(0,0,0) Path (Vector(x: 108, y: 118) > Vector(x: 204, y: 118) > Vector(x: 180, y: 118) > Vector(x: 132, y: 118))
Shape: rgb(0,0,0) Path (Vector(x: 204, y: 118) > Vector(x: 204, y: 130) > Vector(x: 180, y: 130) > Vector(x: 180, y: 118))
Clip: Path (Vector(x: 0, y: 0) > Vector(x: 800, y: 0) > Vector(x: 800, y: 1496) > Vector(x: 0, y: 1496))
Clip: Path (Vector(x: 0, y: 0) > Vector(x: 800, y: 0) > Vector(x: 800, y: 1496) > Vector(x: 0, y: 1496))
Clip: Path (Vector(x: 132, y: 118) > Vector(x: 180, y: 118) > Vector(x: 180, y: 130) > Vector(x: 132, y: 130))
Fill: rgb(255,255,0)
Clip: Path (Vector(x: 0, y: 0) > Vector(x: 800, y: 0) > Vector(x: 800, y: 1496) > Vector(x: 0, y: 1496))
Clip: Path (Vector(x: 0, y: 0) > Vector(x: 800, y: 0) > Vector(x: 800, y: 1496) > Vector(x: 0, y: 1496))
Clip: Path (Vector(x: 84, y: 142) > Vector(x: 228, y: 142) > Vector(x: 228, y: 166) > Vector(x: 84, y: 166))
Fill: rgb(255,0,0)
Clip: Path (Vector(x: 0, y: 0) > Vector(x: 800, y: 0) > Vector(x: 800, y: 1496) > Vector(x: 0, y: 1496))
Clip: Path (Vector(x: 0, y: 0) > Vector(x: 800, y: 0) > Vector(x: 800, y: 1496) > Vector(x: 0, y: 1496))
Clip: Path (Vector(x: 0, y: 0) > Vector(x: 800, y: 0) > Vector(x: 800, y: 1496) > Vector(x: 0, y: 1496))
Clip: Path (Vector(x: 84, y: 142) > Vector(x: 228, y: 142) > Vector(x: 228, y: 166) > Vector(x: 84, y: 166))
Fill: rgb(255,0,0)
Shape: rgb(255,255,0) Path (Vector(x: 84, y: 142) > Vector(x: 228, y: 142) > Vector(x: 228, y: 142) > Vector(x: 108, y: 142))
Clip: Path (Vector(x: 0, y: 0) > Vector(x: 800, y: 0) > Vector(x: 800, y: 1496) > Vector(x: 0, y: 1496))
Clip: Path (Vector(x: 0, y: 0) > Vector(x: 800, y: 0) > Vector(x: 800, y: 1496) > Vector(x: 0, y: 1496))
Clip: Path (Vector(x: 84, y: 142) > Vector(x: 228, y: 142) > Vector(x: 228, y: 166) > Vector(x: 84, y: 166))
Repeat: Image ("/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAIAAAACCAIAAAD91JpzAAAABnRSTlMAAAAAAABupgeRAAAABmJLR0QA%2FwD%2F") [96, 142] Size (2, 2) Path (Vector(x: 84, y: 142) > Vector(x: 228, y: 142) > Vector(x: 228, y: 166) > Vector(x: 84, y: 166))
Shape: rgb(255,0,0) Path (Vector(x: 84, y: 142) > Vector(x: 228, y: 142) > Vector(x: 216, y: 142) > Vector(x: 96, y: 142))
Shape: rgb(0,0,0) Path (Vector(x: 228, y: 142) > Vector(x: 228, y: 166) > Vector(x: 216, y: 166) > Vector(x: 216, y: 142))
Clip: Path (Vector(x: 0, y: 0) > Vector(x: 800, y: 0) > Vector(x: 800, y: 1496) > Vector(x: 0, y: 1496))
Clip: Path (Vector(x: 0, y: 0) > Vector(x: 800, y: 0) > Vector(x: 800, y: 1496) > Vector(x: 0, y: 1496))
Clip: Path (Vector(x: 84, y: 214) > Vector(x: 228, y: 214) > Vector(x: 228, y: 238) > Vector(x: 84, y: 238))
Fill: rgb(0,0,0)
Clip: Path (Vector(x: 0, y: 0) > Vector(x: 800, y: 0) > Vector(x: 800, y: 1496) > Vector(x: 0, y: 1496))
Clip: Path (Vector(x: 0, y: 0) > Vector(x: 800, y: 0) > Vector(x: 800, y: 1496) > Vector(x: 0, y: 1496))
Clip: Path (Vector(x: 96, y: 214) > Vector(x: 216, y: 214) > Vector(x: 216, y: 238) > Vector(x: 96, y: 238))
Fill: rgb(0,0,0)
Shape: rgb(255,255,0) Path (Vector(x: 96, y: 214) > Vector(x: 216, y: 214) > Vector(x: 204, y: 226) > Vector(x: 108, y: 226))
Shape: rgb(255,255,0) Path (Vector(x: 216, y: 214) > Vector(x: 216, y: 238) > Vector(x: 204, y: 226) > Vector(x: 204, y: 226))
Shape: rgb(255,255,0) Path (Vector(x: 216, y: 238) > Vector(x: 96, y: 238) > Vector(x: 108, y: 226) > Vector(x: 204, y: 226))
Shape: rgb(255,255,0) Path (Vector(x: 96, y: 238) > Vector(x: 96, y: 214) > Vector(x: 108, y: 226) > Vector(x: 108, y: 226))
Clip: Path (Vector(x: 0, y: 0) > Vector(x: 800, y: 0) > Vector(x: 800, y: 1496) > Vector(x: 0, y: 1496))
Clip: Path (Vector(x: 0, y: 0) > Vector(x: 800, y: 0) > Vector(x: 800, y: 1496) > Vector(x: 0, y: 1496))
Clip: Path (Vector(x: 108, y: 214) > Vector(x: 204, y: 214) > Vector(x: 204, y: 226) > Vector(x: 108, y: 226))
Fill: rgb(0,0,0)
Clip: Path (Vector(x: 0, y: 0) > Vector(x: 800, y: 0) > Vector(x: 800, y: 1496) > Vector(x: 0, y: 1496))
Clip: Path (Vector(x: 0, y: 0) > Vector(x: 800, y: 0) > Vector(x: 800, y: 1496) > Vector(x: 0, y: 1496))
Shape: rgb(255,255,0) Path (Vector(x: 120, y: 214) > Vector(x: 192, y: 214) > Vector(x: 192, y: 226) > Vector(x: 120, y: 226))
Shape: rgb(0,0,0) Path (Vector(x: 192, y: 214) > Vector(x: 192, y: 238) > Vector(x: 192, y: 226) > Vector(x: 192, y: 226))
Clip: Path (Vector(x: 0, y: 0) > Vector(x: 800, y: 0) > Vector(x: 800, y: 1496) > Vector(x: 0, y: 1496))
Clip: Path (Vector(x: 0, y: 0) > Vector(x: 800, y: 0) > Vector(x: 800, y: 1496) > Vector(x: 0, y: 1496))

View File

@ -1,29 +0,0 @@
Window: [800, 1568]
Rectangle: [0, 0, 800, 1568] rgb(255,0,0)
Opacity: 1
Clip: Path (Vector(x: 8, y: 8) > Vector(x: 792, y: 8) > Vector(x: 792, y: 1048) > Vector(x: 8, y: 1048))
Fill: rgb(0,255,0)
Clip: Path (Vector(x: 18, y: 18) > Vector(x: 278, y: 18) > Vector(x: 278, y: 258) > Vector(x: 18, y: 258))
Repeat: Image ("/tests/assets/image.jpg") [58, 28] Size (75, 75) Path (Vector(x: 18, y: 18) > Vector(x: 278, y: 18) > Vector(x: 278, y: 258) > Vector(x: 18, y: 258))
Clip: Path (Vector(x: 338, y: 28) > Vector(x: 538, y: 28) > Vector(x: 538, y: 228) > Vector(x: 338, y: 228))
Repeat: Image ("/tests/assets/image.jpg") [338, 28] Size (75, 75) Path (Vector(x: 298, y: 18) > Vector(x: 558, y: 18) > Vector(x: 558, y: 258) > Vector(x: 298, y: 258))
Clip: Path (Vector(x: 58, y: 288) > Vector(x: 258, y: 288) > Vector(x: 258, y: 488) > Vector(x: 58, y: 488))
Repeat: Image ("/tests/assets/image.jpg") [58, 288] Size (75, 75) Path (Vector(x: 18, y: 278) > Vector(x: 278, y: 278) > Vector(x: 278, y: 518) > Vector(x: 18, y: 518))
Clip: Path (Vector(x: 298, y: 278) > Vector(x: 558, y: 278) > Vector(x: 558, y: 518) > Vector(x: 298, y: 518))
Repeat: Image ("/tests/assets/image.jpg") [338, 288] Size (75, 75) Path (Vector(x: 298, y: 278) > Vector(x: 558, y: 278) > Vector(x: 558, y: 518) > Vector(x: 298, y: 518))
Clip: Path (Vector(x: 18, y: 538) > Vector(x: 278, y: 538) > Vector(x: 278, y: 778) > Vector(x: 18, y: 778))
Repeat: Image ("/tests/assets/image.jpg") [58, 548] Size (75, 75) Path (Vector(x: 58, y: 548) > Vector(x: 133, y: 548) > Vector(x: 133, y: 623) > Vector(x: 58, y: 623))
Clip: Path (Vector(x: 338, y: 548) > Vector(x: 538, y: 548) > Vector(x: 538, y: 748) > Vector(x: 338, y: 748))
Repeat: Image ("/tests/assets/image.jpg") [338, 548] Size (75, 75) Path (Vector(x: 338, y: 538) > Vector(x: 413, y: 538) > Vector(x: 413, y: 778) > Vector(x: 338, y: 778))
Clip: Path (Vector(x: 58, y: 808) > Vector(x: 258, y: 808) > Vector(x: 258, y: 1008) > Vector(x: 58, y: 1008))
Repeat: Image ("/tests/assets/image.jpg") [58, 808] Size (75, 75) Path (Vector(x: 18, y: 808) > Vector(x: 278, y: 808) > Vector(x: 278, y: 883) > Vector(x: 18, y: 883))
Clip: Path (Vector(x: 298, y: 798) > Vector(x: 558, y: 798) > Vector(x: 558, y: 1038) > Vector(x: 298, y: 1038))
Repeat: Image ("/tests/assets/image.jpg") [338, 808] Size (75, 75) Path (Vector(x: 338, y: 808) > Vector(x: 413, y: 808) > Vector(x: 413, y: 883) > Vector(x: 338, y: 883))
Clip: Path (Vector(x: 18, y: 1058) > Vector(x: 278, y: 1058) > Vector(x: 278, y: 1298) > Vector(x: 18, y: 1298))
Fill: rgb(0,128,0)
Clip: Path (Vector(x: 338, y: 1068) > Vector(x: 538, y: 1068) > Vector(x: 538, y: 1268) > Vector(x: 338, y: 1268))
Fill: rgb(0,128,0)
Clip: Path (Vector(x: 58, y: 1328) > Vector(x: 258, y: 1328) > Vector(x: 258, y: 1528) > Vector(x: 58, y: 1528))
Fill: rgb(0,128,0)
Clip: Path (Vector(x: 298, y: 1318) > Vector(x: 558, y: 1318) > Vector(x: 558, y: 1558) > Vector(x: 298, y: 1558))
Fill: rgb(0,128,0)

View File

@ -1,11 +0,0 @@
Window: [800, 600]
Rectangle: [0, 0, 800, 600] rgb(255,0,0)
Opacity: 1
Clip: Path (Vector(x: 8, y: 8) > Vector(x: 792, y: 8) > Vector(x: 792, y: 8) > Vector(x: 8, y: 8))
Fill: rgb(0,255,0)
Clip: Path (Vector(x: 18, y: 18) > Vector(x: 220, y: 18) > Vector(x: 220, y: 220) > Vector(x: 18, y: 220))
Repeat: Image ("/jpeg;base64,/9j/4AAQSkZJRgABAQEASABIAAD/2wBDAAMCAgMCAgMDAwMEAwMEBQgFBQQEBQoHBwYIDAoMDAsKCwsNDhIQDQ4") [19, 19] Size (75, 75) Path (Vector(x: 18, y: 18) > Vector(x: 220, y: 18) > Vector(x: 220, y: 220) > Vector(x: 18, y: 220))
Shape: rgb(0,0,0) Path (Vector(x: 18, y: 18) > Vector(x: 220, y: 18) > Vector(x: 219, y: 19) > Vector(x: 19, y: 19))
Shape: rgb(0,0,0) Path (Vector(x: 220, y: 18) > Vector(x: 220, y: 220) > Vector(x: 219, y: 219) > Vector(x: 219, y: 19))
Shape: rgb(0,0,0) Path (Vector(x: 220, y: 220) > Vector(x: 18, y: 220) > Vector(x: 19, y: 219) > Vector(x: 219, y: 219))
Shape: rgb(0,0,0) Path (Vector(x: 18, y: 220) > Vector(x: 18, y: 18) > Vector(x: 19, y: 19) > Vector(x: 19, y: 219))

View File

@ -1,133 +0,0 @@
Window: [820, 1828]
Rectangle: [0, 0, 820, 1828] rgb(255,0,0)
Opacity: 1
Clip: Path (Vector(x: 18, y: 18) > Vector(x: 230, y: 18) > Vector(x: 230, y: 220) > Vector(x: 18, y: 220))
Gradient: [18, 18, 212, 202] linear-gradient(x0: 207, x1: 5, y0: 207, y1: -5 rgb(255,0,0) 0, rgb(0,0,255) 0.34, rgb(186,218,85) 0.67, rgba(0,0,255,0.5) 1)
Shape: rgb(0,0,0) Path (Vector(x: 18, y: 18) > Vector(x: 230, y: 18) > Vector(x: 229, y: 19) > Vector(x: 19, y: 19))
Shape: rgb(0,0,0) Path (Vector(x: 230, y: 18) > Vector(x: 230, y: 220) > Vector(x: 229, y: 219) > Vector(x: 229, y: 19))
Shape: rgb(0,0,0) Path (Vector(x: 230, y: 220) > Vector(x: 18, y: 220) > Vector(x: 19, y: 219) > Vector(x: 229, y: 219))
Shape: rgb(0,0,0) Path (Vector(x: 18, y: 220) > Vector(x: 18, y: 18) > Vector(x: 19, y: 19) > Vector(x: 19, y: 219))
Clip: Path (Vector(x: 250, y: 18) > Vector(x: 462, y: 18) > Vector(x: 462, y: 220) > Vector(x: 250, y: 220))
Gradient: [250, 18, 212, 202] linear-gradient(x0: 106, x1: 106, y0: 202, y1: 0 rgb(252,252,252) 0, rgb(232,232,232) 1)
Shape: rgb(0,0,0) Path (Vector(x: 250, y: 18) > Vector(x: 462, y: 18) > Vector(x: 461, y: 19) > Vector(x: 251, y: 19))
Shape: rgb(0,0,0) Path (Vector(x: 462, y: 18) > Vector(x: 462, y: 220) > Vector(x: 461, y: 219) > Vector(x: 461, y: 19))
Shape: rgb(0,0,0) Path (Vector(x: 462, y: 220) > Vector(x: 250, y: 220) > Vector(x: 251, y: 219) > Vector(x: 461, y: 219))
Shape: rgb(0,0,0) Path (Vector(x: 250, y: 220) > Vector(x: 250, y: 18) > Vector(x: 251, y: 19) > Vector(x: 251, y: 219))
Clip: Path (Vector(x: 482, y: 18) > Vector(x: 694, y: 18) > Vector(x: 694, y: 220) > Vector(x: 482, y: 220))
Gradient: [482, 18, 212, 202] linear-gradient(x0: 212, x1: 0, y0: 101, y1: 101 rgb(255,0,0) 0, rgb(255,255,0) 0.5, rgb(0,255,0) 1)
Shape: rgb(0,0,0) Path (Vector(x: 482, y: 18) > Vector(x: 694, y: 18) > Vector(x: 693, y: 19) > Vector(x: 483, y: 19))
Shape: rgb(0,0,0) Path (Vector(x: 694, y: 18) > Vector(x: 694, y: 220) > Vector(x: 693, y: 219) > Vector(x: 693, y: 19))
Shape: rgb(0,0,0) Path (Vector(x: 694, y: 220) > Vector(x: 482, y: 220) > Vector(x: 483, y: 219) > Vector(x: 693, y: 219))
Shape: rgb(0,0,0) Path (Vector(x: 482, y: 220) > Vector(x: 482, y: 18) > Vector(x: 483, y: 19) > Vector(x: 483, y: 219))
Clip: Path (Vector(x: 18, y: 240) > Vector(x: 230, y: 240) > Vector(x: 230, y: 442) > Vector(x: 18, y: 442))
Gradient: [18, 240, 212, 202] linear-gradient(x0: 212, x1: 0, y0: 101, y1: 101 rgb(206,219,233) 0, rgb(170,197,222) 0.17, rgb(97,153,199) 0.5, rgb(58,132,195) 0.51, rgb(65,154,214) 0.59, rgb(75,184,240) 0.71, rgb(58,139,194) 0.84, rgb(38,85,139) 1)
Shape: rgb(0,0,0) Path (Vector(x: 18, y: 240) > Vector(x: 230, y: 240) > Vector(x: 229, y: 241) > Vector(x: 19, y: 241))
Shape: rgb(0,0,0) Path (Vector(x: 230, y: 240) > Vector(x: 230, y: 442) > Vector(x: 229, y: 441) > Vector(x: 229, y: 241))
Shape: rgb(0,0,0) Path (Vector(x: 230, y: 442) > Vector(x: 18, y: 442) > Vector(x: 19, y: 441) > Vector(x: 229, y: 441))
Shape: rgb(0,0,0) Path (Vector(x: 18, y: 442) > Vector(x: 18, y: 240) > Vector(x: 19, y: 241) > Vector(x: 19, y: 441))
Clip: Path (Vector(x: 250, y: 240) > Vector(x: 462, y: 240) > Vector(x: 462, y: 442) > Vector(x: 250, y: 442))
Gradient: [250, 240, 212, 202] linear-gradient(x0: 106, x1: 106, y0: 202, y1: 0 rgb(240,183,161) 0, rgb(140,51,16) 0.5, rgb(117,34,1) 0.51, rgb(191,110,78) 1)
Shape: rgb(0,0,0) Path (Vector(x: 250, y: 240) > Vector(x: 462, y: 240) > Vector(x: 461, y: 241) > Vector(x: 251, y: 241))
Shape: rgb(0,0,0) Path (Vector(x: 462, y: 240) > Vector(x: 462, y: 442) > Vector(x: 461, y: 441) > Vector(x: 461, y: 241))
Shape: rgb(0,0,0) Path (Vector(x: 462, y: 442) > Vector(x: 250, y: 442) > Vector(x: 251, y: 441) > Vector(x: 461, y: 441))
Shape: rgb(0,0,0) Path (Vector(x: 250, y: 442) > Vector(x: 250, y: 240) > Vector(x: 251, y: 241) > Vector(x: 251, y: 441))
Clip: Path (Vector(x: 482, y: 240) > Vector(x: 694, y: 240) > Vector(x: 694, y: 442) > Vector(x: 482, y: 442))
Gradient: [482, 240, 212, 202] linear-gradient(x0: 212, x1: 0, y0: 101, y1: 101 rgb(206,219,233) 0, rgb(170,197,222) 0.17, rgb(97,153,199) 0.5, rgb(58,132,195) 0.51, rgb(65,154,214) 0.76, rgb(38,85,139) 1)
Shape: rgb(0,0,0) Path (Vector(x: 482, y: 240) > Vector(x: 694, y: 240) > Vector(x: 693, y: 241) > Vector(x: 483, y: 241))
Shape: rgb(0,0,0) Path (Vector(x: 694, y: 240) > Vector(x: 694, y: 442) > Vector(x: 693, y: 441) > Vector(x: 693, y: 241))
Shape: rgb(0,0,0) Path (Vector(x: 694, y: 442) > Vector(x: 482, y: 442) > Vector(x: 483, y: 441) > Vector(x: 693, y: 441))
Shape: rgb(0,0,0) Path (Vector(x: 482, y: 442) > Vector(x: 482, y: 240) > Vector(x: 483, y: 241) > Vector(x: 483, y: 441))
Clip: Path (Vector(x: 18, y: 462) > Vector(x: 230, y: 462) > Vector(x: 230, y: 664) > Vector(x: 18, y: 664))
Gradient: [18, 462, 212, 202] linear-gradient(x0: 106, x1: 106, y0: 202, y1: 0 rgb(204,229,244) 0, rgb(0,38,60) 1)
Shape: rgb(0,0,0) Path (Vector(x: 18, y: 462) > Vector(x: 230, y: 462) > Vector(x: 229, y: 463) > Vector(x: 19, y: 463))
Shape: rgb(0,0,0) Path (Vector(x: 230, y: 462) > Vector(x: 230, y: 664) > Vector(x: 229, y: 663) > Vector(x: 229, y: 463))
Shape: rgb(0,0,0) Path (Vector(x: 230, y: 664) > Vector(x: 18, y: 664) > Vector(x: 19, y: 663) > Vector(x: 229, y: 663))
Shape: rgb(0,0,0) Path (Vector(x: 18, y: 664) > Vector(x: 18, y: 462) > Vector(x: 19, y: 463) > Vector(x: 19, y: 663))
Clip: Path (Vector(x: 250, y: 462) > Vector(x: 462, y: 462) > Vector(x: 462, y: 664) > Vector(x: 250, y: 664))
Gradient: [250, 462, 212, 202] linear-gradient(x0: 5, x1: 207, y0: 207, y1: -5 rgb(255,255,255) 0, rgb(0,38,60) 1)
Shape: rgb(0,0,0) Path (Vector(x: 250, y: 462) > Vector(x: 462, y: 462) > Vector(x: 461, y: 463) > Vector(x: 251, y: 463))
Shape: rgb(0,0,0) Path (Vector(x: 462, y: 462) > Vector(x: 462, y: 664) > Vector(x: 461, y: 663) > Vector(x: 461, y: 463))
Shape: rgb(0,0,0) Path (Vector(x: 462, y: 664) > Vector(x: 250, y: 664) > Vector(x: 251, y: 663) > Vector(x: 461, y: 663))
Shape: rgb(0,0,0) Path (Vector(x: 250, y: 664) > Vector(x: 250, y: 462) > Vector(x: 251, y: 463) > Vector(x: 251, y: 663))
Clip: Path (Vector(x: 482, y: 462) > Vector(x: 694, y: 462) > Vector(x: 694, y: 664) > Vector(x: 482, y: 664))
Gradient: [482, 462, 212, 202] linear-gradient(x0: 5, x1: 207, y0: 207, y1: -5 rgb(0,0,255) 0, rgb(255,0,0) 0.17, rgb(0,128,0) 0.67, rgba(0,0,0,0.5) 1)
Shape: rgb(0,0,0) Path (Vector(x: 482, y: 462) > Vector(x: 694, y: 462) > Vector(x: 693, y: 463) > Vector(x: 483, y: 463))
Shape: rgb(0,0,0) Path (Vector(x: 694, y: 462) > Vector(x: 694, y: 664) > Vector(x: 693, y: 663) > Vector(x: 693, y: 463))
Shape: rgb(0,0,0) Path (Vector(x: 694, y: 664) > Vector(x: 482, y: 664) > Vector(x: 483, y: 663) > Vector(x: 693, y: 663))
Shape: rgb(0,0,0) Path (Vector(x: 482, y: 664) > Vector(x: 482, y: 462) > Vector(x: 483, y: 463) > Vector(x: 483, y: 663))
Clip: Path (Vector(x: 18, y: 684) > Vector(x: 230, y: 684) > Vector(x: 230, y: 886) > Vector(x: 18, y: 886))
Gradient: [18, 684, 212, 202] linear-gradient(x0: 5, x1: 207, y0: -5, y1: 207 rgb(0,0,255) 0, rgb(255,0,0) 0.17, rgb(0,128,0) 0.67, rgba(0,0,0,0.5) 1)
Shape: rgb(0,0,0) Path (Vector(x: 18, y: 684) > Vector(x: 230, y: 684) > Vector(x: 229, y: 685) > Vector(x: 19, y: 685))
Shape: rgb(0,0,0) Path (Vector(x: 230, y: 684) > Vector(x: 230, y: 886) > Vector(x: 229, y: 885) > Vector(x: 229, y: 685))
Shape: rgb(0,0,0) Path (Vector(x: 230, y: 886) > Vector(x: 18, y: 886) > Vector(x: 19, y: 885) > Vector(x: 229, y: 885))
Shape: rgb(0,0,0) Path (Vector(x: 18, y: 886) > Vector(x: 18, y: 684) > Vector(x: 19, y: 685) > Vector(x: 19, y: 885))
Clip: Path (Vector(x: 250, y: 684) > Vector(x: 462, y: 684) > Vector(x: 462, y: 886) > Vector(x: 250, y: 886))
Gradient: [250, 684, 212, 202] linear-gradient(x0: 207, x1: 5, y0: 207, y1: -5 rgb(0,0,255) 0, rgb(255,0,0) 0.17, rgb(0,128,0) 0.67, rgba(0,0,0,0.5) 1)
Shape: rgb(0,0,0) Path (Vector(x: 250, y: 684) > Vector(x: 462, y: 684) > Vector(x: 461, y: 685) > Vector(x: 251, y: 685))
Shape: rgb(0,0,0) Path (Vector(x: 462, y: 684) > Vector(x: 462, y: 886) > Vector(x: 461, y: 885) > Vector(x: 461, y: 685))
Shape: rgb(0,0,0) Path (Vector(x: 462, y: 886) > Vector(x: 250, y: 886) > Vector(x: 251, y: 885) > Vector(x: 461, y: 885))
Shape: rgb(0,0,0) Path (Vector(x: 250, y: 886) > Vector(x: 250, y: 684) > Vector(x: 251, y: 685) > Vector(x: 251, y: 885))
Clip: Path (Vector(x: 482, y: 684) > Vector(x: 694, y: 684) > Vector(x: 694, y: 886) > Vector(x: 482, y: 886))
Gradient: [482, 684, 212, 202] linear-gradient(x0: 207, x1: 5, y0: -5, y1: 207 rgb(0,0,255) 0, rgb(255,0,0) 0.17, rgb(0,128,0) 0.67, rgba(0,0,0,0.5) 1)
Shape: rgb(0,0,0) Path (Vector(x: 482, y: 684) > Vector(x: 694, y: 684) > Vector(x: 693, y: 685) > Vector(x: 483, y: 685))
Shape: rgb(0,0,0) Path (Vector(x: 694, y: 684) > Vector(x: 694, y: 886) > Vector(x: 693, y: 885) > Vector(x: 693, y: 685))
Shape: rgb(0,0,0) Path (Vector(x: 694, y: 886) > Vector(x: 482, y: 886) > Vector(x: 483, y: 885) > Vector(x: 693, y: 885))
Shape: rgb(0,0,0) Path (Vector(x: 482, y: 886) > Vector(x: 482, y: 684) > Vector(x: 483, y: 685) > Vector(x: 483, y: 885))
Shape: rgb(0,0,0) Path (Vector(x: 18, y: 906) > Vector(x: 782, y: 906) > Vector(x: 781, y: 907) > Vector(x: 19, y: 907))
Shape: rgb(0,0,0) Path (Vector(x: 782, y: 906) > Vector(x: 782, y: 1152) > Vector(x: 781, y: 1151) > Vector(x: 781, y: 907))
Shape: rgb(0,0,0) Path (Vector(x: 782, y: 1152) > Vector(x: 18, y: 1152) > Vector(x: 19, y: 1151) > Vector(x: 781, y: 1151))
Shape: rgb(0,0,0) Path (Vector(x: 18, y: 1152) > Vector(x: 18, y: 906) > Vector(x: 19, y: 907) > Vector(x: 19, y: 1151))
Clip: Path (Vector(x: 29, y: 917) > Vector(x: 231, y: 917) > Vector(x: 231, y: 1019) > Vector(x: 29, y: 1019))
Gradient: [29, 917, 202, 102] linear-gradient(x0: 60, x1: 142, y0: 132, y1: -30 rgb(0,0,255) 0, rgb(255,0,0) 0.25, rgb(0,128,0) 0.98, rgba(0,0,0,0.5) 1)
Shape: rgb(0,0,0) Path (Vector(x: 29, y: 917) > Vector(x: 231, y: 917) > Vector(x: 230, y: 918) > Vector(x: 30, y: 918))
Shape: rgb(0,0,0) Path (Vector(x: 231, y: 917) > Vector(x: 231, y: 1019) > Vector(x: 230, y: 1018) > Vector(x: 230, y: 918))
Shape: rgb(0,0,0) Path (Vector(x: 231, y: 1019) > Vector(x: 29, y: 1019) > Vector(x: 30, y: 1018) > Vector(x: 230, y: 1018))
Shape: rgb(0,0,0) Path (Vector(x: 29, y: 1019) > Vector(x: 29, y: 917) > Vector(x: 30, y: 918) > Vector(x: 30, y: 1018))
Clip: Path (Vector(x: 251, y: 917) > Vector(x: 453, y: 917) > Vector(x: 453, y: 1019) > Vector(x: 251, y: 1019))
Gradient: [251, 917, 202, 102] linear-gradient(x0: 60, x1: 142, y0: -30, y1: 132 rgb(0,0,255) 0, rgb(255,0,0) 0.25, rgb(0,128,0) 0.98, rgba(0,0,0,0.5) 1)
Shape: rgb(0,0,0) Path (Vector(x: 251, y: 917) > Vector(x: 453, y: 917) > Vector(x: 452, y: 918) > Vector(x: 252, y: 918))
Shape: rgb(0,0,0) Path (Vector(x: 453, y: 917) > Vector(x: 453, y: 1019) > Vector(x: 452, y: 1018) > Vector(x: 452, y: 918))
Shape: rgb(0,0,0) Path (Vector(x: 453, y: 1019) > Vector(x: 251, y: 1019) > Vector(x: 252, y: 1018) > Vector(x: 452, y: 1018))
Shape: rgb(0,0,0) Path (Vector(x: 251, y: 1019) > Vector(x: 251, y: 917) > Vector(x: 252, y: 918) > Vector(x: 252, y: 1018))
Clip: Path (Vector(x: 473, y: 917) > Vector(x: 675, y: 917) > Vector(x: 675, y: 1019) > Vector(x: 473, y: 1019))
Gradient: [473, 917, 202, 102] linear-gradient(x0: 142, x1: 60, y0: 132, y1: -30 rgb(0,0,255) 0, rgb(255,0,0) 0.25, rgb(0,128,0) 0.98, rgba(0,0,0,0.5) 1)
Shape: rgb(0,0,0) Path (Vector(x: 473, y: 917) > Vector(x: 675, y: 917) > Vector(x: 674, y: 918) > Vector(x: 474, y: 918))
Shape: rgb(0,0,0) Path (Vector(x: 675, y: 917) > Vector(x: 675, y: 1019) > Vector(x: 674, y: 1018) > Vector(x: 674, y: 918))
Shape: rgb(0,0,0) Path (Vector(x: 675, y: 1019) > Vector(x: 473, y: 1019) > Vector(x: 474, y: 1018) > Vector(x: 674, y: 1018))
Shape: rgb(0,0,0) Path (Vector(x: 473, y: 1019) > Vector(x: 473, y: 917) > Vector(x: 474, y: 918) > Vector(x: 474, y: 1018))
Clip: Path (Vector(x: 29, y: 1039) > Vector(x: 231, y: 1039) > Vector(x: 231, y: 1141) > Vector(x: 29, y: 1141))
Gradient: [29, 1039, 202, 102] linear-gradient(x0: 142, x1: 60, y0: -30, y1: 132 rgb(0,0,255) 0, rgb(255,0,0) 0.25, rgb(0,128,0) 0.98, rgba(0,0,0,0.5) 1)
Shape: rgb(0,0,0) Path (Vector(x: 29, y: 1039) > Vector(x: 231, y: 1039) > Vector(x: 230, y: 1040) > Vector(x: 30, y: 1040))
Shape: rgb(0,0,0) Path (Vector(x: 231, y: 1039) > Vector(x: 231, y: 1141) > Vector(x: 230, y: 1140) > Vector(x: 230, y: 1040))
Shape: rgb(0,0,0) Path (Vector(x: 231, y: 1141) > Vector(x: 29, y: 1141) > Vector(x: 30, y: 1140) > Vector(x: 230, y: 1140))
Shape: rgb(0,0,0) Path (Vector(x: 29, y: 1141) > Vector(x: 29, y: 1039) > Vector(x: 30, y: 1040) > Vector(x: 30, y: 1140))
Clip: Path (Vector(x: 18, y: 1172) > Vector(x: 230, y: 1172) > Vector(x: 230, y: 1374) > Vector(x: 18, y: 1374))
Gradient: [18, 1172, 212, 202] linear-gradient(x0: 5, x1: 207, y0: -5, y1: 207 rgb(255,255,255) 0, rgb(0,0,0) 1)
Shape: rgb(0,0,0) Path (Vector(x: 18, y: 1172) > Vector(x: 230, y: 1172) > Vector(x: 229, y: 1173) > Vector(x: 19, y: 1173))
Shape: rgb(0,0,0) Path (Vector(x: 230, y: 1172) > Vector(x: 230, y: 1374) > Vector(x: 229, y: 1373) > Vector(x: 229, y: 1173))
Shape: rgb(0,0,0) Path (Vector(x: 230, y: 1374) > Vector(x: 18, y: 1374) > Vector(x: 19, y: 1373) > Vector(x: 229, y: 1373))
Shape: rgb(0,0,0) Path (Vector(x: 18, y: 1374) > Vector(x: 18, y: 1172) > Vector(x: 19, y: 1173) > Vector(x: 19, y: 1373))
Clip: Path (Vector(x: 250, y: 1172) > Vector(x: 462, y: 1172) > Vector(x: 462, y: 1374) > Vector(x: 250, y: 1374))
Gradient: [250, 1172, 212, 202] linear-gradient(x0: 156, x1: 56, y0: -23, y1: 225 rgb(255,255,0) 0, rgb(0,0,255) 0.3, rgb(255,0,0) 0.6, rgb(0,0,255) 1)
Shape: rgb(0,0,0) Path (Vector(x: 250, y: 1172) > Vector(x: 462, y: 1172) > Vector(x: 461, y: 1173) > Vector(x: 251, y: 1173))
Shape: rgb(0,0,0) Path (Vector(x: 462, y: 1172) > Vector(x: 462, y: 1374) > Vector(x: 461, y: 1373) > Vector(x: 461, y: 1173))
Shape: rgb(0,0,0) Path (Vector(x: 462, y: 1374) > Vector(x: 250, y: 1374) > Vector(x: 251, y: 1373) > Vector(x: 461, y: 1373))
Shape: rgb(0,0,0) Path (Vector(x: 250, y: 1374) > Vector(x: 250, y: 1172) > Vector(x: 251, y: 1173) > Vector(x: 251, y: 1373))
Clip: Path (Vector(x: 482, y: 1172) > Vector(x: 694, y: 1172) > Vector(x: 694, y: 1374) > Vector(x: 482, y: 1374))
Gradient: [482, 1172, 212, 202] linear-gradient(x0: 106, x1: 106, y0: 202, y1: 0 rgb(255,255,0) 0, rgb(255,0,0) 0.6, rgb(0,0,255) 1)
Shape: rgb(0,0,0) Path (Vector(x: 482, y: 1172) > Vector(x: 694, y: 1172) > Vector(x: 693, y: 1173) > Vector(x: 483, y: 1173))
Shape: rgb(0,0,0) Path (Vector(x: 694, y: 1172) > Vector(x: 694, y: 1374) > Vector(x: 693, y: 1373) > Vector(x: 693, y: 1173))
Shape: rgb(0,0,0) Path (Vector(x: 694, y: 1374) > Vector(x: 482, y: 1374) > Vector(x: 483, y: 1373) > Vector(x: 693, y: 1373))
Shape: rgb(0,0,0) Path (Vector(x: 482, y: 1374) > Vector(x: 482, y: 1172) > Vector(x: 483, y: 1173) > Vector(x: 483, y: 1373))
Clip: Path (Vector(x: 18, y: 1394) > Vector(x: 230, y: 1394) > Vector(x: 230, y: 1596) > Vector(x: 18, y: 1596))
Gradient: [18, 1394, 212, 202] linear-gradient(x0: 219, x1: -7, y0: 92, y1: 110 rgb(255,255,0) 0, rgb(255,165,0) 0.3, rgb(255,0,0) 0.6, rgb(0,0,255) 1)
Shape: rgb(0,0,0) Path (Vector(x: 18, y: 1394) > Vector(x: 230, y: 1394) > Vector(x: 229, y: 1395) > Vector(x: 19, y: 1395))
Shape: rgb(0,0,0) Path (Vector(x: 230, y: 1394) > Vector(x: 230, y: 1596) > Vector(x: 229, y: 1595) > Vector(x: 229, y: 1395))
Shape: rgb(0,0,0) Path (Vector(x: 230, y: 1596) > Vector(x: 18, y: 1596) > Vector(x: 19, y: 1595) > Vector(x: 229, y: 1595))
Shape: rgb(0,0,0) Path (Vector(x: 18, y: 1596) > Vector(x: 18, y: 1394) > Vector(x: 19, y: 1395) > Vector(x: 19, y: 1595))
Clip: Path (Vector(x: 18, y: 1616) > Vector(x: 820, y: 1616) > Vector(x: 820, y: 1818) > Vector(x: 18, y: 1818))
Gradient: [18, 1616, 802, 202] linear-gradient(x0: 346, x1: 456, y0: -96, y1: 298 rgb(255,255,0) 0, rgb(255,0,0) 0.6, rgb(0,0,255) 1)
Shape: rgb(0,0,0) Path (Vector(x: 18, y: 1616) > Vector(x: 820, y: 1616) > Vector(x: 819, y: 1617) > Vector(x: 19, y: 1617))
Shape: rgb(0,0,0) Path (Vector(x: 820, y: 1616) > Vector(x: 820, y: 1818) > Vector(x: 819, y: 1817) > Vector(x: 819, y: 1617))
Shape: rgb(0,0,0) Path (Vector(x: 820, y: 1818) > Vector(x: 18, y: 1818) > Vector(x: 19, y: 1817) > Vector(x: 819, y: 1817))
Shape: rgb(0,0,0) Path (Vector(x: 18, y: 1818) > Vector(x: 18, y: 1616) > Vector(x: 19, y: 1617) > Vector(x: 19, y: 1817))

View File

@ -0,0 +1,42 @@
<!doctype html>
<html>
<head>
<title>Background attribute tests</title>
<script type="text/javascript" src="../../test.js"></script>
<style>
body {
background-color: blanchedalmond;
}
div {
display: inline-block;
width: 100px;
height: 100px;
padding: 10px;
border: 15px solid black;
}
</style>
</head>
<body>
<div style="background: -webkit-linear-gradient(90deg, blue, red);"></div>
<div style="background: linear-gradient(90deg, blue, red);"></div>
<div style="background: linear-gradient(45deg, blue, red);"></div>
<div style="background: linear-gradient(45deg, blue, red); width:200px;"></div>
<div style="background-image: linear-gradient(45deg, blue, red); background-position: 20px 30px; background-size: 60px; background-repeat: no-repeat"></div>
<div style="background-image: linear-gradient(45deg, blue, red); background-position: 20px 30px; background-size: 60px;"></div>
<div style="background-image: linear-gradient(45deg, blue, red);padding:0"></div>
<div style="background: linear-gradient(red, red 60%, blue);"></div>
<div style="background: linear-gradient(90deg, red 60%, blue);"></div>
<div style="background: linear-gradient(135deg, red, red 60%, blue);"></div>
<div style="background: linear-gradient(to right, red, red 60%, blue);"></div>
<div style="background: linear-gradient(to right, red, orange, yellow, green, blue, indigo, violet);"></div>
<div style="background: linear-gradient(60deg, yellow 0%, orange 10%, red 50%, blue 90%, cyan 100%);"></div>
<div style="background: linear-gradient(45deg, yellow 0%, orange 10%, red 50%, blue 90%, cyan 100%); background-origin: content-box"></div>
<div style="background: linear-gradient(90deg, yellow 0%, orange 10%, red 50%, blue 90%, cyan 100%); background-origin: padding-box"></div>
<div style="background: linear-gradient(90deg, yellow 0%, orange 10%, red 50%, blue 90%, cyan 100%); background-origin: border-box"></div>
<div style="background: linear-gradient(to right, rgba(255,255,255,0) 0%,rgba(255,255,255,1) 100%); "></div>
<div style="background: linear-gradient(90deg, yellow 0%, orange 10%, red 50%, blue 90%, cyan 100%) content-box;"></div>
<div style="background: linear-gradient(60deg, hsla(120,80%,50%,0.8) 0%, transparent 50%, rgba(255,100,100,0.5) 100%);"></div>
</body>
</html>

View File

@ -1,26 +0,0 @@
Window: [800, 600]
Rectangle: [0, 0, 800, 600] rgb(255,0,0)
Opacity: 1
Clip: Path (Vector(x: 8, y: 8) > Vector(x: 792, y: 8) > Vector(x: 792, y: 8) > Vector(x: 8, y: 8))
Fill: rgb(0,255,0)
Clip: Path (Vector(x: 18, y: 18) > Vector(x: 220, y: 18) > Vector(x: 220, y: 220) > Vector(x: 18, y: 220))
Repeat: Image ("/tests/assets/image2.jpg") [119, 149] Size (75, 75) Path (Vector(x: 18, y: 148) > Vector(x: 220, y: 148) > Vector(x: 220, y: 223) > Vector(x: 18, y: 223))
Repeat: Image ("/tests/assets/image.jpg") [69, 69] Size (75, 75) Path (Vector(x: 18, y: 68) > Vector(x: 220, y: 68) > Vector(x: 220, y: 143) > Vector(x: 18, y: 143))
Shape: rgb(0,0,0) Path (Vector(x: 18, y: 18) > Vector(x: 220, y: 18) > Vector(x: 219, y: 19) > Vector(x: 19, y: 19))
Shape: rgb(0,0,0) Path (Vector(x: 220, y: 18) > Vector(x: 220, y: 220) > Vector(x: 219, y: 219) > Vector(x: 219, y: 19))
Shape: rgb(0,0,0) Path (Vector(x: 220, y: 220) > Vector(x: 18, y: 220) > Vector(x: 19, y: 219) > Vector(x: 219, y: 219))
Shape: rgb(0,0,0) Path (Vector(x: 18, y: 220) > Vector(x: 18, y: 18) > Vector(x: 19, y: 19) > Vector(x: 19, y: 219))
Clip: Path (Vector(x: 240, y: 18) > Vector(x: 442, y: 18) > Vector(x: 442, y: 220) > Vector(x: 240, y: 220))
Repeat: Image ("/tests/assets/image2.jpg") [261, -1] Size (75, 75) Path (Vector(x: 240, y: -2) > Vector(x: 442, y: -2) > Vector(x: 442, y: 73) > Vector(x: 240, y: 73))
Repeat: Image ("/tests/assets/image.jpg") [291, 69] Size (75, 75) Path (Vector(x: 240, y: 68) > Vector(x: 442, y: 68) > Vector(x: 442, y: 143) > Vector(x: 240, y: 143))
Shape: rgb(0,0,0) Path (Vector(x: 240, y: 18) > Vector(x: 442, y: 18) > Vector(x: 441, y: 19) > Vector(x: 241, y: 19))
Shape: rgb(0,0,0) Path (Vector(x: 442, y: 18) > Vector(x: 442, y: 220) > Vector(x: 441, y: 219) > Vector(x: 441, y: 19))
Shape: rgb(0,0,0) Path (Vector(x: 442, y: 220) > Vector(x: 240, y: 220) > Vector(x: 241, y: 219) > Vector(x: 441, y: 219))
Shape: rgb(0,0,0) Path (Vector(x: 240, y: 220) > Vector(x: 240, y: 18) > Vector(x: 241, y: 19) > Vector(x: 241, y: 219))
Clip: Path (Vector(x: 462, y: 18) > Vector(x: 664, y: 18) > Vector(x: 664, y: 220) > Vector(x: 462, y: 220))
Repeat: Image ("/tests/assets/image2.jpg") [913, 119] Size (75, 75) Path (Vector(x: 462, y: 118) > Vector(x: 664, y: 118) > Vector(x: 664, y: 193) > Vector(x: 462, y: 193))
Repeat: Image ("/tests/assets/image.jpg") [513, 69] Size (75, 75) Path (Vector(x: 462, y: 68) > Vector(x: 664, y: 68) > Vector(x: 664, y: 143) > Vector(x: 462, y: 143))
Shape: rgb(0,0,0) Path (Vector(x: 462, y: 18) > Vector(x: 664, y: 18) > Vector(x: 663, y: 19) > Vector(x: 463, y: 19))
Shape: rgb(0,0,0) Path (Vector(x: 664, y: 18) > Vector(x: 664, y: 220) > Vector(x: 663, y: 219) > Vector(x: 663, y: 19))
Shape: rgb(0,0,0) Path (Vector(x: 664, y: 220) > Vector(x: 462, y: 220) > Vector(x: 463, y: 219) > Vector(x: 663, y: 219))
Shape: rgb(0,0,0) Path (Vector(x: 462, y: 220) > Vector(x: 462, y: 18) > Vector(x: 463, y: 19) > Vector(x: 463, y: 219))

View File

@ -0,0 +1,34 @@
<!doctype html>
<html>
<head>
<script type="text/javascript" src="../../test.js"></script>
<style>
div {
display: inline-block;
width: 100px;
height: 100px;
border: 15px solid blue;
padding: 10px;
margin: 5px;
background-image: url(../../assets/image.jpg);
}
</style>
</head>
<body>
<div style="background-repeat: no-repeat; background-origin: content-box"></div>
<div style="background-repeat: no-repeat; background-origin: padding-box"></div>
<div style="background-repeat: no-repeat; background-origin: border-box"></div>
<div style="background-repeat: no-repeat; background-origin: content-box; background-size: cover"></div>
<div style="background-repeat: no-repeat; background-origin: padding-box; background-size: cover"></div>
<div style="background-repeat: no-repeat; background-origin: border-box; background-size: cover"></div>
<div style="background-repeat: no-repeat; background-origin: content-box; background-size: contain"></div>
<div style="background-repeat: no-repeat; background-origin: padding-box; background-size: contain"></div>
<div style="background-repeat: no-repeat; background-origin: border-box; background-size: contain"></div>
<div style="background-repeat: no-repeat; background-origin: content-box; background-position: 15px 20px"></div>
<div style="background-repeat: no-repeat; background-origin: padding-box; background-position: 15px 20px"></div>
<div style="background-repeat: no-repeat; background-origin: border-box; background-position: 15px 20px"></div>
<div style="background-repeat: repeat; background-origin: content-box"></div>
<div style="background-repeat: repeat; background-origin: padding-box"></div>
<div style="background-repeat: repeat; background-origin: border-box"></div>
</body>
</html>

View File

@ -1,77 +0,0 @@
Window: [800, 1018]
Rectangle: [0, 0, 800, 1018] rgb(255,0,0)
Opacity: 1
Clip: Path (Vector(x: 8, y: 8) > Vector(x: 792, y: 8) > Vector(x: 792, y: 574) > Vector(x: 8, y: 574))
Fill: rgb(0,255,0)
Clip: Path (Vector(x: 18, y: 18) > Vector(x: 220, y: 18) > Vector(x: 220, y: 220) > Vector(x: 18, y: 220))
Repeat: Image ("/tests/assets/image.jpg") [82, 82] Size (75, 75) Path (Vector(x: 18, y: 18) > Vector(x: 220, y: 18) > Vector(x: 220, y: 220) > Vector(x: 18, y: 220))
Shape: rgb(0,0,0) Path (Vector(x: 18, y: 18) > Vector(x: 220, y: 18) > Vector(x: 219, y: 19) > Vector(x: 19, y: 19))
Shape: rgb(0,0,0) Path (Vector(x: 220, y: 18) > Vector(x: 220, y: 220) > Vector(x: 219, y: 219) > Vector(x: 219, y: 19))
Shape: rgb(0,0,0) Path (Vector(x: 220, y: 220) > Vector(x: 18, y: 220) > Vector(x: 19, y: 219) > Vector(x: 219, y: 219))
Shape: rgb(0,0,0) Path (Vector(x: 18, y: 220) > Vector(x: 18, y: 18) > Vector(x: 19, y: 19) > Vector(x: 19, y: 219))
Clip: Path (Vector(x: 240, y: 18) > Vector(x: 442, y: 18) > Vector(x: 442, y: 220) > Vector(x: 240, y: 220))
Repeat: Image ("/tests/assets/image.jpg") [304, 82] Size (75, 75) Path (Vector(x: 240, y: 82) > Vector(x: 442, y: 82) > Vector(x: 442, y: 157) > Vector(x: 240, y: 157))
Shape: rgb(0,0,0) Path (Vector(x: 240, y: 18) > Vector(x: 442, y: 18) > Vector(x: 441, y: 19) > Vector(x: 241, y: 19))
Shape: rgb(0,0,0) Path (Vector(x: 442, y: 18) > Vector(x: 442, y: 220) > Vector(x: 441, y: 219) > Vector(x: 441, y: 19))
Shape: rgb(0,0,0) Path (Vector(x: 442, y: 220) > Vector(x: 240, y: 220) > Vector(x: 241, y: 219) > Vector(x: 441, y: 219))
Shape: rgb(0,0,0) Path (Vector(x: 240, y: 220) > Vector(x: 240, y: 18) > Vector(x: 241, y: 19) > Vector(x: 241, y: 219))
Clip: Path (Vector(x: 462, y: 18) > Vector(x: 664, y: 18) > Vector(x: 664, y: 220) > Vector(x: 462, y: 220))
Repeat: Image ("/tests/assets/image.jpg") [526, 82] Size (75, 75) Path (Vector(x: 526, y: 18) > Vector(x: 601, y: 18) > Vector(x: 601, y: 220) > Vector(x: 526, y: 220))
Shape: rgb(0,0,0) Path (Vector(x: 462, y: 18) > Vector(x: 664, y: 18) > Vector(x: 663, y: 19) > Vector(x: 463, y: 19))
Shape: rgb(0,0,0) Path (Vector(x: 664, y: 18) > Vector(x: 664, y: 220) > Vector(x: 663, y: 219) > Vector(x: 663, y: 19))
Shape: rgb(0,0,0) Path (Vector(x: 664, y: 220) > Vector(x: 462, y: 220) > Vector(x: 463, y: 219) > Vector(x: 663, y: 219))
Shape: rgb(0,0,0) Path (Vector(x: 462, y: 220) > Vector(x: 462, y: 18) > Vector(x: 463, y: 19) > Vector(x: 463, y: 219))
Clip: Path (Vector(x: 18, y: 240) > Vector(x: 220, y: 240) > Vector(x: 220, y: 442) > Vector(x: 18, y: 442))
Repeat: Image ("/tests/assets/image.jpg") [82, 304] Size (75, 75) Path (Vector(x: 82, y: 304) > Vector(x: 157, y: 304) > Vector(x: 157, y: 379) > Vector(x: 82, y: 379))
Shape: rgb(0,0,0) Path (Vector(x: 18, y: 240) > Vector(x: 220, y: 240) > Vector(x: 219, y: 241) > Vector(x: 19, y: 241))
Shape: rgb(0,0,0) Path (Vector(x: 220, y: 240) > Vector(x: 220, y: 442) > Vector(x: 219, y: 441) > Vector(x: 219, y: 241))
Shape: rgb(0,0,0) Path (Vector(x: 220, y: 442) > Vector(x: 18, y: 442) > Vector(x: 19, y: 441) > Vector(x: 219, y: 441))
Shape: rgb(0,0,0) Path (Vector(x: 18, y: 442) > Vector(x: 18, y: 240) > Vector(x: 19, y: 241) > Vector(x: 19, y: 441))
Clip: Path (Vector(x: 18, y: 462) > Vector(x: 120, y: 462) > Vector(x: 120, y: 564) > Vector(x: 18, y: 564))
Repeat: Image ("/tests/assets/image.jpg") [32, 476] Size (75, 75) Path (Vector(x: 18, y: 462) > Vector(x: 120, y: 462) > Vector(x: 120, y: 564) > Vector(x: 18, y: 564))
Shape: rgb(0,0,0) Path (Vector(x: 18, y: 462) > Vector(x: 120, y: 462) > Vector(x: 119, y: 463) > Vector(x: 19, y: 463))
Shape: rgb(0,0,0) Path (Vector(x: 120, y: 462) > Vector(x: 120, y: 564) > Vector(x: 119, y: 563) > Vector(x: 119, y: 463))
Shape: rgb(0,0,0) Path (Vector(x: 120, y: 564) > Vector(x: 18, y: 564) > Vector(x: 19, y: 563) > Vector(x: 119, y: 563))
Shape: rgb(0,0,0) Path (Vector(x: 18, y: 564) > Vector(x: 18, y: 462) > Vector(x: 19, y: 463) > Vector(x: 19, y: 563))
Clip: Path (Vector(x: 140, y: 462) > Vector(x: 242, y: 462) > Vector(x: 242, y: 564) > Vector(x: 140, y: 564))
Repeat: Image ("/tests/assets/image.jpg") [154, 476] Size (75, 75) Path (Vector(x: 140, y: 476) > Vector(x: 242, y: 476) > Vector(x: 242, y: 551) > Vector(x: 140, y: 551))
Shape: rgb(0,0,0) Path (Vector(x: 140, y: 462) > Vector(x: 242, y: 462) > Vector(x: 241, y: 463) > Vector(x: 141, y: 463))
Shape: rgb(0,0,0) Path (Vector(x: 242, y: 462) > Vector(x: 242, y: 564) > Vector(x: 241, y: 563) > Vector(x: 241, y: 463))
Shape: rgb(0,0,0) Path (Vector(x: 242, y: 564) > Vector(x: 140, y: 564) > Vector(x: 141, y: 563) > Vector(x: 241, y: 563))
Shape: rgb(0,0,0) Path (Vector(x: 140, y: 564) > Vector(x: 140, y: 462) > Vector(x: 141, y: 463) > Vector(x: 141, y: 563))
Clip: Path (Vector(x: 262, y: 462) > Vector(x: 364, y: 462) > Vector(x: 364, y: 564) > Vector(x: 262, y: 564))
Repeat: Image ("/tests/assets/image.jpg") [276, 476] Size (75, 75) Path (Vector(x: 276, y: 462) > Vector(x: 351, y: 462) > Vector(x: 351, y: 564) > Vector(x: 276, y: 564))
Shape: rgb(0,0,0) Path (Vector(x: 262, y: 462) > Vector(x: 364, y: 462) > Vector(x: 363, y: 463) > Vector(x: 263, y: 463))
Shape: rgb(0,0,0) Path (Vector(x: 364, y: 462) > Vector(x: 364, y: 564) > Vector(x: 363, y: 563) > Vector(x: 363, y: 463))
Shape: rgb(0,0,0) Path (Vector(x: 364, y: 564) > Vector(x: 262, y: 564) > Vector(x: 263, y: 563) > Vector(x: 363, y: 563))
Shape: rgb(0,0,0) Path (Vector(x: 262, y: 564) > Vector(x: 262, y: 462) > Vector(x: 263, y: 463) > Vector(x: 263, y: 563))
Clip: Path (Vector(x: 384, y: 462) > Vector(x: 486, y: 462) > Vector(x: 486, y: 564) > Vector(x: 384, y: 564))
Repeat: Image ("/tests/assets/image.jpg") [398, 476] Size (75, 75) Path (Vector(x: 398, y: 476) > Vector(x: 473, y: 476) > Vector(x: 473, y: 551) > Vector(x: 398, y: 551))
Shape: rgb(0,0,0) Path (Vector(x: 384, y: 462) > Vector(x: 486, y: 462) > Vector(x: 485, y: 463) > Vector(x: 385, y: 463))
Shape: rgb(0,0,0) Path (Vector(x: 486, y: 462) > Vector(x: 486, y: 564) > Vector(x: 485, y: 563) > Vector(x: 485, y: 463))
Shape: rgb(0,0,0) Path (Vector(x: 486, y: 564) > Vector(x: 384, y: 564) > Vector(x: 385, y: 563) > Vector(x: 485, y: 563))
Shape: rgb(0,0,0) Path (Vector(x: 384, y: 564) > Vector(x: 384, y: 462) > Vector(x: 385, y: 463) > Vector(x: 385, y: 563))
Clip: Path (Vector(x: 18, y: 584) > Vector(x: 220, y: 584) > Vector(x: 220, y: 786) > Vector(x: 18, y: 786))
Repeat: Image ("/tests/assets/image.jpg") [0, 610] Size (75, 75) Path (Vector(x: 18, y: 584) > Vector(x: 220, y: 584) > Vector(x: 220, y: 786) > Vector(x: 18, y: 786))
Shape: rgb(0,0,0) Path (Vector(x: 18, y: 584) > Vector(x: 220, y: 584) > Vector(x: 219, y: 585) > Vector(x: 19, y: 585))
Shape: rgb(0,0,0) Path (Vector(x: 220, y: 584) > Vector(x: 220, y: 786) > Vector(x: 219, y: 785) > Vector(x: 219, y: 585))
Shape: rgb(0,0,0) Path (Vector(x: 220, y: 786) > Vector(x: 18, y: 786) > Vector(x: 19, y: 785) > Vector(x: 219, y: 785))
Shape: rgb(0,0,0) Path (Vector(x: 18, y: 786) > Vector(x: 18, y: 584) > Vector(x: 19, y: 585) > Vector(x: 19, y: 785))
Clip: Path (Vector(x: 240, y: 584) > Vector(x: 442, y: 584) > Vector(x: 442, y: 786) > Vector(x: 240, y: 786))
Repeat: Image ("/tests/assets/image.jpg") [291, 635] Size (75, 75) Path (Vector(x: 240, y: 635) > Vector(x: 442, y: 635) > Vector(x: 442, y: 710) > Vector(x: 240, y: 710))
Shape: rgb(0,0,0) Path (Vector(x: 240, y: 584) > Vector(x: 442, y: 584) > Vector(x: 441, y: 585) > Vector(x: 241, y: 585))
Shape: rgb(0,0,0) Path (Vector(x: 442, y: 584) > Vector(x: 442, y: 786) > Vector(x: 441, y: 785) > Vector(x: 441, y: 585))
Shape: rgb(0,0,0) Path (Vector(x: 442, y: 786) > Vector(x: 240, y: 786) > Vector(x: 241, y: 785) > Vector(x: 441, y: 785))
Shape: rgb(0,0,0) Path (Vector(x: 240, y: 786) > Vector(x: 240, y: 584) > Vector(x: 241, y: 585) > Vector(x: 241, y: 785))
Clip: Path (Vector(x: 462, y: 584) > Vector(x: 664, y: 584) > Vector(x: 664, y: 786) > Vector(x: 462, y: 786))
Repeat: Image ("/tests/assets/image.jpg") [513, 635] Size (75, 75) Path (Vector(x: 513, y: 584) > Vector(x: 588, y: 584) > Vector(x: 588, y: 786) > Vector(x: 513, y: 786))
Shape: rgb(0,0,0) Path (Vector(x: 462, y: 584) > Vector(x: 664, y: 584) > Vector(x: 663, y: 585) > Vector(x: 463, y: 585))
Shape: rgb(0,0,0) Path (Vector(x: 664, y: 584) > Vector(x: 664, y: 786) > Vector(x: 663, y: 785) > Vector(x: 663, y: 585))
Shape: rgb(0,0,0) Path (Vector(x: 664, y: 786) > Vector(x: 462, y: 786) > Vector(x: 463, y: 785) > Vector(x: 663, y: 785))
Shape: rgb(0,0,0) Path (Vector(x: 462, y: 786) > Vector(x: 462, y: 584) > Vector(x: 463, y: 585) > Vector(x: 463, y: 785))
Clip: Path (Vector(x: 18, y: 806) > Vector(x: 220, y: 806) > Vector(x: 220, y: 1008) > Vector(x: 18, y: 1008))
Repeat: Image ("/tests/assets/image.jpg") [69, 857] Size (75, 75) Path (Vector(x: 69, y: 857) > Vector(x: 144, y: 857) > Vector(x: 144, y: 932) > Vector(x: 69, y: 932))
Shape: rgb(0,0,0) Path (Vector(x: 18, y: 806) > Vector(x: 220, y: 806) > Vector(x: 219, y: 807) > Vector(x: 19, y: 807))
Shape: rgb(0,0,0) Path (Vector(x: 220, y: 806) > Vector(x: 220, y: 1008) > Vector(x: 219, y: 1007) > Vector(x: 219, y: 807))
Shape: rgb(0,0,0) Path (Vector(x: 220, y: 1008) > Vector(x: 18, y: 1008) > Vector(x: 19, y: 1007) > Vector(x: 219, y: 1007))
Shape: rgb(0,0,0) Path (Vector(x: 18, y: 1008) > Vector(x: 18, y: 806) > Vector(x: 19, y: 807) > Vector(x: 19, y: 1007))

View File

@ -1,61 +0,0 @@
Window: [800, 896]
Rectangle: [0, 0, 800, 896] rgb(255,0,0)
Opacity: 1
Clip: Path (Vector(x: 8, y: 8) > Vector(x: 792, y: 8) > Vector(x: 792, y: 8) > Vector(x: 8, y: 8))
Fill: rgb(0,255,0)
Clip: Path (Vector(x: 18, y: 18) > Vector(x: 220, y: 18) > Vector(x: 220, y: 220) > Vector(x: 18, y: 220))
Shape: rgb(0,0,0) Path (Vector(x: 18, y: 18) > Vector(x: 220, y: 18) > Vector(x: 219, y: 19) > Vector(x: 19, y: 19))
Shape: rgb(0,0,0) Path (Vector(x: 220, y: 18) > Vector(x: 220, y: 220) > Vector(x: 219, y: 219) > Vector(x: 219, y: 19))
Shape: rgb(0,0,0) Path (Vector(x: 220, y: 220) > Vector(x: 18, y: 220) > Vector(x: 19, y: 219) > Vector(x: 219, y: 219))
Shape: rgb(0,0,0) Path (Vector(x: 18, y: 220) > Vector(x: 18, y: 18) > Vector(x: 19, y: 19) > Vector(x: 19, y: 219))
Clip: Path (Vector(x: 240, y: 18) > Vector(x: 442, y: 18) > Vector(x: 442, y: 220) > Vector(x: 240, y: 220))
Fill: rgb(255,255,255)
Shape: rgb(0,0,0) Path (Vector(x: 240, y: 18) > Vector(x: 442, y: 18) > Vector(x: 441, y: 19) > Vector(x: 241, y: 19))
Shape: rgb(0,0,0) Path (Vector(x: 442, y: 18) > Vector(x: 442, y: 220) > Vector(x: 441, y: 219) > Vector(x: 441, y: 19))
Shape: rgb(0,0,0) Path (Vector(x: 442, y: 220) > Vector(x: 240, y: 220) > Vector(x: 241, y: 219) > Vector(x: 441, y: 219))
Shape: rgb(0,0,0) Path (Vector(x: 240, y: 220) > Vector(x: 240, y: 18) > Vector(x: 241, y: 19) > Vector(x: 241, y: 219))
Clip: Path (Vector(x: 462, y: 18) > Vector(x: 664, y: 18) > Vector(x: 664, y: 220) > Vector(x: 462, y: 220))
Shape: rgb(0,0,0) Path (Vector(x: 462, y: 18) > Vector(x: 664, y: 18) > Vector(x: 663, y: 19) > Vector(x: 463, y: 19))
Shape: rgb(0,0,0) Path (Vector(x: 664, y: 18) > Vector(x: 664, y: 220) > Vector(x: 663, y: 219) > Vector(x: 663, y: 19))
Shape: rgb(0,0,0) Path (Vector(x: 664, y: 220) > Vector(x: 462, y: 220) > Vector(x: 463, y: 219) > Vector(x: 663, y: 219))
Shape: rgb(0,0,0) Path (Vector(x: 462, y: 220) > Vector(x: 462, y: 18) > Vector(x: 463, y: 19) > Vector(x: 463, y: 219))
Clip: Path (Vector(x: 18, y: 240) > Vector(x: 220, y: 240) > Vector(x: 220, y: 442) > Vector(x: 18, y: 442))
Shape: rgb(0,0,0) Path (Vector(x: 18, y: 240) > Vector(x: 220, y: 240) > Vector(x: 219, y: 241) > Vector(x: 19, y: 241))
Shape: rgb(0,0,0) Path (Vector(x: 220, y: 240) > Vector(x: 220, y: 442) > Vector(x: 219, y: 441) > Vector(x: 219, y: 241))
Shape: rgb(0,0,0) Path (Vector(x: 220, y: 442) > Vector(x: 18, y: 442) > Vector(x: 19, y: 441) > Vector(x: 219, y: 441))
Shape: rgb(0,0,0) Path (Vector(x: 18, y: 442) > Vector(x: 18, y: 240) > Vector(x: 19, y: 241) > Vector(x: 19, y: 441))
Clip: Path (Vector(x: 240, y: 240) > Vector(x: 442, y: 240) > Vector(x: 442, y: 442) > Vector(x: 240, y: 442))
Shape: rgb(0,0,0) Path (Vector(x: 240, y: 240) > Vector(x: 442, y: 240) > Vector(x: 441, y: 241) > Vector(x: 241, y: 241))
Shape: rgb(0,0,0) Path (Vector(x: 442, y: 240) > Vector(x: 442, y: 442) > Vector(x: 441, y: 441) > Vector(x: 441, y: 241))
Shape: rgb(0,0,0) Path (Vector(x: 442, y: 442) > Vector(x: 240, y: 442) > Vector(x: 241, y: 441) > Vector(x: 441, y: 441))
Shape: rgb(0,0,0) Path (Vector(x: 240, y: 442) > Vector(x: 240, y: 240) > Vector(x: 241, y: 241) > Vector(x: 241, y: 441))
Clip: Path (Vector(x: 462, y: 240) > Vector(x: 664, y: 240) > Vector(x: 664, y: 442) > Vector(x: 462, y: 442))
Shape: rgb(0,0,0) Path (Vector(x: 462, y: 240) > Vector(x: 664, y: 240) > Vector(x: 663, y: 241) > Vector(x: 463, y: 241))
Shape: rgb(0,0,0) Path (Vector(x: 664, y: 240) > Vector(x: 664, y: 442) > Vector(x: 663, y: 441) > Vector(x: 663, y: 241))
Shape: rgb(0,0,0) Path (Vector(x: 664, y: 442) > Vector(x: 462, y: 442) > Vector(x: 463, y: 441) > Vector(x: 663, y: 441))
Shape: rgb(0,0,0) Path (Vector(x: 462, y: 442) > Vector(x: 462, y: 240) > Vector(x: 463, y: 241) > Vector(x: 463, y: 441))
Clip: Path (Vector(x: 18, y: 462) > Vector(x: 220, y: 462) > Vector(x: 220, y: 664) > Vector(x: 18, y: 664))
Shape: rgb(0,0,0) Path (Vector(x: 18, y: 462) > Vector(x: 220, y: 462) > Vector(x: 219, y: 463) > Vector(x: 19, y: 463))
Shape: rgb(0,0,0) Path (Vector(x: 220, y: 462) > Vector(x: 220, y: 664) > Vector(x: 219, y: 663) > Vector(x: 219, y: 463))
Shape: rgb(0,0,0) Path (Vector(x: 220, y: 664) > Vector(x: 18, y: 664) > Vector(x: 19, y: 663) > Vector(x: 219, y: 663))
Shape: rgb(0,0,0) Path (Vector(x: 18, y: 664) > Vector(x: 18, y: 462) > Vector(x: 19, y: 463) > Vector(x: 19, y: 663))
Clip: Path (Vector(x: 240, y: 462) > Vector(x: 442, y: 462) > Vector(x: 442, y: 664) > Vector(x: 240, y: 664))
Shape: rgb(0,0,0) Path (Vector(x: 240, y: 462) > Vector(x: 442, y: 462) > Vector(x: 441, y: 463) > Vector(x: 241, y: 463))
Shape: rgb(0,0,0) Path (Vector(x: 442, y: 462) > Vector(x: 442, y: 664) > Vector(x: 441, y: 663) > Vector(x: 441, y: 463))
Shape: rgb(0,0,0) Path (Vector(x: 442, y: 664) > Vector(x: 240, y: 664) > Vector(x: 241, y: 663) > Vector(x: 441, y: 663))
Shape: rgb(0,0,0) Path (Vector(x: 240, y: 664) > Vector(x: 240, y: 462) > Vector(x: 241, y: 463) > Vector(x: 241, y: 663))
Clip: Path (Vector(x: 462, y: 462) > Vector(x: 664, y: 462) > Vector(x: 664, y: 664) > Vector(x: 462, y: 664))
Shape: rgb(0,0,0) Path (Vector(x: 462, y: 462) > Vector(x: 664, y: 462) > Vector(x: 663, y: 463) > Vector(x: 463, y: 463))
Shape: rgb(0,0,0) Path (Vector(x: 664, y: 462) > Vector(x: 664, y: 664) > Vector(x: 663, y: 663) > Vector(x: 663, y: 463))
Shape: rgb(0,0,0) Path (Vector(x: 664, y: 664) > Vector(x: 462, y: 664) > Vector(x: 463, y: 663) > Vector(x: 663, y: 663))
Shape: rgb(0,0,0) Path (Vector(x: 462, y: 664) > Vector(x: 462, y: 462) > Vector(x: 463, y: 463) > Vector(x: 463, y: 663))
Clip: Path (Vector(x: 18, y: 684) > Vector(x: 220, y: 684) > Vector(x: 220, y: 886) > Vector(x: 18, y: 886))
Shape: rgb(0,0,0) Path (Vector(x: 18, y: 684) > Vector(x: 220, y: 684) > Vector(x: 219, y: 685) > Vector(x: 19, y: 685))
Shape: rgb(0,0,0) Path (Vector(x: 220, y: 684) > Vector(x: 220, y: 886) > Vector(x: 219, y: 885) > Vector(x: 219, y: 685))
Shape: rgb(0,0,0) Path (Vector(x: 220, y: 886) > Vector(x: 18, y: 886) > Vector(x: 19, y: 885) > Vector(x: 219, y: 885))
Shape: rgb(0,0,0) Path (Vector(x: 18, y: 886) > Vector(x: 18, y: 684) > Vector(x: 19, y: 685) > Vector(x: 19, y: 885))
Clip: Path (Vector(x: 240, y: 684) > Vector(x: 442, y: 684) > Vector(x: 442, y: 886) > Vector(x: 240, y: 886))
Shape: rgb(0,0,0) Path (Vector(x: 240, y: 684) > Vector(x: 442, y: 684) > Vector(x: 441, y: 685) > Vector(x: 241, y: 685))
Shape: rgb(0,0,0) Path (Vector(x: 442, y: 684) > Vector(x: 442, y: 886) > Vector(x: 441, y: 885) > Vector(x: 441, y: 685))
Shape: rgb(0,0,0) Path (Vector(x: 442, y: 886) > Vector(x: 240, y: 886) > Vector(x: 241, y: 885) > Vector(x: 441, y: 885))
Shape: rgb(0,0,0) Path (Vector(x: 240, y: 886) > Vector(x: 240, y: 684) > Vector(x: 241, y: 685) > Vector(x: 241, y: 885))

View File

@ -0,0 +1,51 @@
<!doctype html>
<html>
<head>
<title>Background attribute tests</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<script type="text/javascript" src="../../test.js"></script>
<style>
div {
display: inline-block;
width: 100px;
height: 100px;
padding: 10px;
margin: 5px;
border: 15px solid black;
vertical-align: top;
}
</style>
</head>
<body>
<div style="background: radial-gradient(red, blue)"></div>
<div style="background: radial-gradient(circle, red, blue)"></div>
<div style="background: radial-gradient(ellipse, red, blue)"></div>
<div style="background: radial-gradient(circle, red, blue); width:200px"></div>
<div style="background: radial-gradient(ellipse, red, blue); width:200px"></div>
<div style="background: radial-gradient(closest-side, red, blue)"></div>
<div style="background: radial-gradient(closest-corner, red, blue)"></div>
<div style="background: radial-gradient(farthest-side, red, blue)"></div>
<div style="background: radial-gradient(farthest-corner, red, blue)"></div>
<div style="background: radial-gradient(circle 20px, red, blue)"></div>
<div style="background: radial-gradient(ellipse 20px 30px, red, blue)"></div>
<div style="font-size: 24px; border: none; padding: 0; width: auto;">
<div style="background: radial-gradient(circle 20px at 2em 80px, red, blue)"></div>
<div style="background: radial-gradient(circle 20px at 6rem 80px, red, blue)"></div>
</div>
<div style="background: radial-gradient(circle farthest-side, red, blue)"></div>
<div style="background: radial-gradient(at 20px 20px, red, blue)"></div>
<div style="background: radial-gradient(ellipse farthest-corner at 45px 45px , #00FFFF 0%, rgba(0, 0, 255, 0) 50%, #0000FF 95%);"></div>
<div style="background: radial-gradient(16px at 70px 50% , #000000 0%, #000000 14px, rgba(0, 0, 0, 0.3) 18px, rgba(0, 0, 0, 0) 19px);"></div>
<div style="background: radial-gradient(16px at 70px 50% , #000000 0%, #000000 87.5%, rgba(0, 0, 0, 0.3) 112.5%, rgba(0, 0, 0, 0) 118.75%);"></div>
<div style="background: radial-gradient(19px at 70px 50% , #000000 0%, #000000 73.68%, rgba(0, 0, 0, 0.3) 94.74%, rgba(0, 0, 0, 0) 100%);"></div>
<div style="background: radial-gradient(ellipse 60px 30px at 70px 50%, #000000 0%, blue 10%, yellow 15%, red 18%);"></div>
<div style="background: radial-gradient(circle farthest-corner at left top, aquamarine, deeppink);"></div>
<div style="width: 300px; height: 200px; transform: translate(20px, 30px) rotate(20deg)">
<div style="width: 200px; height: 150px; transform: translate(-10px, -20px) rotate(10deg)">
<div style="background: radial-gradient(circle, red, blue)"></div>
<div style="background: radial-gradient(ellipse, red, blue); width:150px;"></div>
</div>
</div>
</body>
</html>

View File

@ -1,53 +0,0 @@
Window: [800, 600]
Rectangle: [0, 0, 800, 600] rgb(255,0,0)
Opacity: 1
Clip: Path (Vector(x: 8, y: 8) > Vector(x: 792, y: 8) > Vector(x: 792, y: 452) > Vector(x: 8, y: 452))
Fill: rgb(0,255,0)
Clip: Path (Vector(x: 18, y: 18) > Vector(x: 220, y: 18) > Vector(x: 220, y: 220) > Vector(x: 18, y: 220))
Repeat: Image ("/tests/assets/image.jpg") [19, 19] Size (75, 75) Path (Vector(x: 18, y: 18) > Vector(x: 220, y: 18) > Vector(x: 220, y: 220) > Vector(x: 18, y: 220))
Shape: rgb(0,0,0) Path (Vector(x: 18, y: 18) > Vector(x: 220, y: 18) > Vector(x: 219, y: 19) > Vector(x: 19, y: 19))
Shape: rgb(0,0,0) Path (Vector(x: 220, y: 18) > Vector(x: 220, y: 220) > Vector(x: 219, y: 219) > Vector(x: 219, y: 19))
Shape: rgb(0,0,0) Path (Vector(x: 220, y: 220) > Vector(x: 18, y: 220) > Vector(x: 19, y: 219) > Vector(x: 219, y: 219))
Shape: rgb(0,0,0) Path (Vector(x: 18, y: 220) > Vector(x: 18, y: 18) > Vector(x: 19, y: 19) > Vector(x: 19, y: 219))
Clip: Path (Vector(x: 240, y: 18) > Vector(x: 442, y: 18) > Vector(x: 442, y: 220) > Vector(x: 240, y: 220))
Repeat: Image ("/tests/assets/image.jpg") [241, 19] Size (75, 75) Path (Vector(x: 240, y: 19) > Vector(x: 442, y: 19) > Vector(x: 442, y: 94) > Vector(x: 240, y: 94))
Shape: rgb(0,0,0) Path (Vector(x: 240, y: 18) > Vector(x: 442, y: 18) > Vector(x: 441, y: 19) > Vector(x: 241, y: 19))
Shape: rgb(0,0,0) Path (Vector(x: 442, y: 18) > Vector(x: 442, y: 220) > Vector(x: 441, y: 219) > Vector(x: 441, y: 19))
Shape: rgb(0,0,0) Path (Vector(x: 442, y: 220) > Vector(x: 240, y: 220) > Vector(x: 241, y: 219) > Vector(x: 441, y: 219))
Shape: rgb(0,0,0) Path (Vector(x: 240, y: 220) > Vector(x: 240, y: 18) > Vector(x: 241, y: 19) > Vector(x: 241, y: 219))
Clip: Path (Vector(x: 462, y: 18) > Vector(x: 664, y: 18) > Vector(x: 664, y: 220) > Vector(x: 462, y: 220))
Repeat: Image ("/tests/assets/image.jpg") [463, 19] Size (75, 75) Path (Vector(x: 463, y: 18) > Vector(x: 538, y: 18) > Vector(x: 538, y: 220) > Vector(x: 463, y: 220))
Shape: rgb(0,0,0) Path (Vector(x: 462, y: 18) > Vector(x: 664, y: 18) > Vector(x: 663, y: 19) > Vector(x: 463, y: 19))
Shape: rgb(0,0,0) Path (Vector(x: 664, y: 18) > Vector(x: 664, y: 220) > Vector(x: 663, y: 219) > Vector(x: 663, y: 19))
Shape: rgb(0,0,0) Path (Vector(x: 664, y: 220) > Vector(x: 462, y: 220) > Vector(x: 463, y: 219) > Vector(x: 663, y: 219))
Shape: rgb(0,0,0) Path (Vector(x: 462, y: 220) > Vector(x: 462, y: 18) > Vector(x: 463, y: 19) > Vector(x: 463, y: 219))
Clip: Path (Vector(x: 18, y: 240) > Vector(x: 220, y: 240) > Vector(x: 220, y: 442) > Vector(x: 18, y: 442))
Repeat: Image ("/tests/assets/image.jpg") [19, 241] Size (75, 75) Path (Vector(x: 19, y: 241) > Vector(x: 94, y: 241) > Vector(x: 94, y: 316) > Vector(x: 19, y: 316))
Shape: rgb(0,0,0) Path (Vector(x: 18, y: 240) > Vector(x: 220, y: 240) > Vector(x: 219, y: 241) > Vector(x: 19, y: 241))
Shape: rgb(0,0,0) Path (Vector(x: 220, y: 240) > Vector(x: 220, y: 442) > Vector(x: 219, y: 441) > Vector(x: 219, y: 241))
Shape: rgb(0,0,0) Path (Vector(x: 220, y: 442) > Vector(x: 18, y: 442) > Vector(x: 19, y: 441) > Vector(x: 219, y: 441))
Shape: rgb(0,0,0) Path (Vector(x: 18, y: 442) > Vector(x: 18, y: 240) > Vector(x: 19, y: 241) > Vector(x: 19, y: 441))
Clip: Path (Vector(x: 18, y: 462) > Vector(x: 120, y: 462) > Vector(x: 120, y: 564) > Vector(x: 18, y: 564))
Repeat: Image ("/tests/assets/image.jpg") [19, 463] Size (75, 75) Path (Vector(x: 18, y: 462) > Vector(x: 120, y: 462) > Vector(x: 120, y: 564) > Vector(x: 18, y: 564))
Shape: rgb(0,0,0) Path (Vector(x: 18, y: 462) > Vector(x: 120, y: 462) > Vector(x: 119, y: 463) > Vector(x: 19, y: 463))
Shape: rgb(0,0,0) Path (Vector(x: 120, y: 462) > Vector(x: 120, y: 564) > Vector(x: 119, y: 563) > Vector(x: 119, y: 463))
Shape: rgb(0,0,0) Path (Vector(x: 120, y: 564) > Vector(x: 18, y: 564) > Vector(x: 19, y: 563) > Vector(x: 119, y: 563))
Shape: rgb(0,0,0) Path (Vector(x: 18, y: 564) > Vector(x: 18, y: 462) > Vector(x: 19, y: 463) > Vector(x: 19, y: 563))
Clip: Path (Vector(x: 140, y: 462) > Vector(x: 242, y: 462) > Vector(x: 242, y: 564) > Vector(x: 140, y: 564))
Repeat: Image ("/tests/assets/image.jpg") [141, 463] Size (75, 75) Path (Vector(x: 140, y: 463) > Vector(x: 242, y: 463) > Vector(x: 242, y: 538) > Vector(x: 140, y: 538))
Shape: rgb(0,0,0) Path (Vector(x: 140, y: 462) > Vector(x: 242, y: 462) > Vector(x: 241, y: 463) > Vector(x: 141, y: 463))
Shape: rgb(0,0,0) Path (Vector(x: 242, y: 462) > Vector(x: 242, y: 564) > Vector(x: 241, y: 563) > Vector(x: 241, y: 463))
Shape: rgb(0,0,0) Path (Vector(x: 242, y: 564) > Vector(x: 140, y: 564) > Vector(x: 141, y: 563) > Vector(x: 241, y: 563))
Shape: rgb(0,0,0) Path (Vector(x: 140, y: 564) > Vector(x: 140, y: 462) > Vector(x: 141, y: 463) > Vector(x: 141, y: 563))
Clip: Path (Vector(x: 262, y: 462) > Vector(x: 364, y: 462) > Vector(x: 364, y: 564) > Vector(x: 262, y: 564))
Repeat: Image ("/tests/assets/image.jpg") [263, 463] Size (75, 75) Path (Vector(x: 263, y: 462) > Vector(x: 338, y: 462) > Vector(x: 338, y: 564) > Vector(x: 263, y: 564))
Shape: rgb(0,0,0) Path (Vector(x: 262, y: 462) > Vector(x: 364, y: 462) > Vector(x: 363, y: 463) > Vector(x: 263, y: 463))
Shape: rgb(0,0,0) Path (Vector(x: 364, y: 462) > Vector(x: 364, y: 564) > Vector(x: 363, y: 563) > Vector(x: 363, y: 463))
Shape: rgb(0,0,0) Path (Vector(x: 364, y: 564) > Vector(x: 262, y: 564) > Vector(x: 263, y: 563) > Vector(x: 363, y: 563))
Shape: rgb(0,0,0) Path (Vector(x: 262, y: 564) > Vector(x: 262, y: 462) > Vector(x: 263, y: 463) > Vector(x: 263, y: 563))
Clip: Path (Vector(x: 384, y: 462) > Vector(x: 486, y: 462) > Vector(x: 486, y: 564) > Vector(x: 384, y: 564))
Repeat: Image ("/tests/assets/image.jpg") [385, 463] Size (75, 75) Path (Vector(x: 385, y: 463) > Vector(x: 460, y: 463) > Vector(x: 460, y: 538) > Vector(x: 385, y: 538))
Shape: rgb(0,0,0) Path (Vector(x: 384, y: 462) > Vector(x: 486, y: 462) > Vector(x: 485, y: 463) > Vector(x: 385, y: 463))
Shape: rgb(0,0,0) Path (Vector(x: 486, y: 462) > Vector(x: 486, y: 564) > Vector(x: 485, y: 563) > Vector(x: 485, y: 463))
Shape: rgb(0,0,0) Path (Vector(x: 486, y: 564) > Vector(x: 384, y: 564) > Vector(x: 385, y: 563) > Vector(x: 485, y: 563))
Shape: rgb(0,0,0) Path (Vector(x: 384, y: 564) > Vector(x: 384, y: 462) > Vector(x: 385, y: 463) > Vector(x: 385, y: 563))

View File

@ -1,43 +0,0 @@
Window: [800, 1010]
Rectangle: [0, 0, 800, 1010] rgba(0,0,0,0)
Opacity: 1
Clip: Path (Vector(x: 8, y: 8) > Vector(x: 160, y: 8) > Vector(x: 160, y: 210) > Vector(x: 8, y: 210))
Repeat: Image ("/tests/assets/image.jpg") [67, 92] Size (34, 34) Path (Vector(x: 67, y: 92) > Vector(x: 101, y: 92) > Vector(x: 101, y: 126) > Vector(x: 67, y: 126))
Shape: rgb(0,0,0) Path (Vector(x: 8, y: 8) > Vector(x: 160, y: 8) > Vector(x: 159, y: 9) > Vector(x: 9, y: 9))
Shape: rgb(0,0,0) Path (Vector(x: 160, y: 8) > Vector(x: 160, y: 210) > Vector(x: 159, y: 209) > Vector(x: 159, y: 9))
Shape: rgb(0,0,0) Path (Vector(x: 160, y: 210) > Vector(x: 8, y: 210) > Vector(x: 9, y: 209) > Vector(x: 159, y: 209))
Shape: rgb(0,0,0) Path (Vector(x: 8, y: 210) > Vector(x: 8, y: 8) > Vector(x: 9, y: 9) > Vector(x: 9, y: 209))
Clip: Path (Vector(x: 160, y: 8) > Vector(x: 312, y: 8) > Vector(x: 312, y: 210) > Vector(x: 160, y: 210))
Repeat: Image ("/tests/assets/image.jpg") [219, 92] Size (34, 34) Path (Vector(x: 219, y: 8) > Vector(x: 253, y: 8) > Vector(x: 253, y: 210) > Vector(x: 219, y: 210))
Shape: rgb(0,0,0) Path (Vector(x: 160, y: 8) > Vector(x: 312, y: 8) > Vector(x: 311, y: 9) > Vector(x: 161, y: 9))
Shape: rgb(0,0,0) Path (Vector(x: 312, y: 8) > Vector(x: 312, y: 210) > Vector(x: 311, y: 209) > Vector(x: 311, y: 9))
Shape: rgb(0,0,0) Path (Vector(x: 312, y: 210) > Vector(x: 160, y: 210) > Vector(x: 161, y: 209) > Vector(x: 311, y: 209))
Shape: rgb(0,0,0) Path (Vector(x: 160, y: 210) > Vector(x: 160, y: 8) > Vector(x: 161, y: 9) > Vector(x: 161, y: 209))
Clip: Path (Vector(x: 312, y: 8) > Vector(x: 464, y: 8) > Vector(x: 464, y: 210) > Vector(x: 312, y: 210))
Repeat: Image ("/tests/assets/image.jpg") [371, 92] Size (34, 34) Path (Vector(x: 312, y: 92) > Vector(x: 464, y: 92) > Vector(x: 464, y: 126) > Vector(x: 312, y: 126))
Shape: rgb(0,0,0) Path (Vector(x: 312, y: 8) > Vector(x: 464, y: 8) > Vector(x: 463, y: 9) > Vector(x: 313, y: 9))
Shape: rgb(0,0,0) Path (Vector(x: 464, y: 8) > Vector(x: 464, y: 210) > Vector(x: 463, y: 209) > Vector(x: 463, y: 9))
Shape: rgb(0,0,0) Path (Vector(x: 464, y: 210) > Vector(x: 312, y: 210) > Vector(x: 313, y: 209) > Vector(x: 463, y: 209))
Shape: rgb(0,0,0) Path (Vector(x: 312, y: 210) > Vector(x: 312, y: 8) > Vector(x: 313, y: 9) > Vector(x: 313, y: 209))
Clip: Path (Vector(x: 464, y: 8) > Vector(x: 616, y: 8) > Vector(x: 616, y: 210) > Vector(x: 464, y: 210))
Repeat: Image ("/tests/assets/image.jpg") [426, -5] Size (228, 228) Path (Vector(x: 426, y: -5) > Vector(x: 654, y: -5) > Vector(x: 654, y: 223) > Vector(x: 426, y: 223))
Shape: rgb(0,0,0) Path (Vector(x: 464, y: 8) > Vector(x: 616, y: 8) > Vector(x: 615, y: 9) > Vector(x: 465, y: 9))
Shape: rgb(0,0,0) Path (Vector(x: 616, y: 8) > Vector(x: 616, y: 210) > Vector(x: 615, y: 209) > Vector(x: 615, y: 9))
Shape: rgb(0,0,0) Path (Vector(x: 616, y: 210) > Vector(x: 464, y: 210) > Vector(x: 465, y: 209) > Vector(x: 615, y: 209))
Shape: rgb(0,0,0) Path (Vector(x: 464, y: 210) > Vector(x: 464, y: 8) > Vector(x: 465, y: 9) > Vector(x: 465, y: 209))
Clip: Path (Vector(x: 8, y: 210) > Vector(x: 408, y: 210) > Vector(x: 408, y: 310) > Vector(x: 8, y: 310))
Repeat: Image ("/tests/assets/image.jpg") [8, 60] Size (400, 400) Path (Vector(x: 8, y: 210) > Vector(x: 408, y: 210) > Vector(x: 408, y: 310) > Vector(x: 8, y: 310))
Clip: Path (Vector(x: 8, y: 310) > Vector(x: 408, y: 310) > Vector(x: 408, y: 410) > Vector(x: 8, y: 410))
Repeat: Image ("/tests/assets/image.jpg") [158, 310] Size (100, 100) Path (Vector(x: 8, y: 310) > Vector(x: 408, y: 310) > Vector(x: 408, y: 410) > Vector(x: 8, y: 410))
Clip: Path (Vector(x: 8, y: 410) > Vector(x: 408, y: 410) > Vector(x: 408, y: 510) > Vector(x: 8, y: 510))
Repeat: Image ("/tests/assets/image.jpg") [158, 410] Size (100, 100) Path (Vector(x: 8, y: 410) > Vector(x: 408, y: 410) > Vector(x: 408, y: 510) > Vector(x: 8, y: 510))
Clip: Path (Vector(x: 8, y: 510) > Vector(x: 408, y: 510) > Vector(x: 408, y: 610) > Vector(x: 8, y: 610))
Repeat: Image ("/tests/assets/image.jpg") [171, 523] Size (75, 75) Path (Vector(x: 8, y: 510) > Vector(x: 408, y: 510) > Vector(x: 408, y: 610) > Vector(x: 8, y: 610))
Clip: Path (Vector(x: 592, y: 210) > Vector(x: 792, y: 210) > Vector(x: 792, y: 410) > Vector(x: 592, y: 410))
Repeat: Image ("/tests/assets/image.jpg") [592, 210] Size (200, 200) Path (Vector(x: 592, y: 210) > Vector(x: 792, y: 210) > Vector(x: 792, y: 410) > Vector(x: 592, y: 410))
Clip: Path (Vector(x: 592, y: 410) > Vector(x: 792, y: 410) > Vector(x: 792, y: 610) > Vector(x: 592, y: 610))
Repeat: Image ("/tests/assets/image.jpg") [592, 410] Size (200, 200) Path (Vector(x: 592, y: 410) > Vector(x: 792, y: 410) > Vector(x: 792, y: 610) > Vector(x: 592, y: 610))
Clip: Path (Vector(x: 592, y: 610) > Vector(x: 792, y: 610) > Vector(x: 792, y: 810) > Vector(x: 592, y: 810))
Repeat: Image ("/tests/assets/image.jpg") [592, 610] Size (200, 200) Path (Vector(x: 592, y: 610) > Vector(x: 792, y: 610) > Vector(x: 792, y: 810) > Vector(x: 592, y: 810))
Clip: Path (Vector(x: 592, y: 810) > Vector(x: 792, y: 810) > Vector(x: 792, y: 1010) > Vector(x: 592, y: 1010))
Repeat: Image ("/tests/assets/image.jpg") [655, 873] Size (75, 75) Path (Vector(x: 592, y: 810) > Vector(x: 792, y: 810) > Vector(x: 792, y: 1010) > Vector(x: 592, y: 1010))

View File

@ -1,27 +0,0 @@
Window: [800, 600]
Rectangle: [0, 0, 800, 600] rgb(58,132,195)
Opacity: 1
Clip: Path (Vector(x: 18, y: 27) > Vector(x: 220, y: 27) > Vector(x: 220, y: 229) > Vector(x: 18, y: 229))
Fill: rgb(111,66,140)
Shape: rgb(0,181,226) Path (Vector(x: 18, y: 27) > Vector(x: 220, y: 27) > Vector(x: 219, y: 28) > Vector(x: 19, y: 28))
Shape: rgb(0,181,226) Path (Vector(x: 220, y: 27) > Vector(x: 220, y: 229) > Vector(x: 219, y: 228) > Vector(x: 219, y: 28))
Shape: rgb(0,181,226) Path (Vector(x: 220, y: 229) > Vector(x: 18, y: 229) > Vector(x: 19, y: 228) > Vector(x: 219, y: 228))
Shape: rgb(0,181,226) Path (Vector(x: 18, y: 229) > Vector(x: 18, y: 27) > Vector(x: 19, y: 28) > Vector(x: 19, y: 228))
Clip: Path (Vector(x: 244, y: 25) > Vector(x: 450, y: 25) > Vector(x: 450, y: 231) > Vector(x: 244, y: 231))
Fill: rgb(111,66,140)
Shape: rgb(255,0,0) Path (Vector(x: 244, y: 25) > Vector(x: 450, y: 25) > Vector(x: 447, y: 28) > Vector(x: 247, y: 28))
Shape: rgb(255,0,0) Path (Vector(x: 450, y: 25) > Vector(x: 450, y: 231) > Vector(x: 447, y: 228) > Vector(x: 447, y: 28))
Shape: rgb(255,0,0) Path (Vector(x: 450, y: 231) > Vector(x: 244, y: 231) > Vector(x: 247, y: 228) > Vector(x: 447, y: 228))
Shape: rgb(255,0,0) Path (Vector(x: 244, y: 231) > Vector(x: 244, y: 25) > Vector(x: 247, y: 28) > Vector(x: 247, y: 228))
Clip: Path (Vector(x: 474, y: 18) > Vector(x: 694, y: 18) > Vector(x: 694, y: 238) > Vector(x: 474, y: 238))
Fill: rgb(111,66,140)
Shape: rgb(0,0,0) Path (Vector(x: 474, y: 18) > Vector(x: 694, y: 18) > Vector(x: 684, y: 28) > Vector(x: 484, y: 28))
Shape: rgb(0,0,0) Path (Vector(x: 694, y: 18) > Vector(x: 694, y: 238) > Vector(x: 684, y: 228) > Vector(x: 684, y: 28))
Shape: rgb(0,0,0) Path (Vector(x: 694, y: 238) > Vector(x: 474, y: 238) > Vector(x: 484, y: 228) > Vector(x: 684, y: 228))
Shape: rgb(0,0,0) Path (Vector(x: 474, y: 238) > Vector(x: 474, y: 18) > Vector(x: 484, y: 28) > Vector(x: 484, y: 228))
Clip: Path (Vector(x: 18, y: 258) > Vector(x: 318, y: 258) > Vector(x: 318, y: 558) > Vector(x: 18, y: 558))
Fill: rgb(111,66,140)
Shape: rgb(0,128,0) Path (Vector(x: 18, y: 258) > Vector(x: 318, y: 258) > Vector(x: 268, y: 308) > Vector(x: 68, y: 308))
Shape: rgb(0,128,0) Path (Vector(x: 318, y: 258) > Vector(x: 318, y: 558) > Vector(x: 268, y: 508) > Vector(x: 268, y: 308))
Shape: rgb(0,128,0) Path (Vector(x: 318, y: 558) > Vector(x: 18, y: 558) > Vector(x: 68, y: 508) > Vector(x: 268, y: 508))
Shape: rgb(0,128,0) Path (Vector(x: 18, y: 558) > Vector(x: 18, y: 258) > Vector(x: 68, y: 308) > Vector(x: 68, y: 508))

View File

@ -1,27 +0,0 @@
Window: [800, 600]
Rectangle: [0, 0, 800, 600] rgb(58,132,195)
Opacity: 1
Clip: Path (Vector(x: 18, y: 27) > Vector(x: 220, y: 27) > Vector(x: 220, y: 229) > Vector(x: 18, y: 229))
Fill: rgb(111,66,140)
Shape: rgb(0,181,226) Path (Vector(x: 18, y: 27) > Vector(x: 220, y: 27) > Vector(x: 219, y: 28) > Vector(x: 19, y: 28))
Shape: rgb(0,181,226) Path (Vector(x: 220, y: 27) > Vector(x: 220, y: 229) > Vector(x: 219, y: 228) > Vector(x: 219, y: 28))
Shape: rgb(0,181,226) Path (Vector(x: 220, y: 229) > Vector(x: 18, y: 229) > Vector(x: 19, y: 228) > Vector(x: 219, y: 228))
Shape: rgb(0,181,226) Path (Vector(x: 18, y: 229) > Vector(x: 18, y: 27) > Vector(x: 19, y: 28) > Vector(x: 19, y: 228))
Clip: Path (Vector(x: 244, y: 25) > Vector(x: 450, y: 25) > Vector(x: 450, y: 231) > Vector(x: 244, y: 231))
Fill: rgb(111,66,140)
Shape: rgb(255,0,0) Path (Vector(x: 244, y: 25) > Vector(x: 450, y: 25) > Vector(x: 447, y: 28) > Vector(x: 247, y: 28))
Shape: rgb(255,0,0) Path (Vector(x: 450, y: 25) > Vector(x: 450, y: 231) > Vector(x: 447, y: 228) > Vector(x: 447, y: 28))
Shape: rgb(255,0,0) Path (Vector(x: 450, y: 231) > Vector(x: 244, y: 231) > Vector(x: 247, y: 228) > Vector(x: 447, y: 228))
Shape: rgb(255,0,0) Path (Vector(x: 244, y: 231) > Vector(x: 244, y: 25) > Vector(x: 247, y: 28) > Vector(x: 247, y: 228))
Clip: Path (Vector(x: 474, y: 18) > Vector(x: 694, y: 18) > Vector(x: 694, y: 238) > Vector(x: 474, y: 238))
Fill: rgb(111,66,140)
Shape: rgb(0,0,0) Path (Vector(x: 474, y: 18) > Vector(x: 694, y: 18) > Vector(x: 684, y: 28) > Vector(x: 484, y: 28))
Shape: rgb(0,0,0) Path (Vector(x: 694, y: 18) > Vector(x: 694, y: 238) > Vector(x: 684, y: 228) > Vector(x: 684, y: 28))
Shape: rgb(0,0,0) Path (Vector(x: 694, y: 238) > Vector(x: 474, y: 238) > Vector(x: 484, y: 228) > Vector(x: 684, y: 228))
Shape: rgb(0,0,0) Path (Vector(x: 474, y: 238) > Vector(x: 474, y: 18) > Vector(x: 484, y: 28) > Vector(x: 484, y: 228))
Clip: Path (Vector(x: 18, y: 258) > Vector(x: 318, y: 258) > Vector(x: 318, y: 558) > Vector(x: 18, y: 558))
Fill: rgb(111,66,140)
Shape: rgb(0,128,0) Path (Vector(x: 18, y: 258) > Vector(x: 318, y: 258) > Vector(x: 268, y: 308) > Vector(x: 68, y: 308))
Shape: rgb(0,128,0) Path (Vector(x: 318, y: 258) > Vector(x: 318, y: 558) > Vector(x: 268, y: 508) > Vector(x: 268, y: 308))
Shape: rgb(0,128,0) Path (Vector(x: 318, y: 558) > Vector(x: 18, y: 558) > Vector(x: 68, y: 508) > Vector(x: 268, y: 508))
Shape: rgb(0,128,0) Path (Vector(x: 18, y: 558) > Vector(x: 18, y: 258) > Vector(x: 68, y: 308) > Vector(x: 68, y: 508))

View File

@ -1,27 +0,0 @@
Window: [800, 600]
Rectangle: [0, 0, 800, 600] rgb(58,132,195)
Opacity: 1
Clip: Path (Vector(x: 18, y: 27) > Vector(x: 220, y: 27) > Vector(x: 220, y: 229) > Vector(x: 18, y: 229))
Fill: rgb(111,66,140)
Shape: rgb(0,181,226) Path (Vector(x: 18, y: 27) > Vector(x: 220, y: 27) > Vector(x: 219, y: 28) > Vector(x: 19, y: 28))
Shape: rgb(0,181,226) Path (Vector(x: 220, y: 27) > Vector(x: 220, y: 229) > Vector(x: 219, y: 228) > Vector(x: 219, y: 28))
Shape: rgb(0,181,226) Path (Vector(x: 220, y: 229) > Vector(x: 18, y: 229) > Vector(x: 19, y: 228) > Vector(x: 219, y: 228))
Shape: rgb(0,181,226) Path (Vector(x: 18, y: 229) > Vector(x: 18, y: 27) > Vector(x: 19, y: 28) > Vector(x: 19, y: 228))
Clip: Path (Vector(x: 244, y: 25) > Vector(x: 450, y: 25) > Vector(x: 450, y: 231) > Vector(x: 244, y: 231))
Fill: rgb(111,66,140)
Shape: rgb(255,0,0) Path (Vector(x: 244, y: 25) > Vector(x: 450, y: 25) > Vector(x: 447, y: 28) > Vector(x: 247, y: 28))
Shape: rgb(255,0,0) Path (Vector(x: 450, y: 25) > Vector(x: 450, y: 231) > Vector(x: 447, y: 228) > Vector(x: 447, y: 28))
Shape: rgb(255,0,0) Path (Vector(x: 450, y: 231) > Vector(x: 244, y: 231) > Vector(x: 247, y: 228) > Vector(x: 447, y: 228))
Shape: rgb(255,0,0) Path (Vector(x: 244, y: 231) > Vector(x: 244, y: 25) > Vector(x: 247, y: 28) > Vector(x: 247, y: 228))
Clip: Path (Vector(x: 474, y: 18) > Vector(x: 694, y: 18) > Vector(x: 694, y: 238) > Vector(x: 474, y: 238))
Fill: rgb(111,66,140)
Shape: rgb(0,0,0) Path (Vector(x: 474, y: 18) > Vector(x: 694, y: 18) > Vector(x: 684, y: 28) > Vector(x: 484, y: 28))
Shape: rgb(0,0,0) Path (Vector(x: 694, y: 18) > Vector(x: 694, y: 238) > Vector(x: 684, y: 228) > Vector(x: 684, y: 28))
Shape: rgb(0,0,0) Path (Vector(x: 694, y: 238) > Vector(x: 474, y: 238) > Vector(x: 484, y: 228) > Vector(x: 684, y: 228))
Shape: rgb(0,0,0) Path (Vector(x: 474, y: 238) > Vector(x: 474, y: 18) > Vector(x: 484, y: 28) > Vector(x: 484, y: 228))
Clip: Path (Vector(x: 18, y: 258) > Vector(x: 318, y: 258) > Vector(x: 318, y: 558) > Vector(x: 18, y: 558))
Fill: rgb(111,66,140)
Shape: rgb(0,128,0) Path (Vector(x: 18, y: 258) > Vector(x: 318, y: 258) > Vector(x: 268, y: 308) > Vector(x: 68, y: 308))
Shape: rgb(0,128,0) Path (Vector(x: 318, y: 258) > Vector(x: 318, y: 558) > Vector(x: 268, y: 508) > Vector(x: 268, y: 308))
Shape: rgb(0,128,0) Path (Vector(x: 318, y: 558) > Vector(x: 18, y: 558) > Vector(x: 68, y: 508) > Vector(x: 268, y: 508))
Shape: rgb(0,128,0) Path (Vector(x: 18, y: 558) > Vector(x: 18, y: 258) > Vector(x: 68, y: 308) > Vector(x: 68, y: 508))

View File

@ -1,40 +0,0 @@
Window: [800, 693]
Rectangle: [0, 0, 800, 693] rgb(58,132,195)
Opacity: 1
Clip: Path (Vector(x: 18, y: 27) > Vector(x: 220, y: 27) > Vector(x: 220, y: 229) > Vector(x: 18, y: 229))
Fill: rgb(111,66,140)
Shape: rgb(0,181,226) Path (Vector(x: 18, y: 27) > Vector(x: 220, y: 27) > Vector(x: 219, y: 28) > Vector(x: 19, y: 28))
Shape: rgb(0,181,226) Path (Vector(x: 220, y: 27) > Vector(x: 220, y: 229) > Vector(x: 219, y: 228) > Vector(x: 219, y: 28))
Shape: rgb(0,181,226) Path (Vector(x: 220, y: 229) > Vector(x: 18, y: 229) > Vector(x: 19, y: 228) > Vector(x: 219, y: 228))
Shape: rgb(0,181,226) Path (Vector(x: 18, y: 229) > Vector(x: 18, y: 27) > Vector(x: 19, y: 28) > Vector(x: 19, y: 228))
Clip: Path (Vector(x: 244, y: 25) > Vector(x: 450, y: 25) > Vector(x: 450, y: 231) > Vector(x: 244, y: 231))
Fill: rgb(111,66,140)
Shape: rgb(255,0,0) Path (Vector(x: 244, y: 25) > Vector(x: 450, y: 25) > Vector(x: 447, y: 28) > Vector(x: 247, y: 28))
Shape: rgb(255,0,0) Path (Vector(x: 450, y: 25) > Vector(x: 450, y: 231) > Vector(x: 447, y: 228) > Vector(x: 447, y: 28))
Shape: rgb(255,0,0) Path (Vector(x: 450, y: 231) > Vector(x: 244, y: 231) > Vector(x: 247, y: 228) > Vector(x: 447, y: 228))
Shape: rgb(255,0,0) Path (Vector(x: 244, y: 231) > Vector(x: 244, y: 25) > Vector(x: 247, y: 28) > Vector(x: 247, y: 228))
Clip: Path (Vector(x: 474, y: 18) > Vector(x: 694, y: 18) > Vector(x: 694, y: 238) > Vector(x: 474, y: 238))
Fill: rgb(111,66,140)
Shape: rgb(0,0,0) Path (Vector(x: 474, y: 18) > Vector(x: 694, y: 18) > Vector(x: 684, y: 28) > Vector(x: 484, y: 28))
Shape: rgb(0,0,0) Path (Vector(x: 694, y: 18) > Vector(x: 694, y: 238) > Vector(x: 684, y: 228) > Vector(x: 684, y: 28))
Shape: rgb(0,0,0) Path (Vector(x: 694, y: 238) > Vector(x: 474, y: 238) > Vector(x: 484, y: 228) > Vector(x: 684, y: 228))
Shape: rgb(0,0,0) Path (Vector(x: 474, y: 238) > Vector(x: 474, y: 18) > Vector(x: 484, y: 28) > Vector(x: 484, y: 228))
Clip: Path (Vector(x: 18, y: 258) > Vector(x: 318, y: 258) > Vector(x: 318, y: 558) > Vector(x: 18, y: 558))
Fill: rgb(111,66,140)
Shape: rgb(0,128,0) Path (Vector(x: 18, y: 258) > Vector(x: 318, y: 258) > Vector(x: 268, y: 308) > Vector(x: 68, y: 308))
Shape: rgb(0,128,0) Path (Vector(x: 318, y: 258) > Vector(x: 318, y: 558) > Vector(x: 268, y: 508) > Vector(x: 268, y: 308))
Shape: rgb(0,128,0) Path (Vector(x: 318, y: 558) > Vector(x: 18, y: 558) > Vector(x: 68, y: 508) > Vector(x: 268, y: 508))
Shape: rgb(0,128,0) Path (Vector(x: 18, y: 558) > Vector(x: 18, y: 258) > Vector(x: 68, y: 308) > Vector(x: 68, y: 508))
Clip: Path (Vector(x: 342, y: 258) > Vector(x: 642, y: 258) > Vector(x: 642, y: 558) > Vector(x: 342, y: 558))
Fill: rgb(111,66,140)
Shape: rgb(0,0,0) Path (Vector(x: 342, y: 258) > Vector(x: 642, y: 258) > Vector(x: 592, y: 308) > Vector(x: 392, y: 308))
Shape: rgb(0,0,0) Path (Vector(x: 642, y: 258) > Vector(x: 642, y: 558) > Vector(x: 592, y: 508) > Vector(x: 592, y: 308))
Shape: rgb(0,0,0) Path (Vector(x: 642, y: 558) > Vector(x: 342, y: 558) > Vector(x: 392, y: 508) > Vector(x: 592, y: 508))
Shape: rgb(0,0,0) Path (Vector(x: 342, y: 558) > Vector(x: 342, y: 258) > Vector(x: 392, y: 308) > Vector(x: 392, y: 508))
Clip: Path (Vector(x: 8, y: 568) > Vector(x: 308, y: 568) > Vector(x: 308, y: 685) > Vector(x: 8, y: 685))
Fill: rgb(255,255,255)
Shape: rgb(0,0,0) Path (Vector(x: 8, y: 568) > Vector(x: 308, y: 568) > Vector(x: 258, y: 618) > Vector(x: 58, y: 618))
Shape: rgb(0,0,0) Path (Vector(x: 308, y: 568) > Vector(x: 308, y: 685) > Vector(x: 258, y: 635) > Vector(x: 258, y: 618))
Shape: rgb(0,0,0) Path (Vector(x: 308, y: 685) > Vector(x: 8, y: 685) > Vector(x: 58, y: 635) > Vector(x: 258, y: 635))
Shape: rgb(0,0,0) Path (Vector(x: 8, y: 685) > Vector(x: 8, y: 568) > Vector(x: 58, y: 618) > Vector(x: 58, y: 635))
Clip: Path (Vector(x: 58, y: 618) > Vector(x: 258, y: 618) > Vector(x: 258, y: 635) > Vector(x: 58, y: 635))

View File

@ -1,36 +0,0 @@
Window: [800, 996]
Rectangle: [0, 0, 800, 996] rgb(58,132,195)
Opacity: 1
Clip: Path (BezierCurve(x0: 18, y0: 77, x1: 68, y1: 27, cx0: 18, cy0: 49, cx1: 40, cy1: 27) > BezierCurve(x0: 170, y0: 27, x1: 220, y1: 77, cx0: 198, cy0: 27, cx1: 220, cy1: 49) > BezierCurve(x0: 220, y0: 179, x1: 170, y1: 229, cx0: 220, cy0: 206, cx1: 198, cy1: 229) > BezierCurve(x0: 68, y0: 229, x1: 18, y1: 179, cx0: 40, cy0: 229, cx1: 18, cy1: 206))
Fill: rgb(111,66,140)
Shape: rgb(255,0,0) Path (BezierCurve(x0: 33, y0: 41, x1: 68, y1: 27, cx0: 42, cy0: 32, cx1: 54, cy1: 27) > BezierCurve(x0: 170, y0: 27, x1: 205, y1: 41, cx0: 184, cy0: 27, cx1: 196, cy1: 32) > BezierCurve(x0: 205, y0: 42, x1: 170, y1: 28, cx0: 196, cy0: 33, cx1: 184, cy1: 28) > BezierCurve(x0: 68, y0: 28, x1: 33, y1: 42, cx0: 54, cy0: 28, cx1: 42, cy1: 33))
Shape: rgb(0,128,0) Path (BezierCurve(x0: 205, y0: 41, x1: 220, y1: 77, cx0: 214, cy0: 50, cx1: 220, cy1: 63) > BezierCurve(x0: 220, y0: 179, x1: 205, y1: 214, cx0: 220, cy0: 193, cx1: 214, cy1: 205) > BezierCurve(x0: 205, y0: 213, x1: 219, y1: 179, cx0: 214, cy0: 205, cx1: 219, cy1: 192) > BezierCurve(x0: 219, y0: 77, x1: 205, y1: 42, cx0: 219, cy0: 63, cx1: 214, cy1: 51))
Shape: rgb(0,0,0) Path (BezierCurve(x0: 205, y0: 214, x1: 170, y1: 229, cx0: 196, cy0: 223, cx1: 184, cy1: 229) > BezierCurve(x0: 68, y0: 229, x1: 33, y1: 214, cx0: 54, cy0: 229, cx1: 42, cy1: 223) > BezierCurve(x0: 33, y0: 213, x1: 68, y1: 228, cx0: 42, cy0: 222, cx1: 54, cy1: 228) > BezierCurve(x0: 170, y0: 228, x1: 205, y1: 213, cx0: 184, cy0: 228, cx1: 196, cy1: 222))
Shape: rgb(0,181,226) Path (BezierCurve(x0: 33, y0: 214, x1: 18, y1: 179, cx0: 24, cy0: 205, cx1: 18, cy1: 193) > BezierCurve(x0: 18, y0: 77, x1: 33, y1: 41, cx0: 18, cy0: 63, cx1: 24, cy1: 50) > BezierCurve(x0: 33, y0: 42, x1: 19, y1: 77, cx0: 24, cy0: 51, cx1: 19, cy1: 63) > BezierCurve(x0: 19, y0: 179, x1: 33, y1: 213, cx0: 19, cy0: 192, cx1: 24, cy1: 205))
Clip: Path (BezierCurve(x0: 244, y0: 75, x1: 294, y1: 25, cx0: 244, cy0: 47, cx1: 266, cy1: 25) > BezierCurve(x0: 400, y0: 25, x1: 450, y1: 75, cx0: 428, cy0: 25, cx1: 450, cy1: 47) > BezierCurve(x0: 450, y0: 181, x1: 400, y1: 231, cx0: 450, cy0: 208, cx1: 428, cy1: 231) > BezierCurve(x0: 294, y0: 231, x1: 244, y1: 181, cx0: 266, cy0: 231, cx1: 244, cy1: 208))
Fill: rgb(111,66,140)
Shape: rgb(255,0,0) Path (BezierCurve(x0: 259, y0: 39, x1: 294, y1: 25, cx0: 268, cy0: 30, cx1: 280, cy1: 25) > BezierCurve(x0: 400, y0: 25, x1: 435, y1: 39, cx0: 414, cy0: 25, cx1: 426, cy1: 30) > BezierCurve(x0: 433, y0: 42, x1: 400, y1: 28, cx0: 425, cy0: 33, cx1: 413, cy1: 28) > BezierCurve(x0: 294, y0: 28, x1: 261, y1: 42, cx0: 281, cy0: 28, cx1: 269, cy1: 33))
Shape: rgb(0,128,0) Path (BezierCurve(x0: 435, y0: 39, x1: 450, y1: 75, cx0: 444, cy0: 48, cx1: 450, cy1: 61) > BezierCurve(x0: 450, y0: 181, x1: 435, y1: 216, cx0: 450, cy0: 195, cx1: 444, cy1: 207) > BezierCurve(x0: 433, y0: 214, x1: 447, y1: 181, cx0: 442, cy0: 206, cx1: 447, cy1: 194) > BezierCurve(x0: 447, y0: 75, x1: 433, y1: 42, cx0: 447, cy0: 62, cx1: 442, cy1: 50))
Shape: rgb(0,0,0) Path (BezierCurve(x0: 435, y0: 216, x1: 400, y1: 231, cx0: 426, cy0: 225, cx1: 414, cy1: 231) > BezierCurve(x0: 294, y0: 231, x1: 259, y1: 216, cx0: 280, cy0: 231, cx1: 268, cy1: 225) > BezierCurve(x0: 261, y0: 214, x1: 294, y1: 228, cx0: 269, cy0: 223, cx1: 281, cy1: 228) > BezierCurve(x0: 400, y0: 228, x1: 433, y1: 214, cx0: 413, cy0: 228, cx1: 425, cy1: 223))
Shape: rgb(0,181,226) Path (BezierCurve(x0: 259, y0: 216, x1: 244, y1: 181, cx0: 250, cy0: 207, cx1: 244, cy1: 195) > BezierCurve(x0: 244, y0: 75, x1: 259, y1: 39, cx0: 244, cy0: 61, cx1: 250, cy1: 48) > BezierCurve(x0: 261, y0: 42, x1: 247, y1: 75, cx0: 252, cy0: 50, cx1: 247, cy1: 62) > BezierCurve(x0: 247, y0: 181, x1: 261, y1: 214, cx0: 247, cy0: 194, cx1: 252, cy1: 206))
Clip: Path (BezierCurve(x0: 474, y0: 68, x1: 524, y1: 18, cx0: 474, cy0: 40, cx1: 496, cy1: 18) > BezierCurve(x0: 644, y0: 18, x1: 694, y1: 68, cx0: 672, cy0: 18, cx1: 694, cy1: 40) > BezierCurve(x0: 694, y0: 188, x1: 644, y1: 238, cx0: 694, cy0: 216, cx1: 672, cy1: 238) > BezierCurve(x0: 524, y0: 238, x1: 474, y1: 188, cx0: 496, cy0: 238, cx1: 474, cy1: 216))
Fill: rgb(111,66,140)
Shape: rgb(255,0,0) Path (BezierCurve(x0: 489, y0: 33, x1: 524, y1: 18, cx0: 498, cy0: 24, cx1: 510, cy1: 18) > BezierCurve(x0: 644, y0: 18, x1: 679, y1: 33, cx0: 658, cy0: 18, cx1: 670, cy1: 24) > BezierCurve(x0: 672, y0: 40, x1: 644, y1: 28, cx0: 665, cy0: 32, cx1: 655, cy1: 28) > BezierCurve(x0: 524, y0: 28, x1: 496, y1: 40, cx0: 513, cy0: 28, cx1: 503, cy1: 32))
Shape: rgb(0,128,0) Path (BezierCurve(x0: 679, y0: 33, x1: 694, y1: 68, cx0: 688, cy0: 42, cx1: 694, cy1: 54) > BezierCurve(x0: 694, y0: 188, x1: 679, y1: 223, cx0: 694, cy0: 202, cx1: 688, cy1: 214) > BezierCurve(x0: 672, y0: 216, x1: 684, y1: 188, cx0: 680, cy0: 209, cx1: 684, cy1: 199) > BezierCurve(x0: 684, y0: 68, x1: 672, y1: 40, cx0: 684, cy0: 57, cx1: 680, cy1: 47))
Shape: rgb(0,0,0) Path (BezierCurve(x0: 679, y0: 223, x1: 644, y1: 238, cx0: 670, cy0: 232, cx1: 658, cy1: 238) > BezierCurve(x0: 524, y0: 238, x1: 489, y1: 223, cx0: 510, cy0: 238, cx1: 498, cy1: 232) > BezierCurve(x0: 496, y0: 216, x1: 524, y1: 228, cx0: 503, cy0: 224, cx1: 513, cy1: 228) > BezierCurve(x0: 644, y0: 228, x1: 672, y1: 216, cx0: 655, cy0: 228, cx1: 665, cy1: 224))
Clip: Path (BezierCurve(x0: 68, y0: 308, x1: 68, y1: 268, cx0: 68, cy0: 286, cx1: 68, cy1: 268) > BezierCurve(x0: 268, y0: 268, x1: 268, y1: 308, cx0: 268, cy0: 268, cx1: 268, cy1: 286) > BezierCurve(x0: 268, y0: 388, x1: 168, y1: 468, cx0: 268, cy0: 432, cx1: 223, cy1: 468) > BezierCurve(x0: 68, y0: 468, x1: 68, y1: 468, cx0: 68, cy0: 468, cx1: 68, cy1: 468))
Fill: rgb(111,66,140)
Shape: rgb(255,0,0) Path (BezierCurve(x0: 33, y0: 273, x1: 68, y1: 258, cx0: 42, cy0: 264, cx1: 54, cy1: 258) > BezierCurve(x0: 268, y0: 258, x1: 303, y1: 273, cx0: 282, cy0: 258, cx1: 294, cy1: 264) > BezierCurve(x0: 268, y0: 280, x1: 268, y1: 268, cx0: 268, cy0: 272, cx1: 268, cy1: 268) > BezierCurve(x0: 68, y0: 268, x1: 68, y1: 280, cx0: 68, cy0: 268, cx1: 68, cy1: 272))
Shape: rgb(0,128,0) Path (BezierCurve(x0: 303, y0: 273, x1: 318, y1: 308, cx0: 312, cy0: 282, cx1: 318, cy1: 294) > BezierCurve(x0: 318, y0: 388, x1: 274, y1: 480, cx0: 318, cy0: 424, cx1: 301, cy1: 456) > BezierCurve(x0: 239, y0: 445, x1: 268, y1: 388, cx0: 257, cy0: 430, cx1: 268, cy1: 410) > BezierCurve(x0: 268, y0: 308, x1: 268, y1: 280, cx0: 268, cy0: 297, cx1: 268, cy1: 287))
Shape: rgb(0,0,0) Path (BezierCurve(x0: 274, y0: 480, x1: 168, y1: 518, cx0: 247, cy0: 503, cx1: 209, cy1: 518) > BezierCurve(x0: 68, y0: 518, x1: 33, y1: 503, cx0: 54, cy0: 518, cx1: 42, cy1: 512) > BezierCurve(x0: 68, y0: 468, x1: 68, y1: 468, cx0: 68, cy0: 468, cx1: 68, cy1: 468) > BezierCurve(x0: 168, y0: 468, x1: 239, y1: 445, cx0: 196, cy0: 468, cx1: 221, cy1: 459))
Clip: Path (BezierCurve(x0: 158, y0: 653, x1: 158, y1: 638, cx0: 158, cy0: 645, cx1: 158, cy1: 638) > BezierCurve(x0: 383, y0: 638, x1: 358, y1: 653, cx0: 369, cy0: 638, cx1: 358, cy1: 645) > BezierCurve(x0: 358, y0: 863, x1: 358, y1: 838, cx0: 358, cy0: 849, cx1: 358, cy1: 838) > BezierCurve(x0: 158, y0: 838, x1: 158, y1: 863, cx0: 158, cy0: 838, cx1: 158, cy1: 849))
Fill: rgb(111,66,140)
Shape: rgb(255,0,0) Path (BezierCurve(x0: 115, y0: 635, x1: 133, y1: 628, cx0: 120, cy0: 631, cx1: 126, cy1: 628) > BezierCurve(x0: 383, y0: 628, x1: 401, y1: 635, cx0: 390, cy0: 628, cx1: 396, cy1: 631) > BezierCurve(x0: 365, y0: 642, x1: 383, y1: 638, cx0: 370, cy0: 640, cx1: 376, cy1: 638) > BezierCurve(x0: 158, y0: 638, x1: 158, y1: 642, cx0: 158, cy0: 638, cx1: 158, cy1: 640))
Shape: rgb(0,128,0) Path (BezierCurve(x0: 401, y0: 635, x1: 408, y1: 653, cx0: 405, cy0: 640, cx1: 408, cy1: 646) > BezierCurve(x0: 408, y0: 863, x1: 401, y1: 881, cx0: 408, cy0: 870, cx1: 405, cy1: 876) > BezierCurve(x0: 358, y0: 845, x1: 358, y1: 863, cx0: 358, cy0: 850, cx1: 358, cy1: 856) > BezierCurve(x0: 358, y0: 653, x1: 365, y1: 642, cx0: 358, cy0: 649, cx1: 361, cy1: 645))
Shape: rgb(0,0,0) Path (BezierCurve(x0: 401, y0: 881, x1: 383, y1: 888, cx0: 396, cy0: 885, cx1: 390, cy1: 888) > BezierCurve(x0: 133, y0: 888, x1: 115, y1: 881, cx0: 126, cy0: 888, cx1: 120, cy1: 885) > BezierCurve(x0: 158, y0: 845, x1: 158, y1: 838, cx0: 158, cy0: 841, cx1: 158, cy1: 838) > BezierCurve(x0: 358, y0: 838, x1: 358, y1: 845, cx0: 358, cy0: 838, cx1: 358, cy1: 841))
Clip: Path (BezierCurve(x0: 522, y0: 738, x1: 623, y1: 637, cx0: 522, cy0: 682, cx1: 567, cy1: 637) > BezierCurve(x0: 623, y0: 637, x1: 724, y1: 738, cx0: 679, cy0: 637, cx1: 724, cy1: 682) > BezierCurve(x0: 724, y0: 738, x1: 623, y1: 839, cx0: 724, cy0: 794, cx1: 679, cy1: 839) > BezierCurve(x0: 623, y0: 839, x1: 522, y1: 738, cx0: 567, cy0: 839, cx1: 522, cy1: 794))
Fill: rgb(111,66,140)
Shape: rgb(0,0,0) Path (BezierCurve(x0: 552, y0: 666, x1: 623, y1: 637, cx0: 570, cy0: 648, cx1: 595, cy1: 637) > BezierCurve(x0: 623, y0: 637, x1: 695, y1: 666, cx0: 651, cy0: 637, cx1: 676, cy1: 648) > BezierCurve(x0: 694, y0: 667, x1: 623, y1: 638, cx0: 676, cy0: 649, cx1: 651, cy1: 638) > BezierCurve(x0: 623, y0: 638, x1: 552, y1: 667, cx0: 596, cy0: 638, cx1: 571, cy1: 649))
Shape: rgb(0,0,0) Path (BezierCurve(x0: 695, y0: 666, x1: 724, y1: 738, cx0: 713, cy0: 685, cx1: 724, cy1: 710) > BezierCurve(x0: 724, y0: 738, x1: 695, y1: 810, cx0: 724, cy0: 766, cx1: 713, cy1: 791) > BezierCurve(x0: 694, y0: 809, x1: 723, y1: 738, cx0: 712, cy0: 791, cx1: 723, cy1: 766) > BezierCurve(x0: 723, y0: 738, x1: 694, y1: 667, cx0: 723, cy0: 710, cx1: 712, cy1: 685))
Shape: rgb(0,0,0) Path (BezierCurve(x0: 695, y0: 810, x1: 623, y1: 839, cx0: 676, cy0: 828, cx1: 651, cy1: 839) > BezierCurve(x0: 623, y0: 839, x1: 552, y1: 810, cx0: 595, cy0: 839, cx1: 570, cy1: 828) > BezierCurve(x0: 552, y0: 809, x1: 623, y1: 838, cx0: 571, cy0: 827, cx1: 596, cy1: 838) > BezierCurve(x0: 623, y0: 838, x1: 694, y1: 809, cx0: 651, cy0: 838, cx1: 676, cy1: 827))
Shape: rgb(0,0,0) Path (BezierCurve(x0: 552, y0: 810, x1: 522, y1: 738, cx0: 533, cy0: 791, cx1: 522, cy1: 766) > BezierCurve(x0: 522, y0: 738, x1: 552, y1: 666, cx0: 522, cy0: 710, cx1: 533, cy1: 685) > BezierCurve(x0: 552, y0: 667, x1: 523, y1: 738, cx0: 534, cy0: 685, cx1: 523, cy1: 710) > BezierCurve(x0: 523, y0: 738, x1: 552, y1: 809, cx0: 523, cy0: 766, cx1: 534, cy1: 791))

View File

@ -1,27 +0,0 @@
Window: [800, 600]
Rectangle: [0, 0, 800, 600] rgb(58,132,195)
Opacity: 1
Clip: Path (Vector(x: 18, y: 27) > Vector(x: 220, y: 27) > Vector(x: 220, y: 229) > Vector(x: 18, y: 229))
Fill: rgb(111,66,140)
Shape: rgb(0,181,226) Path (Vector(x: 18, y: 27) > Vector(x: 220, y: 27) > Vector(x: 219, y: 28) > Vector(x: 19, y: 28))
Shape: rgb(0,181,226) Path (Vector(x: 220, y: 27) > Vector(x: 220, y: 229) > Vector(x: 219, y: 228) > Vector(x: 219, y: 28))
Shape: rgb(0,181,226) Path (Vector(x: 220, y: 229) > Vector(x: 18, y: 229) > Vector(x: 19, y: 228) > Vector(x: 219, y: 228))
Shape: rgb(0,181,226) Path (Vector(x: 18, y: 229) > Vector(x: 18, y: 27) > Vector(x: 19, y: 28) > Vector(x: 19, y: 228))
Clip: Path (Vector(x: 244, y: 25) > Vector(x: 450, y: 25) > Vector(x: 450, y: 231) > Vector(x: 244, y: 231))
Fill: rgb(111,66,140)
Shape: rgb(255,0,0) Path (Vector(x: 244, y: 25) > Vector(x: 450, y: 25) > Vector(x: 447, y: 28) > Vector(x: 247, y: 28))
Shape: rgb(255,0,0) Path (Vector(x: 450, y: 25) > Vector(x: 450, y: 231) > Vector(x: 447, y: 228) > Vector(x: 447, y: 28))
Shape: rgb(255,0,0) Path (Vector(x: 450, y: 231) > Vector(x: 244, y: 231) > Vector(x: 247, y: 228) > Vector(x: 447, y: 228))
Shape: rgb(255,0,0) Path (Vector(x: 244, y: 231) > Vector(x: 244, y: 25) > Vector(x: 247, y: 28) > Vector(x: 247, y: 228))
Clip: Path (Vector(x: 474, y: 18) > Vector(x: 694, y: 18) > Vector(x: 694, y: 238) > Vector(x: 474, y: 238))
Fill: rgb(111,66,140)
Shape: rgb(0,0,0) Path (Vector(x: 474, y: 18) > Vector(x: 694, y: 18) > Vector(x: 684, y: 28) > Vector(x: 484, y: 28))
Shape: rgb(0,0,0) Path (Vector(x: 694, y: 18) > Vector(x: 694, y: 238) > Vector(x: 684, y: 228) > Vector(x: 684, y: 28))
Shape: rgb(0,0,0) Path (Vector(x: 694, y: 238) > Vector(x: 474, y: 238) > Vector(x: 484, y: 228) > Vector(x: 684, y: 228))
Shape: rgb(0,0,0) Path (Vector(x: 474, y: 238) > Vector(x: 474, y: 18) > Vector(x: 484, y: 28) > Vector(x: 484, y: 228))
Clip: Path (Vector(x: 18, y: 258) > Vector(x: 318, y: 258) > Vector(x: 318, y: 558) > Vector(x: 18, y: 558))
Fill: rgb(111,66,140)
Shape: rgb(0,128,0) Path (Vector(x: 18, y: 258) > Vector(x: 318, y: 258) > Vector(x: 268, y: 308) > Vector(x: 68, y: 308))
Shape: rgb(0,128,0) Path (Vector(x: 318, y: 258) > Vector(x: 318, y: 558) > Vector(x: 268, y: 508) > Vector(x: 268, y: 308))
Shape: rgb(0,128,0) Path (Vector(x: 318, y: 558) > Vector(x: 18, y: 558) > Vector(x: 68, y: 508) > Vector(x: 268, y: 508))
Shape: rgb(0,128,0) Path (Vector(x: 18, y: 558) > Vector(x: 18, y: 258) > Vector(x: 68, y: 308) > Vector(x: 68, y: 508))

View File

@ -1,178 +0,0 @@
Window: [800, 600]
Rectangle: [0, 0, 800, 600] rgba(0,0,0,0)
Opacity: 1
Clip: Path (Vector(x: 8, y: 8) > Vector(x: 792, y: 8) > Vector(x: 792, y: 104) > Vector(x: 8, y: 104))
Fill: rgb(255,0,0)
Shape: rgb(0,0,255) Path (Vector(x: 8, y: 8) > Vector(x: 792, y: 8) > Vector(x: 787, y: 13) > Vector(x: 13, y: 13))
Shape: rgb(0,0,255) Path (Vector(x: 792, y: 8) > Vector(x: 792, y: 104) > Vector(x: 787, y: 99) > Vector(x: 787, y: 13))
Shape: rgb(0,0,255) Path (Vector(x: 792, y: 104) > Vector(x: 8, y: 104) > Vector(x: 13, y: 99) > Vector(x: 787, y: 99))
Shape: rgb(0,0,255) Path (Vector(x: 8, y: 104) > Vector(x: 8, y: 8) > Vector(x: 13, y: 13) > Vector(x: 13, y: 99))
Text: rgb(0,0,0) normal normal 400 16 Arial
[13, 13]: Some
[59, 13]: inline
[101, 13]: text
Text: rgb(0,0,0) normal normal 400 16 Arial
[302, 13]: followed
[365, 13]: by
[387, 13]: more
[427, 13]: inline
[469, 13]: text.
Text: rgb(0,0,0) normal normal 400 16 Arial
[13, 81]: Then
[54, 81]: more
[95, 81]: inline
[137, 81]: text.
Clip: Path (Vector(x: 13, y: 47) > Vector(x: 787, y: 47) > Vector(x: 787, y: 65) > Vector(x: 13, y: 65))
Fill: rgb(0,128,0)
Text: rgb(0,0,0) normal normal 400 16 Arial
[13, 47]: Then
[54, 47]: a
[67, 47]: block
[109, 47]: level
[147, 47]: element.
Text: rgb(0,0,255) normal normal 400 16 Arial
[131, 13]: followed
[195, 13]: by
[216, 13]: text
[246, 13]: in
[263, 13]: span
Clip: Path (Vector(x: 8, y: 104) > Vector(x: 792, y: 104) > Vector(x: 792, y: 200) > Vector(x: 8, y: 200))
Fill: rgb(255,0,0)
Shape: rgb(0,0,255) Path (Vector(x: 8, y: 104) > Vector(x: 792, y: 104) > Vector(x: 787, y: 109) > Vector(x: 13, y: 109))
Shape: rgb(0,0,255) Path (Vector(x: 792, y: 104) > Vector(x: 792, y: 200) > Vector(x: 787, y: 195) > Vector(x: 787, y: 109))
Shape: rgb(0,0,255) Path (Vector(x: 792, y: 200) > Vector(x: 8, y: 200) > Vector(x: 13, y: 195) > Vector(x: 787, y: 195))
Shape: rgb(0,0,255) Path (Vector(x: 8, y: 200) > Vector(x: 8, y: 104) > Vector(x: 13, y: 109) > Vector(x: 13, y: 195))
Text: rgb(0,0,0) normal normal 400 16 Arial
[13, 109]: Some
[59, 109]: inline
[101, 109]: text
Text: rgb(0,0,0) normal normal 400 16 Arial
[302, 109]: followed
[365, 109]: by
[387, 109]: more
[427, 109]: inline
[469, 109]: text.
Text: rgb(0,0,0) normal normal 400 16 Arial
[13, 177]: Then
[54, 177]: more
[95, 177]: inline
[137, 177]: text.
Clip: Path (Vector(x: 13, y: 143) > Vector(x: 787, y: 143) > Vector(x: 787, y: 161) > Vector(x: 13, y: 161))
Fill: rgb(0,128,0)
Text: rgb(0,0,0) normal normal 400 16 Arial
[13, 143]: Then
[54, 143]: a
[67, 143]: block
[109, 143]: level
[147, 143]: element.
Text: rgb(0,0,255) normal normal 400 16 Arial
[131, 109]: followed
[195, 109]: by
[216, 109]: text
[246, 109]: in
[263, 109]: span
Clip: Path (Vector(x: 8, y: 200) > Vector(x: 504, y: 200) > Vector(x: 504, y: 296) > Vector(x: 8, y: 296))
Fill: rgb(255,0,0)
Shape: rgb(0,0,255) Path (Vector(x: 8, y: 200) > Vector(x: 504, y: 200) > Vector(x: 499, y: 205) > Vector(x: 13, y: 205))
Shape: rgb(0,0,255) Path (Vector(x: 504, y: 200) > Vector(x: 504, y: 296) > Vector(x: 499, y: 291) > Vector(x: 499, y: 205))
Shape: rgb(0,0,255) Path (Vector(x: 504, y: 296) > Vector(x: 8, y: 296) > Vector(x: 13, y: 291) > Vector(x: 499, y: 291))
Shape: rgb(0,0,255) Path (Vector(x: 8, y: 296) > Vector(x: 8, y: 200) > Vector(x: 13, y: 205) > Vector(x: 13, y: 291))
Text: rgb(0,0,0) normal normal 400 16 Arial
[13, 205]: Some
[59, 205]: inline
[101, 205]: text
Text: rgb(0,0,0) normal normal 400 16 Arial
[302, 205]: followed
[365, 205]: by
[387, 205]: more
[427, 205]: inline
[469, 205]: text.
Text: rgb(0,0,0) normal normal 400 16 Arial
[13, 273]: Then
[54, 273]: more
[95, 273]: inline
[137, 273]: text.
Clip: Path (Vector(x: 13, y: 239) > Vector(x: 499, y: 239) > Vector(x: 499, y: 257) > Vector(x: 13, y: 257))
Fill: rgb(0,128,0)
Text: rgb(0,0,0) normal normal 400 16 Arial
[13, 239]: Then
[54, 239]: a
[67, 239]: block
[109, 239]: level
[147, 239]: element.
Text: rgb(0,0,255) normal normal 400 16 Arial
[131, 205]: followed
[195, 205]: by
[216, 205]: text
[246, 205]: in
[263, 205]: span
Clip: Path (Vector(x: 500, y: 250) > Vector(x: 800, y: 250) > Vector(x: 800, y: 364) > Vector(x: 500, y: 364))
Fill: rgb(255,0,0)
Shape: rgb(0,0,255) Path (Vector(x: 500, y: 250) > Vector(x: 800, y: 250) > Vector(x: 795, y: 255) > Vector(x: 505, y: 255))
Shape: rgb(0,0,255) Path (Vector(x: 800, y: 250) > Vector(x: 800, y: 364) > Vector(x: 795, y: 359) > Vector(x: 795, y: 255))
Shape: rgb(0,0,255) Path (Vector(x: 800, y: 364) > Vector(x: 500, y: 364) > Vector(x: 505, y: 359) > Vector(x: 795, y: 359))
Shape: rgb(0,0,255) Path (Vector(x: 500, y: 364) > Vector(x: 500, y: 250) > Vector(x: 505, y: 255) > Vector(x: 505, y: 359))
Text: rgb(0,0,0) normal normal 400 16 Arial
[505, 255]: Some
[551, 255]: inline
[593, 255]: text
Text: rgb(0,0,0) normal normal 400 16 Arial
[505, 273]: followed
[568, 273]: by
[589, 273]: more
[630, 273]: inline
[672, 273]: text.
Text: rgb(0,0,0) normal normal 400 16 Arial
[505, 341]: Then
[546, 341]: more
[587, 341]: inline
[629, 341]: text.
Clip: Path (Vector(x: 505, y: 307) > Vector(x: 795, y: 307) > Vector(x: 795, y: 325) > Vector(x: 505, y: 325))
Fill: rgb(0,128,0)
Text: rgb(0,0,0) normal normal 400 16 Arial
[505, 307]: Then
[546, 307]: a
[559, 307]: block
[601, 307]: level
[639, 307]: element.
Text: rgb(0,0,255) normal normal 400 16 Arial
[623, 255]: followed
[687, 255]: by
[708, 255]: text
[738, 255]: in
[755, 255]: span
Clip: Path (Vector(x: 8, y: 500) > Vector(x: 504, y: 500) > Vector(x: 504, y: 596) > Vector(x: 8, y: 596))
Fill: rgb(255,0,0)
Shape: rgb(0,0,255) Path (Vector(x: 8, y: 500) > Vector(x: 504, y: 500) > Vector(x: 499, y: 505) > Vector(x: 13, y: 505))
Shape: rgb(0,0,255) Path (Vector(x: 504, y: 500) > Vector(x: 504, y: 596) > Vector(x: 499, y: 591) > Vector(x: 499, y: 505))
Shape: rgb(0,0,255) Path (Vector(x: 504, y: 596) > Vector(x: 8, y: 596) > Vector(x: 13, y: 591) > Vector(x: 499, y: 591))
Shape: rgb(0,0,255) Path (Vector(x: 8, y: 596) > Vector(x: 8, y: 500) > Vector(x: 13, y: 505) > Vector(x: 13, y: 591))
Text: rgb(0,0,0) normal normal 400 16 Arial
[13, 505]: Some
[59, 505]: inline
[101, 505]: text
Text: rgb(0,0,0) normal normal 400 16 Arial
[302, 505]: followed
[365, 505]: by
[387, 505]: more
[427, 505]: inline
[469, 505]: text.
Text: rgb(0,0,0) normal normal 400 16 Arial
[13, 573]: Then
[54, 573]: more
[95, 573]: inline
[137, 573]: text.
Clip: Path (Vector(x: 13, y: 539) > Vector(x: 499, y: 539) > Vector(x: 499, y: 557) > Vector(x: 13, y: 557))
Fill: rgb(0,128,0)
Text: rgb(0,0,0) normal normal 400 16 Arial
[13, 539]: Then
[54, 539]: a
[67, 539]: block
[109, 539]: level
[147, 539]: element.
Text: rgb(0,0,255) normal normal 400 16 Arial
[131, 505]: followed
[195, 505]: by
[216, 505]: text
[246, 505]: in
[263, 505]: span

View File

@ -1,7 +0,0 @@
Window: [812, 824]
Rectangle: [0, 0, 812, 824] rgba(0,0,0,0)
Opacity: 1
Shape: rgb(0,0,0) Path (Vector(x: 8, y: 8) > Vector(x: 812, y: 8) > Vector(x: 810, y: 10) > Vector(x: 10, y: 10))
Shape: rgb(0,0,0) Path (Vector(x: 812, y: 8) > Vector(x: 812, y: 812) > Vector(x: 810, y: 810) > Vector(x: 810, y: 10))
Shape: rgb(0,0,0) Path (Vector(x: 812, y: 812) > Vector(x: 8, y: 812) > Vector(x: 10, y: 810) > Vector(x: 810, y: 810))
Shape: rgb(0,0,0) Path (Vector(x: 8, y: 812) > Vector(x: 8, y: 8) > Vector(x: 10, y: 10) > Vector(x: 10, y: 810))

View File

@ -1,328 +0,0 @@
Window: [800, 917]
Rectangle: [0, 0, 800, 917] rgba(0,0,0,0)
Opacity: 1
Clip: Path (BezierCurve(x0: 0, y0: 908, x1: 3, y1: 905, cx0: 0, cy0: 907, cx1: 1, cy1: 905) > BezierCurve(x0: 9, y0: 905, x1: 12, y1: 908, cx0: 11, cy0: 905, cx1: 12, cy1: 907) > BezierCurve(x0: 12, y0: 914, x1: 9, y1: 917, cx0: 12, cy0: 916, cx1: 11, cy1: 917) > BezierCurve(x0: 3, y0: 917, x1: 0, y1: 914, cx0: 1, cy0: 917, cx1: 0, cy1: 916))
Fill: rgb(222,222,222)
Shape: rgb(165,165,165) Path (BezierCurve(x0: 1, y0: 906, x1: 3, y1: 905, cx0: 1, cy0: 906, cx1: 2, cy1: 905) > BezierCurve(x0: 9, y0: 905, x1: 11, y1: 906, cx0: 10, cy0: 905, cx1: 11, cy1: 906) > BezierCurve(x0: 10, y0: 907, x1: 9, y1: 906, cx0: 10, cy0: 906, cx1: 10, cy1: 906) > BezierCurve(x0: 3, y0: 906, x1: 2, y1: 907, cx0: 2, cy0: 906, cx1: 2, cy1: 906))
Shape: rgb(165,165,165) Path (BezierCurve(x0: 11, y0: 906, x1: 12, y1: 908, cx0: 12, cy0: 907, cx1: 12, cy1: 907) > BezierCurve(x0: 12, y0: 914, x1: 11, y1: 916, cx0: 12, cy0: 915, cx1: 12, cy1: 916) > BezierCurve(x0: 10, y0: 916, x1: 11, y1: 914, cx0: 11, cy0: 915, cx1: 11, cy1: 915) > BezierCurve(x0: 11, y0: 908, x1: 10, y1: 907, cx0: 11, cy0: 908, cx1: 11, cy1: 907))
Shape: rgb(165,165,165) Path (BezierCurve(x0: 11, y0: 916, x1: 9, y1: 917, cx0: 11, cy0: 917, cx1: 10, cy1: 917) > BezierCurve(x0: 3, y0: 917, x1: 1, y1: 916, cx0: 2, cy0: 917, cx1: 1, cy1: 917) > BezierCurve(x0: 2, y0: 916, x1: 3, y1: 916, cx0: 2, cy0: 916, cx1: 2, cy1: 916) > BezierCurve(x0: 9, y0: 916, x1: 10, y1: 916, cx0: 10, cy0: 916, cx1: 10, cy1: 916))
Shape: rgb(165,165,165) Path (BezierCurve(x0: 1, y0: 916, x1: 0, y1: 914, cx0: 0, cy0: 916, cx1: 0, cy1: 915) > BezierCurve(x0: 0, y0: 908, x1: 1, y1: 906, cx0: 0, cy0: 907, cx1: 0, cy1: 907) > BezierCurve(x0: 2, y0: 907, x1: 1, y1: 908, cx0: 1, cy0: 907, cx1: 1, cy1: 908) > BezierCurve(x0: 1, y0: 914, x1: 2, y1: 916, cx0: 1, cy0: 915, cx1: 1, cy1: 915))
Clip: Path (Vector(x: 0, y: 13) > Vector(x: 158, y: 13) > Vector(x: 158, y: 41) > Vector(x: 0, y: 41))
Fill: rgb(255,255,255)
Shape: rgb(0,0,0) Path (Vector(x: 0, y: 13) > Vector(x: 158, y: 13) > Vector(x: 156, y: 15) > Vector(x: 2, y: 15))
Shape: rgb(0,0,0) Path (Vector(x: 158, y: 13) > Vector(x: 158, y: 41) > Vector(x: 156, y: 39) > Vector(x: 156, y: 15))
Shape: rgb(0,0,0) Path (Vector(x: 158, y: 41) > Vector(x: 0, y: 41) > Vector(x: 2, y: 39) > Vector(x: 156, y: 39))
Shape: rgb(0,0,0) Path (Vector(x: 0, y: 41) > Vector(x: 0, y: 13) > Vector(x: 2, y: 15) > Vector(x: 2, y: 39))
Clip: Path (Vector(x: 2, y: 15) > Vector(x: 156, y: 15) > Vector(x: 156, y: 39) > Vector(x: 2, y: 39))
Text: rgb(0,0,0) normal normal 400 16 Arial
[4, 17]: textbox
Clip: Path (Vector(x: 162, y: 13) > Vector(x: 320, y: 13) > Vector(x: 320, y: 41) > Vector(x: 162, y: 41))
Fill: rgb(255,255,255)
Shape: rgb(0,0,0) Path (Vector(x: 162, y: 13) > Vector(x: 320, y: 13) > Vector(x: 318, y: 15) > Vector(x: 164, y: 15))
Shape: rgb(0,0,0) Path (Vector(x: 320, y: 13) > Vector(x: 320, y: 41) > Vector(x: 318, y: 39) > Vector(x: 318, y: 15))
Shape: rgb(0,0,0) Path (Vector(x: 320, y: 41) > Vector(x: 162, y: 41) > Vector(x: 164, y: 39) > Vector(x: 318, y: 39))
Shape: rgb(0,0,0) Path (Vector(x: 162, y: 41) > Vector(x: 162, y: 13) > Vector(x: 164, y: 15) > Vector(x: 164, y: 39))
Clip: Path (Vector(x: 164, y: 15) > Vector(x: 318, y: 15) > Vector(x: 318, y: 39) > Vector(x: 164, y: 39))
Text: rgb(0,0,0) normal normal 400 16 Arial
[166, 17]: •
[172, 17]: •
[177, 17]: •
[183, 17]: •
[188, 17]: •
[194, 17]: •
[200, 17]: •
Clip: Path (Vector(x: 324, y: 10) > Vector(x: 488, y: 10) > Vector(x: 488, y: 44) > Vector(x: 324, y: 44))
Fill: rgb(255,255,255)
Shape: rgb(0,0,128) Path (Vector(x: 324, y: 10) > Vector(x: 488, y: 10) > Vector(x: 483, y: 15) > Vector(x: 329, y: 15))
Shape: rgb(0,0,128) Path (Vector(x: 488, y: 10) > Vector(x: 488, y: 44) > Vector(x: 483, y: 39) > Vector(x: 483, y: 15))
Shape: rgb(0,0,128) Path (Vector(x: 488, y: 44) > Vector(x: 324, y: 44) > Vector(x: 329, y: 39) > Vector(x: 483, y: 39))
Shape: rgb(0,0,128) Path (Vector(x: 324, y: 44) > Vector(x: 324, y: 10) > Vector(x: 329, y: 15) > Vector(x: 329, y: 39))
Clip: Path (Vector(x: 329, y: 15) > Vector(x: 483, y: 15) > Vector(x: 483, y: 39) > Vector(x: 329, y: 39))
Text: rgb(0,0,0) normal normal 400 16 Arial
[331, 17]: textbox
Clip: Path (Vector(x: 492, y: 0) > Vector(x: 656, y: 0) > Vector(x: 656, y: 54) > Vector(x: 492, y: 54))
Fill: rgb(255,255,255)
Shape: rgb(0,0,128) Path (Vector(x: 492, y: 0) > Vector(x: 656, y: 0) > Vector(x: 651, y: 5) > Vector(x: 497, y: 5))
Shape: rgb(0,0,128) Path (Vector(x: 656, y: 0) > Vector(x: 656, y: 54) > Vector(x: 651, y: 49) > Vector(x: 651, y: 5))
Shape: rgb(0,0,128) Path (Vector(x: 656, y: 54) > Vector(x: 492, y: 54) > Vector(x: 497, y: 49) > Vector(x: 651, y: 49))
Shape: rgb(0,0,128) Path (Vector(x: 492, y: 54) > Vector(x: 492, y: 0) > Vector(x: 497, y: 5) > Vector(x: 497, y: 49))
Clip: Path (Vector(x: 497, y: 5) > Vector(x: 651, y: 5) > Vector(x: 651, y: 49) > Vector(x: 497, y: 49))
Text: rgb(0,0,0) normal normal 400 16 Arial
[499, 7]: textbox
Clip: Path (Vector(x: 0, y: 54) > Vector(x: 180, y: 54) > Vector(x: 180, y: 124) > Vector(x: 0, y: 124))
Fill: rgb(255,255,255)
Shape: rgb(0,0,128) Path (Vector(x: 0, y: 54) > Vector(x: 180, y: 54) > Vector(x: 175, y: 59) > Vector(x: 5, y: 59))
Shape: rgb(0,0,128) Path (Vector(x: 180, y: 54) > Vector(x: 180, y: 124) > Vector(x: 175, y: 119) > Vector(x: 175, y: 59))
Shape: rgb(0,0,128) Path (Vector(x: 180, y: 124) > Vector(x: 0, y: 124) > Vector(x: 5, y: 119) > Vector(x: 175, y: 119))
Shape: rgb(0,0,128) Path (Vector(x: 0, y: 124) > Vector(x: 0, y: 54) > Vector(x: 5, y: 59) > Vector(x: 5, y: 119))
Clip: Path (Vector(x: 5, y: 59) > Vector(x: 175, y: 59) > Vector(x: 175, y: 119) > Vector(x: 5, y: 119))
Text: rgb(0,0,0) normal normal 400 16 Arial
[15, 69]: textbox
Clip: Path (Vector(x: 184, y: 67) > Vector(x: 358, y: 67) > Vector(x: 358, y: 111) > Vector(x: 184, y: 111))
Fill: rgb(255,255,255)
Shape: rgb(0,0,0) Path (Vector(x: 184, y: 67) > Vector(x: 358, y: 67) > Vector(x: 356, y: 69) > Vector(x: 186, y: 69))
Shape: rgb(0,0,0) Path (Vector(x: 358, y: 67) > Vector(x: 358, y: 111) > Vector(x: 356, y: 109) > Vector(x: 356, y: 69))
Shape: rgb(0,0,0) Path (Vector(x: 358, y: 111) > Vector(x: 184, y: 111) > Vector(x: 186, y: 109) > Vector(x: 356, y: 109))
Shape: rgb(0,0,0) Path (Vector(x: 184, y: 111) > Vector(x: 184, y: 67) > Vector(x: 186, y: 69) > Vector(x: 186, y: 109))
Clip: Path (Vector(x: 186, y: 69) > Vector(x: 356, y: 69) > Vector(x: 356, y: 109) > Vector(x: 186, y: 109))
Text: rgb(0,0,0) normal normal 400 16 Arial
[196, 79]: textbox
Clip: Path (Vector(x: 362, y: 67) > Vector(x: 536, y: 67) > Vector(x: 536, y: 111) > Vector(x: 362, y: 111))
Fill: rgb(255,255,255)
Shape: rgb(0,0,0) Path (Vector(x: 362, y: 67) > Vector(x: 536, y: 67) > Vector(x: 534, y: 69) > Vector(x: 364, y: 69))
Shape: rgb(0,0,0) Path (Vector(x: 536, y: 67) > Vector(x: 536, y: 111) > Vector(x: 534, y: 109) > Vector(x: 534, y: 69))
Shape: rgb(0,0,0) Path (Vector(x: 536, y: 111) > Vector(x: 362, y: 111) > Vector(x: 364, y: 109) > Vector(x: 534, y: 109))
Shape: rgb(0,0,0) Path (Vector(x: 362, y: 111) > Vector(x: 362, y: 67) > Vector(x: 364, y: 69) > Vector(x: 364, y: 109))
Clip: Path (Vector(x: 364, y: 69) > Vector(x: 534, y: 69) > Vector(x: 534, y: 109) > Vector(x: 364, y: 109))
Text: rgb(0,0,0) normal normal 400 16 Arial
[472, 79]: textbox
Clip: Path (Vector(x: 540, y: 75) > Vector(x: 690, y: 75) > Vector(x: 690, y: 95) > Vector(x: 540, y: 95))
Fill: rgb(255,255,255)
Shape: rgb(0,0,0) Path (Vector(x: 540, y: 75) > Vector(x: 690, y: 75) > Vector(x: 688, y: 77) > Vector(x: 542, y: 77))
Shape: rgb(0,0,0) Path (Vector(x: 690, y: 75) > Vector(x: 690, y: 95) > Vector(x: 688, y: 93) > Vector(x: 688, y: 77))
Shape: rgb(0,0,0) Path (Vector(x: 690, y: 95) > Vector(x: 540, y: 95) > Vector(x: 542, y: 93) > Vector(x: 688, y: 93))
Shape: rgb(0,0,0) Path (Vector(x: 540, y: 95) > Vector(x: 540, y: 75) > Vector(x: 542, y: 77) > Vector(x: 542, y: 93))
Clip: Path (Vector(x: 542, y: 77) > Vector(x: 688, y: 77) > Vector(x: 688, y: 93) > Vector(x: 542, y: 93))
Text: rgb(0,0,0) normal normal 400 16 Arial
[544, 79]: Value
[588, 79]: 1
Clip: Path (Vector(x: 0, y: 124) > Vector(x: 150, y: 124) > Vector(x: 150, y: 144) > Vector(x: 0, y: 144))
Fill: rgb(255,255,255)
Shape: rgb(0,0,0) Path (Vector(x: 0, y: 124) > Vector(x: 150, y: 124) > Vector(x: 148, y: 126) > Vector(x: 2, y: 126))
Shape: rgb(0,0,0) Path (Vector(x: 150, y: 124) > Vector(x: 150, y: 144) > Vector(x: 148, y: 142) > Vector(x: 148, y: 126))
Shape: rgb(0,0,0) Path (Vector(x: 150, y: 144) > Vector(x: 0, y: 144) > Vector(x: 2, y: 142) > Vector(x: 148, y: 142))
Shape: rgb(0,0,0) Path (Vector(x: 0, y: 144) > Vector(x: 0, y: 124) > Vector(x: 2, y: 126) > Vector(x: 2, y: 142))
Clip: Path (Vector(x: 2, y: 126) > Vector(x: 148, y: 126) > Vector(x: 148, y: 142) > Vector(x: 2, y: 142))
Clip: Path (Vector(x: 154, y: 124) > Vector(x: 304, y: 124) > Vector(x: 304, y: 144) > Vector(x: 154, y: 144))
Fill: rgb(255,255,255)
Shape: rgb(0,0,0) Path (Vector(x: 154, y: 124) > Vector(x: 304, y: 124) > Vector(x: 302, y: 126) > Vector(x: 156, y: 126))
Shape: rgb(0,0,0) Path (Vector(x: 304, y: 124) > Vector(x: 304, y: 144) > Vector(x: 302, y: 142) > Vector(x: 302, y: 126))
Shape: rgb(0,0,0) Path (Vector(x: 304, y: 144) > Vector(x: 154, y: 144) > Vector(x: 156, y: 142) > Vector(x: 302, y: 142))
Shape: rgb(0,0,0) Path (Vector(x: 154, y: 144) > Vector(x: 154, y: 124) > Vector(x: 156, y: 126) > Vector(x: 156, y: 142))
Clip: Path (Vector(x: 156, y: 126) > Vector(x: 302, y: 126) > Vector(x: 302, y: 142) > Vector(x: 156, y: 142))
Text: rgb(0,0,0) normal normal 400 16 Arial
[158, 128]: 2
Clip: Path (Vector(x: 308, y: 124) > Vector(x: 458, y: 124) > Vector(x: 458, y: 144) > Vector(x: 308, y: 144))
Fill: rgb(255,255,255)
Shape: rgb(0,0,0) Path (Vector(x: 308, y: 124) > Vector(x: 458, y: 124) > Vector(x: 456, y: 126) > Vector(x: 310, y: 126))
Shape: rgb(0,0,0) Path (Vector(x: 458, y: 124) > Vector(x: 458, y: 144) > Vector(x: 456, y: 142) > Vector(x: 456, y: 126))
Shape: rgb(0,0,0) Path (Vector(x: 458, y: 144) > Vector(x: 308, y: 144) > Vector(x: 310, y: 142) > Vector(x: 456, y: 142))
Shape: rgb(0,0,0) Path (Vector(x: 308, y: 144) > Vector(x: 308, y: 124) > Vector(x: 310, y: 126) > Vector(x: 310, y: 142))
Clip: Path (Vector(x: 310, y: 126) > Vector(x: 456, y: 126) > Vector(x: 456, y: 142) > Vector(x: 310, y: 142))
Text: rgb(0,0,0) normal normal 400 16 Arial
[312, 128]: Value
[356, 128]: 2
[370, 128]: with
[402, 128]: something
[481, 128]: else
Clip: Path (Vector(x: 462, y: 125) > Vector(x: 612, y: 125) > Vector(x: 612, y: 145) > Vector(x: 462, y: 145))
Fill: rgb(255,255,255)
Shape: rgb(0,0,0) Path (Vector(x: 462, y: 125) > Vector(x: 612, y: 125) > Vector(x: 610, y: 127) > Vector(x: 464, y: 127))
Shape: rgb(0,0,0) Path (Vector(x: 612, y: 125) > Vector(x: 612, y: 145) > Vector(x: 610, y: 143) > Vector(x: 610, y: 127))
Shape: rgb(0,0,0) Path (Vector(x: 612, y: 145) > Vector(x: 462, y: 145) > Vector(x: 464, y: 143) > Vector(x: 610, y: 143))
Shape: rgb(0,0,0) Path (Vector(x: 462, y: 145) > Vector(x: 462, y: 125) > Vector(x: 464, y: 127) > Vector(x: 464, y: 143))
Clip: Path (Vector(x: 464, y: 127) > Vector(x: 610, y: 127) > Vector(x: 610, y: 143) > Vector(x: 464, y: 143))
Text: rgb(0,0,0) normal normal 400 16 Arial
[512, 129]: Submit
Clip: Path (Vector(x: 616, y: 125) > Vector(x: 766, y: 125) > Vector(x: 766, y: 145) > Vector(x: 616, y: 145))
Fill: rgb(255,255,255)
Shape: rgb(0,0,0) Path (Vector(x: 616, y: 125) > Vector(x: 766, y: 125) > Vector(x: 764, y: 127) > Vector(x: 618, y: 127))
Shape: rgb(0,0,0) Path (Vector(x: 766, y: 125) > Vector(x: 766, y: 145) > Vector(x: 764, y: 143) > Vector(x: 764, y: 127))
Shape: rgb(0,0,0) Path (Vector(x: 766, y: 145) > Vector(x: 616, y: 145) > Vector(x: 618, y: 143) > Vector(x: 764, y: 143))
Shape: rgb(0,0,0) Path (Vector(x: 616, y: 145) > Vector(x: 616, y: 125) > Vector(x: 618, y: 127) > Vector(x: 618, y: 143))
Clip: Path (Vector(x: 618, y: 127) > Vector(x: 764, y: 127) > Vector(x: 764, y: 143) > Vector(x: 618, y: 143))
Text: rgb(0,0,0) normal normal 400 16 Arial
[668, 129]: Button
Clip: Path (Vector(x: 0, y: 159) > Vector(x: 150, y: 159) > Vector(x: 150, y: 179) > Vector(x: 0, y: 179))
Fill: rgb(255,255,255)
Shape: rgb(0,0,0) Path (Vector(x: 0, y: 159) > Vector(x: 150, y: 159) > Vector(x: 148, y: 161) > Vector(x: 2, y: 161))
Shape: rgb(0,0,0) Path (Vector(x: 150, y: 159) > Vector(x: 150, y: 179) > Vector(x: 148, y: 177) > Vector(x: 148, y: 161))
Shape: rgb(0,0,0) Path (Vector(x: 150, y: 179) > Vector(x: 0, y: 179) > Vector(x: 2, y: 177) > Vector(x: 148, y: 177))
Shape: rgb(0,0,0) Path (Vector(x: 0, y: 179) > Vector(x: 0, y: 159) > Vector(x: 2, y: 161) > Vector(x: 2, y: 177))
Clip: Path (Vector(x: 2, y: 161) > Vector(x: 148, y: 161) > Vector(x: 148, y: 177) > Vector(x: 2, y: 177))
Text: rgb(0,0,0) normal normal 400 16 Arial
[54, 163]: Reset
Clip: Path (Vector(x: 154, y: 159) > Vector(x: 354, y: 159) > Vector(x: 354, y: 179) > Vector(x: 154, y: 179))
Fill: rgb(255,255,255)
Shape: rgb(0,0,0) Path (Vector(x: 154, y: 159) > Vector(x: 354, y: 159) > Vector(x: 352, y: 161) > Vector(x: 156, y: 161))
Shape: rgb(0,0,0) Path (Vector(x: 354, y: 159) > Vector(x: 354, y: 179) > Vector(x: 352, y: 177) > Vector(x: 352, y: 161))
Shape: rgb(0,0,0) Path (Vector(x: 354, y: 179) > Vector(x: 154, y: 179) > Vector(x: 156, y: 177) > Vector(x: 352, y: 177))
Shape: rgb(0,0,0) Path (Vector(x: 154, y: 179) > Vector(x: 154, y: 159) > Vector(x: 156, y: 161) > Vector(x: 156, y: 177))
Clip: Path (Vector(x: 156, y: 161) > Vector(x: 352, y: 161) > Vector(x: 352, y: 177) > Vector(x: 156, y: 177))
Text: rgb(0,0,0) normal normal 400 16 Arial
[229, 163]: Submit
Clip: Path (Vector(x: 358, y: 147) > Vector(x: 558, y: 147) > Vector(x: 558, y: 197) > Vector(x: 358, y: 197))
Fill: rgb(255,255,255)
Shape: rgb(0,0,0) Path (Vector(x: 358, y: 147) > Vector(x: 558, y: 147) > Vector(x: 556, y: 149) > Vector(x: 360, y: 149))
Shape: rgb(0,0,0) Path (Vector(x: 558, y: 147) > Vector(x: 558, y: 197) > Vector(x: 556, y: 195) > Vector(x: 556, y: 149))
Shape: rgb(0,0,0) Path (Vector(x: 558, y: 197) > Vector(x: 358, y: 197) > Vector(x: 360, y: 195) > Vector(x: 556, y: 195))
Shape: rgb(0,0,0) Path (Vector(x: 358, y: 197) > Vector(x: 358, y: 147) > Vector(x: 360, y: 149) > Vector(x: 360, y: 195))
Clip: Path (Vector(x: 360, y: 149) > Vector(x: 556, y: 149) > Vector(x: 556, y: 195) > Vector(x: 360, y: 195))
Text: rgb(0,0,0) normal normal 400 16 Arial
[435, 151]: Button
Clip: Path (Vector(x: 562, y: 147) > Vector(x: 762, y: 147) > Vector(x: 762, y: 197) > Vector(x: 562, y: 197))
Fill: rgb(255,255,255)
Shape: rgb(0,0,0) Path (Vector(x: 562, y: 147) > Vector(x: 762, y: 147) > Vector(x: 760, y: 149) > Vector(x: 564, y: 149))
Shape: rgb(0,0,0) Path (Vector(x: 762, y: 147) > Vector(x: 762, y: 197) > Vector(x: 760, y: 195) > Vector(x: 760, y: 149))
Shape: rgb(0,0,0) Path (Vector(x: 762, y: 197) > Vector(x: 562, y: 197) > Vector(x: 564, y: 195) > Vector(x: 760, y: 195))
Shape: rgb(0,0,0) Path (Vector(x: 562, y: 197) > Vector(x: 562, y: 147) > Vector(x: 564, y: 149) > Vector(x: 564, y: 195))
Clip: Path (Vector(x: 564, y: 149) > Vector(x: 760, y: 149) > Vector(x: 760, y: 195) > Vector(x: 564, y: 195))
Text: rgb(0,0,0) normal normal 400 16 Arial
[566, 151]: Reset
Clip: Path (Vector(x: 0, y: 213) > Vector(x: 158, y: 213) > Vector(x: 158, y: 241) > Vector(x: 0, y: 241))
Fill: rgb(255,255,255)
Shape: rgb(0,0,0) Path (Vector(x: 0, y: 213) > Vector(x: 158, y: 213) > Vector(x: 156, y: 215) > Vector(x: 2, y: 215))
Shape: rgb(0,0,0) Path (Vector(x: 158, y: 213) > Vector(x: 158, y: 241) > Vector(x: 156, y: 239) > Vector(x: 156, y: 215))
Shape: rgb(0,0,0) Path (Vector(x: 158, y: 241) > Vector(x: 0, y: 241) > Vector(x: 2, y: 239) > Vector(x: 156, y: 239))
Shape: rgb(0,0,0) Path (Vector(x: 0, y: 241) > Vector(x: 0, y: 213) > Vector(x: 2, y: 215) > Vector(x: 2, y: 239))
Clip: Path (Vector(x: 2, y: 215) > Vector(x: 156, y: 215) > Vector(x: 156, y: 239) > Vector(x: 2, y: 239))
Text: rgb(0,0,0) normal normal 400 16 Arial
Clip: Path (Vector(x: 162, y: 197) > Vector(x: 336, y: 197) > Vector(x: 336, y: 241) > Vector(x: 162, y: 241))
Fill: rgb(255,255,255)
Shape: rgb(0,0,0) Path (Vector(x: 162, y: 197) > Vector(x: 336, y: 197) > Vector(x: 326, y: 207) > Vector(x: 172, y: 207))
Shape: rgb(0,0,0) Path (Vector(x: 336, y: 197) > Vector(x: 336, y: 241) > Vector(x: 326, y: 231) > Vector(x: 326, y: 207))
Shape: rgb(0,0,0) Path (Vector(x: 336, y: 241) > Vector(x: 162, y: 241) > Vector(x: 172, y: 231) > Vector(x: 326, y: 231))
Shape: rgb(0,0,0) Path (Vector(x: 162, y: 241) > Vector(x: 162, y: 197) > Vector(x: 172, y: 207) > Vector(x: 172, y: 231))
Clip: Path (Vector(x: 172, y: 207) > Vector(x: 326, y: 207) > Vector(x: 326, y: 231) > Vector(x: 172, y: 231))
Clip: Path (Vector(x: 340, y: 213) > Vector(x: 498, y: 213) > Vector(x: 498, y: 241) > Vector(x: 340, y: 241))
Fill: rgb(255,255,255)
Shape: rgb(0,0,0) Path (Vector(x: 340, y: 213) > Vector(x: 498, y: 213) > Vector(x: 496, y: 215) > Vector(x: 342, y: 215))
Shape: rgb(0,0,0) Path (Vector(x: 498, y: 213) > Vector(x: 498, y: 241) > Vector(x: 496, y: 239) > Vector(x: 496, y: 215))
Shape: rgb(0,0,0) Path (Vector(x: 498, y: 241) > Vector(x: 340, y: 241) > Vector(x: 342, y: 239) > Vector(x: 496, y: 239))
Shape: rgb(0,0,0) Path (Vector(x: 340, y: 241) > Vector(x: 340, y: 213) > Vector(x: 342, y: 215) > Vector(x: 342, y: 239))
Clip: Path (Vector(x: 342, y: 215) > Vector(x: 496, y: 215) > Vector(x: 496, y: 239) > Vector(x: 342, y: 239))
Text: rgb(0,0,0) normal normal 400 16 Arial
[348, 217]: text
Clip: Path (Vector(x: 502, y: 197) > Vector(x: 676, y: 197) > Vector(x: 676, y: 241) > Vector(x: 502, y: 241))
Fill: rgb(255,255,255)
Shape: rgb(0,0,0) Path (Vector(x: 502, y: 197) > Vector(x: 676, y: 197) > Vector(x: 666, y: 207) > Vector(x: 512, y: 207))
Shape: rgb(0,0,0) Path (Vector(x: 676, y: 197) > Vector(x: 676, y: 241) > Vector(x: 666, y: 231) > Vector(x: 666, y: 207))
Shape: rgb(0,0,0) Path (Vector(x: 676, y: 241) > Vector(x: 502, y: 241) > Vector(x: 512, y: 231) > Vector(x: 666, y: 231))
Shape: rgb(0,0,0) Path (Vector(x: 502, y: 241) > Vector(x: 502, y: 197) > Vector(x: 512, y: 207) > Vector(x: 512, y: 231))
Clip: Path (Vector(x: 512, y: 207) > Vector(x: 666, y: 207) > Vector(x: 666, y: 231) > Vector(x: 512, y: 231))
Text: rgb(0,0,0) normal normal 400 16 Arial
[514, 209]: text
Clip: Path (BezierCurve(x0: 691, y0: 217, x1: 696, y1: 212, cx0: 691, cy0: 214, cx1: 693, cy1: 212) > BezierCurve(x0: 696, y0: 212, x1: 702, y1: 217, cx0: 699, cy0: 212, cx1: 702, cy1: 214) > BezierCurve(x0: 702, y0: 217, x1: 696, y1: 223, cx0: 702, cy0: 220, cx1: 699, cy1: 223) > BezierCurve(x0: 696, y0: 223, x1: 691, y1: 217, cx0: 693, cy0: 223, cx1: 691, cy1: 220))
Fill: rgb(222,222,222)
Shape: rgb(165,165,165) Path (BezierCurve(x0: 692, y0: 213, x1: 696, y1: 211, cx0: 693, cy0: 212, cx1: 695, cy1: 211) > BezierCurve(x0: 696, y0: 211, x1: 701, y1: 213, cx0: 698, cy0: 211, cx1: 700, cy1: 212) > BezierCurve(x0: 700, y0: 213, x1: 696, y1: 212, cx0: 699, cy0: 212, cx1: 698, cy1: 212) > BezierCurve(x0: 696, y0: 212, x1: 693, y1: 213, cx0: 695, cy0: 212, cx1: 694, cy1: 212))
Shape: rgb(165,165,165) Path (BezierCurve(x0: 701, y0: 213, x1: 703, y1: 217, cx0: 702, cy0: 214, cx1: 703, cy1: 215) > BezierCurve(x0: 703, y0: 217, x1: 701, y1: 222, cx0: 703, cy0: 219, cx1: 702, cy1: 221) > BezierCurve(x0: 700, y0: 221, x1: 702, y1: 217, cx0: 701, cy0: 220, cx1: 702, cy1: 219) > BezierCurve(x0: 702, y0: 217, x1: 700, y1: 213, cx0: 702, cy0: 216, cx1: 701, cy1: 214))
Shape: rgb(165,165,165) Path (BezierCurve(x0: 701, y0: 222, x1: 696, y1: 224, cx0: 700, cy0: 223, cx1: 698, cy1: 224) > BezierCurve(x0: 696, y0: 224, x1: 692, y1: 222, cx0: 695, cy0: 224, cx1: 693, cy1: 223) > BezierCurve(x0: 693, y0: 221, x1: 696, y1: 223, cx0: 694, cy0: 222, cx1: 695, cy1: 223) > BezierCurve(x0: 696, y0: 223, x1: 700, y1: 221, cx0: 698, cy0: 223, cx1: 699, cy1: 222))
Shape: rgb(165,165,165) Path (BezierCurve(x0: 692, y0: 222, x1: 690, y1: 217, cx0: 691, cy0: 221, cx1: 690, cy1: 219) > BezierCurve(x0: 690, y0: 217, x1: 692, y1: 213, cx0: 690, cy0: 215, cx1: 691, cy1: 214) > BezierCurve(x0: 693, y0: 213, x1: 691, y1: 217, cx0: 692, cy0: 214, cx1: 691, cy1: 216) > BezierCurve(x0: 691, y0: 217, x1: 693, y1: 221, cx0: 691, cy0: 219, cx1: 692, cy1: 220))
Clip: Path (BezierCurve(x0: 691, y0: 217, x1: 696, y1: 212, cx0: 691, cy0: 214, cx1: 693, cy1: 212) > BezierCurve(x0: 696, y0: 212, x1: 702, y1: 217, cx0: 699, cy0: 212, cx1: 702, cy1: 214) > BezierCurve(x0: 702, y0: 217, x1: 696, y1: 223, cx0: 702, cy0: 220, cx1: 699, cy1: 223) > BezierCurve(x0: 696, y0: 223, x1: 691, y1: 217, cx0: 693, cy0: 223, cx1: 691, cy1: 220))
Clip: Path (BezierCurve(x0: 765, y0: 217, x1: 770, y1: 212, cx0: 765, cy0: 214, cx1: 767, cy1: 212) > BezierCurve(x0: 770, y0: 212, x1: 775, y1: 217, cx0: 773, cy0: 212, cx1: 775, cy1: 214) > BezierCurve(x0: 775, y0: 217, x1: 770, y1: 223, cx0: 775, cy0: 220, cx1: 773, cy1: 223) > BezierCurve(x0: 770, y0: 223, x1: 765, y1: 217, cx0: 767, cy0: 223, cx1: 765, cy1: 220))
Fill: rgb(222,222,222)
Shape: rgb(165,165,165) Path (BezierCurve(x0: 765, y0: 213, x1: 770, y1: 211, cx0: 767, cy0: 212, cx1: 768, cy1: 211) > BezierCurve(x0: 770, y0: 211, x1: 775, y1: 213, cx0: 772, cy0: 211, cx1: 773, cy1: 212) > BezierCurve(x0: 774, y0: 213, x1: 770, y1: 212, cx0: 773, cy0: 212, cx1: 771, cy1: 212) > BezierCurve(x0: 770, y0: 212, x1: 766, y1: 213, cx0: 769, cy0: 212, cx1: 767, cy1: 212))
Shape: rgb(165,165,165) Path (BezierCurve(x0: 775, y0: 213, x1: 776, y1: 217, cx0: 776, cy0: 214, cx1: 776, cy1: 215) > BezierCurve(x0: 776, y0: 217, x1: 775, y1: 222, cx0: 776, cy0: 219, cx1: 776, cy1: 221) > BezierCurve(x0: 774, y0: 221, x1: 775, y1: 217, cx0: 775, cy0: 220, cx1: 775, cy1: 219) > BezierCurve(x0: 775, y0: 217, x1: 774, y1: 213, cx0: 775, cy0: 216, cx1: 775, cy1: 214))
Shape: rgb(165,165,165) Path (BezierCurve(x0: 775, y0: 222, x1: 770, y1: 224, cx0: 773, cy0: 223, cx1: 772, cy1: 224) > BezierCurve(x0: 770, y0: 224, x1: 765, y1: 222, cx0: 768, cy0: 224, cx1: 767, cy1: 223) > BezierCurve(x0: 766, y0: 221, x1: 770, y1: 223, cx0: 767, cy0: 222, cx1: 769, cy1: 223) > BezierCurve(x0: 770, y0: 223, x1: 774, y1: 221, cx0: 771, cy0: 223, cx1: 773, cy1: 222))
Shape: rgb(165,165,165) Path (BezierCurve(x0: 765, y0: 222, x1: 764, y1: 217, cx0: 764, cy0: 221, cx1: 764, cy1: 219) > BezierCurve(x0: 764, y0: 217, x1: 765, y1: 213, cx0: 764, cy0: 215, cx1: 764, cy1: 214) > BezierCurve(x0: 766, y0: 213, x1: 765, y1: 217, cx0: 765, cy0: 214, cx1: 765, cy1: 216) > BezierCurve(x0: 765, y0: 217, x1: 766, y1: 221, cx0: 765, cy0: 219, cx1: 765, cy1: 220))
Clip: Path (BezierCurve(x0: 765, y0: 217, x1: 770, y1: 212, cx0: 765, cy0: 214, cx1: 767, cy1: 212) > BezierCurve(x0: 770, y0: 212, x1: 775, y1: 217, cx0: 773, cy0: 212, cx1: 775, cy1: 214) > BezierCurve(x0: 775, y0: 217, x1: 770, y1: 223, cx0: 775, cy0: 220, cx1: 773, cy1: 223) > BezierCurve(x0: 770, y0: 223, x1: 765, y1: 217, cx0: 767, cy0: 223, cx1: 765, cy1: 220))
Shape: rgb(42,42,42) Circle(x: 767, y: 214, r: 3)
Clip: Path (BezierCurve(x0: 175, y0: 265, x1: 184, y1: 256, cx0: 175, cy0: 260, cx1: 179, cy1: 256) > BezierCurve(x0: 184, y0: 256, x1: 193, y1: 265, cx0: 189, cy0: 256, cx1: 193, cy1: 260) > BezierCurve(x0: 193, y0: 265, x1: 184, y1: 274, cx0: 193, cy0: 270, cx1: 189, cy1: 274) > BezierCurve(x0: 184, y0: 274, x1: 175, y1: 265, cx0: 179, cy0: 274, cx1: 175, cy1: 270))
Fill: rgb(222,222,222)
Shape: rgb(165,165,165) Path (BezierCurve(x0: 177, y0: 258, x1: 184, y1: 255, cx0: 178, cy0: 256, cx1: 181, cy1: 255) > BezierCurve(x0: 184, y0: 255, x1: 191, y1: 258, cx0: 186, cy0: 255, cx1: 189, cy1: 256) > BezierCurve(x0: 190, y0: 259, x1: 184, y1: 256, cx0: 188, cy0: 257, cx1: 186, cy1: 256) > BezierCurve(x0: 184, y0: 256, x1: 177, y1: 259, cx0: 181, cy0: 256, cx1: 179, cy1: 257))
Shape: rgb(165,165,165) Path (BezierCurve(x0: 191, y0: 258, x1: 194, y1: 265, cx0: 192, cy0: 260, cx1: 194, cy1: 262) > BezierCurve(x0: 194, y0: 265, x1: 191, y1: 272, cx0: 194, cy0: 268, cx1: 192, cy1: 270) > BezierCurve(x0: 190, y0: 272, x1: 193, y1: 265, cx0: 192, cy0: 270, cx1: 193, cy1: 268) > BezierCurve(x0: 193, y0: 265, x1: 190, y1: 259, cx0: 193, cy0: 263, cx1: 192, cy1: 260))
Shape: rgb(165,165,165) Path (BezierCurve(x0: 191, y0: 272, x1: 184, y1: 275, cx0: 189, cy0: 274, cx1: 186, cy1: 275) > BezierCurve(x0: 184, y0: 275, x1: 177, y1: 272, cx0: 181, cy0: 275, cx1: 178, cy1: 274) > BezierCurve(x0: 177, y0: 272, x1: 184, y1: 274, cx0: 179, cy0: 273, cx1: 181, cy1: 274) > BezierCurve(x0: 184, y0: 274, x1: 190, y1: 272, cx0: 186, cy0: 274, cx1: 188, cy1: 273))
Shape: rgb(165,165,165) Path (BezierCurve(x0: 177, y0: 272, x1: 174, y1: 265, cx0: 175, cy0: 270, cx1: 174, cy1: 268) > BezierCurve(x0: 174, y0: 265, x1: 177, y1: 258, cx0: 174, cy0: 262, cx1: 175, cy1: 260) > BezierCurve(x0: 177, y0: 259, x1: 175, y1: 265, cx0: 176, cy0: 260, cx1: 175, cy1: 263) > BezierCurve(x0: 175, y0: 265, x1: 177, y1: 272, cx0: 175, cy0: 268, cx1: 176, cy1: 270))
Clip: Path (BezierCurve(x0: 175, y0: 265, x1: 184, y1: 256, cx0: 175, cy0: 260, cx1: 179, cy1: 256) > BezierCurve(x0: 184, y0: 256, x1: 193, y1: 265, cx0: 189, cy0: 256, cx1: 193, cy1: 260) > BezierCurve(x0: 193, y0: 265, x1: 184, y1: 274, cx0: 193, cy0: 270, cx1: 189, cy1: 274) > BezierCurve(x0: 184, y0: 274, x1: 175, y1: 265, cx0: 179, cy0: 274, cx1: 175, cy1: 270))
Clip: Path (BezierCurve(x0: 309, y0: 355, x1: 408, y1: 256, cx0: 309, cy0: 301, cx1: 353, cy1: 256) > BezierCurve(x0: 408, y0: 256, x1: 507, y1: 355, cx0: 462, cy0: 256, cx1: 507, cy1: 301) > BezierCurve(x0: 507, y0: 355, x1: 408, y1: 454, cx0: 507, cy0: 410, cx1: 462, cy1: 454) > BezierCurve(x0: 408, y0: 454, x1: 309, y1: 355, cx0: 353, cy0: 454, cx1: 309, cy1: 410))
Fill: rgb(222,222,222)
Shape: rgb(165,165,165) Path (BezierCurve(x0: 337, y0: 284, x1: 408, y1: 255, cx0: 355, cy0: 266, cx1: 380, cy1: 255) > BezierCurve(x0: 408, y0: 255, x1: 478, y1: 284, cx0: 435, cy0: 255, cx1: 460, cy1: 266) > BezierCurve(x0: 478, y0: 285, x1: 408, y1: 256, cx0: 460, cy0: 267, cx1: 435, cy1: 256) > BezierCurve(x0: 408, y0: 256, x1: 338, y1: 285, cx0: 380, cy0: 256, cx1: 356, cy1: 267))
Shape: rgb(165,165,165) Path (BezierCurve(x0: 478, y0: 284, x1: 508, y1: 355, cx0: 496, cy0: 303, cx1: 508, cy1: 328) > BezierCurve(x0: 508, y0: 355, x1: 478, y1: 426, cx0: 508, cy0: 383, cx1: 496, cy1: 408) > BezierCurve(x0: 478, y0: 425, x1: 507, y1: 355, cx0: 496, cy0: 407, cx1: 507, cy1: 383) > BezierCurve(x0: 507, y0: 355, x1: 478, y1: 285, cx0: 507, cy0: 328, cx1: 496, cy1: 303))
Shape: rgb(165,165,165) Path (BezierCurve(x0: 478, y0: 426, x1: 408, y1: 455, cx0: 460, cy0: 444, cx1: 435, cy1: 455) > BezierCurve(x0: 408, y0: 455, x1: 337, y1: 426, cx0: 380, cy0: 455, cx1: 355, cy1: 444) > BezierCurve(x0: 338, y0: 425, x1: 408, y1: 454, cx0: 356, cy0: 443, cx1: 380, cy1: 454) > BezierCurve(x0: 408, y0: 454, x1: 478, y1: 425, cx0: 435, cy0: 454, cx1: 460, cy1: 443))
Shape: rgb(165,165,165) Path (BezierCurve(x0: 337, y0: 426, x1: 308, y1: 355, cx0: 319, cy0: 408, cx1: 308, cy1: 383) > BezierCurve(x0: 308, y0: 355, x1: 337, y1: 284, cx0: 308, cy0: 328, cx1: 319, cy1: 303) > BezierCurve(x0: 338, y0: 285, x1: 309, y1: 355, cx0: 320, cy0: 303, cx1: 309, cy1: 328) > BezierCurve(x0: 309, y0: 355, x1: 338, y1: 425, cx0: 309, cy0: 383, cx1: 320, cy1: 407))
Clip: Path (BezierCurve(x0: 309, y0: 355, x1: 408, y1: 256, cx0: 309, cy0: 301, cx1: 353, cy1: 256) > BezierCurve(x0: 408, y0: 256, x1: 507, y1: 355, cx0: 462, cy0: 256, cx1: 507, cy1: 301) > BezierCurve(x0: 507, y0: 355, x1: 408, y1: 454, cx0: 507, cy0: 410, cx1: 462, cy1: 454) > BezierCurve(x0: 408, y0: 454, x1: 309, y1: 355, cx0: 353, cy0: 454, cx1: 309, cy1: 410))
Clip: Path (BezierCurve(x0: 533, y0: 355, x1: 632, y1: 256, cx0: 533, cy0: 301, cx1: 577, cy1: 256) > BezierCurve(x0: 632, y0: 256, x1: 731, y1: 355, cx0: 686, cy0: 256, cx1: 731, cy1: 301) > BezierCurve(x0: 731, y0: 355, x1: 632, y1: 454, cx0: 731, cy0: 410, cx1: 686, cy1: 454) > BezierCurve(x0: 632, y0: 454, x1: 533, y1: 355, cx0: 577, cy0: 454, cx1: 533, cy1: 410))
Fill: rgb(222,222,222)
Shape: rgb(165,165,165) Path (BezierCurve(x0: 561, y0: 284, x1: 632, y1: 255, cx0: 579, cy0: 266, cx1: 604, cy1: 255) > BezierCurve(x0: 632, y0: 255, x1: 702, y1: 284, cx0: 659, cy0: 255, cx1: 684, cy1: 266) > BezierCurve(x0: 702, y0: 285, x1: 632, y1: 256, cx0: 684, cy0: 267, cx1: 659, cy1: 256) > BezierCurve(x0: 632, y0: 256, x1: 562, y1: 285, cx0: 604, cy0: 256, cx1: 580, cy1: 267))
Shape: rgb(165,165,165) Path (BezierCurve(x0: 702, y0: 284, x1: 732, y1: 355, cx0: 720, cy0: 303, cx1: 732, cy1: 328) > BezierCurve(x0: 732, y0: 355, x1: 702, y1: 426, cx0: 732, cy0: 383, cx1: 720, cy1: 408) > BezierCurve(x0: 702, y0: 425, x1: 731, y1: 355, cx0: 720, cy0: 407, cx1: 731, cy1: 383) > BezierCurve(x0: 731, y0: 355, x1: 702, y1: 285, cx0: 731, cy0: 328, cx1: 720, cy1: 303))
Shape: rgb(165,165,165) Path (BezierCurve(x0: 702, y0: 426, x1: 632, y1: 455, cx0: 684, cy0: 444, cx1: 659, cy1: 455) > BezierCurve(x0: 632, y0: 455, x1: 561, y1: 426, cx0: 604, cy0: 455, cx1: 579, cy1: 444) > BezierCurve(x0: 562, y0: 425, x1: 632, y1: 454, cx0: 580, cy0: 443, cx1: 604, cy1: 454) > BezierCurve(x0: 632, y0: 454, x1: 702, y1: 425, cx0: 659, cy0: 454, cx1: 684, cy1: 443))
Shape: rgb(165,165,165) Path (BezierCurve(x0: 561, y0: 426, x1: 532, y1: 355, cx0: 543, cy0: 408, cx1: 532, cy1: 383) > BezierCurve(x0: 532, y0: 355, x1: 561, y1: 284, cx0: 532, cy0: 328, cx1: 543, cy1: 303) > BezierCurve(x0: 562, y0: 285, x1: 533, y1: 355, cx0: 544, cy0: 303, cx1: 533, cy1: 328) > BezierCurve(x0: 533, y0: 355, x1: 562, y1: 425, cx0: 533, cy0: 383, cx1: 544, cy1: 407))
Clip: Path (BezierCurve(x0: 533, y0: 355, x1: 632, y1: 256, cx0: 533, cy0: 301, cx1: 577, cy1: 256) > BezierCurve(x0: 632, y0: 256, x1: 731, y1: 355, cx0: 686, cy0: 256, cx1: 731, cy1: 301) > BezierCurve(x0: 731, y0: 355, x1: 632, y1: 454, cx0: 731, cy0: 410, cx1: 686, cy1: 454) > BezierCurve(x0: 632, y0: 454, x1: 533, y1: 355, cx0: 577, cy0: 454, cx1: 533, cy1: 410))
Shape: rgb(42,42,42) Circle(x: 582, y: 305, r: 50)
Clip: Path (BezierCurve(x0: 757, y0: 262, x1: 759, y1: 260, cx0: 757, cy0: 261, cx1: 757, cy1: 260) > BezierCurve(x0: 765, y0: 260, x1: 767, y1: 262, cx0: 767, cy0: 260, cx1: 767, cy1: 261) > BezierCurve(x0: 767, y0: 269, x1: 765, y1: 271, cx0: 767, cy0: 270, cx1: 767, cy1: 271) > BezierCurve(x0: 759, y0: 271, x1: 757, y1: 269, cx0: 757, cy0: 271, cx1: 757, cy1: 270))
Fill: rgb(222,222,222)
Shape: rgb(165,165,165) Path (BezierCurve(x0: 756, y0: 260, x1: 759, y1: 259, cx0: 757, cy0: 259, cx1: 758, cy1: 259) > BezierCurve(x0: 765, y0: 259, x1: 768, y1: 260, cx0: 766, cy0: 259, cx1: 767, cy1: 259) > BezierCurve(x0: 767, y0: 260, x1: 765, y1: 260, cx0: 766, cy0: 260, cx1: 766, cy1: 260) > BezierCurve(x0: 759, y0: 260, x1: 757, y1: 260, cx0: 758, cy0: 260, cx1: 758, cy1: 260))
Shape: rgb(165,165,165) Path (BezierCurve(x0: 768, y0: 260, x1: 768, y1: 262, cx0: 768, cy0: 260, cx1: 768, cy1: 261) > BezierCurve(x0: 768, y0: 269, x1: 768, y1: 271, cx0: 768, cy0: 269, cx1: 768, cy1: 270) > BezierCurve(x0: 767, y0: 270, x1: 767, y1: 269, cx0: 767, cy0: 270, cx1: 767, cy1: 269) > BezierCurve(x0: 767, y0: 262, x1: 767, y1: 260, cx0: 767, cy0: 261, cx1: 767, cy1: 261))
Shape: rgb(165,165,165) Path (BezierCurve(x0: 768, y0: 271, x1: 765, y1: 272, cx0: 767, cy0: 271, cx1: 766, cy1: 272) > BezierCurve(x0: 759, y0: 272, x1: 756, y1: 271, cx0: 758, cy0: 272, cx1: 757, cy1: 271) > BezierCurve(x0: 757, y0: 270, x1: 759, y1: 271, cx0: 758, cy0: 270, cx1: 758, cy1: 271) > BezierCurve(x0: 765, y0: 271, x1: 767, y1: 270, cx0: 766, cy0: 271, cx1: 766, cy1: 270))
Shape: rgb(165,165,165) Path (BezierCurve(x0: 756, y0: 271, x1: 756, y1: 269, cx0: 756, cy0: 270, cx1: 756, cy1: 269) > BezierCurve(x0: 756, y0: 262, x1: 756, y1: 260, cx0: 756, cy0: 261, cx1: 756, cy1: 260) > BezierCurve(x0: 757, y0: 260, x1: 757, y1: 262, cx0: 757, cy0: 261, cx1: 757, cy1: 261) > BezierCurve(x0: 757, y0: 269, x1: 757, y1: 270, cx0: 757, cy0: 269, cx1: 757, cy1: 270))
Clip: Path (BezierCurve(x0: 757, y0: 262, x1: 759, y1: 260, cx0: 757, cy0: 261, cx1: 757, cy1: 260) > BezierCurve(x0: 765, y0: 260, x1: 767, y1: 262, cx0: 767, cy0: 260, cx1: 767, cy1: 261) > BezierCurve(x0: 767, y0: 269, x1: 765, y1: 271, cx0: 767, cy0: 270, cx1: 767, cy1: 271) > BezierCurve(x0: 759, y0: 271, x1: 757, y1: 269, cx0: 757, cy0: 271, cx1: 757, cy1: 270))
Clip: Path (BezierCurve(x0: 48, y0: 482, x1: 50, y1: 480, cx0: 48, cy0: 481, cx1: 49, cy1: 480) > BezierCurve(x0: 57, y0: 480, x1: 59, y1: 482, cx0: 58, cy0: 480, cx1: 59, cy1: 481) > BezierCurve(x0: 59, y0: 489, x1: 57, y1: 491, cx0: 59, cy0: 490, cx1: 58, cy1: 491) > BezierCurve(x0: 50, y0: 491, x1: 48, y1: 489, cx0: 49, cy0: 491, cx1: 48, cy1: 490))
Fill: rgb(222,222,222)
Shape: rgb(165,165,165) Path (BezierCurve(x0: 48, y0: 480, x1: 50, y1: 479, cx0: 48, cy0: 479, cx1: 49, cy1: 479) > BezierCurve(x0: 57, y0: 479, x1: 59, y1: 480, cx0: 57, cy0: 479, cx1: 58, cy1: 479) > BezierCurve(x0: 58, y0: 480, x1: 57, y1: 480, cx0: 58, cy0: 480, cx1: 57, cy1: 480) > BezierCurve(x0: 50, y0: 480, x1: 48, y1: 480, cx0: 49, cy0: 480, cx1: 49, cy1: 480))
Shape: rgb(165,165,165) Path (BezierCurve(x0: 59, y0: 480, x1: 60, y1: 482, cx0: 59, cy0: 480, cx1: 60, cy1: 481) > BezierCurve(x0: 60, y0: 489, x1: 59, y1: 491, cx0: 60, cy0: 489, cx1: 59, cy1: 490) > BezierCurve(x0: 58, y0: 490, x1: 59, y1: 489, cx0: 58, cy0: 490, cx1: 59, cy1: 489) > BezierCurve(x0: 59, y0: 482, x1: 58, y1: 480, cx0: 59, cy0: 481, cx1: 58, cy1: 481))
Shape: rgb(165,165,165) Path (BezierCurve(x0: 59, y0: 491, x1: 57, y1: 492, cx0: 58, cy0: 491, cx1: 57, cy1: 492) > BezierCurve(x0: 50, y0: 492, x1: 48, y1: 491, cx0: 49, cy0: 492, cx1: 48, cy1: 491) > BezierCurve(x0: 48, y0: 490, x1: 50, y1: 491, cx0: 49, cy0: 490, cx1: 49, cy1: 491) > BezierCurve(x0: 57, y0: 491, x1: 58, y1: 490, cx0: 57, cy0: 491, cx1: 58, cy1: 490))
Shape: rgb(165,165,165) Path (BezierCurve(x0: 48, y0: 491, x1: 47, y1: 489, cx0: 47, cy0: 490, cx1: 47, cy1: 489) > BezierCurve(x0: 47, y0: 482, x1: 48, y1: 480, cx0: 47, cy0: 481, cx1: 47, cy1: 480) > BezierCurve(x0: 48, y0: 480, x1: 48, y1: 482, cx0: 48, cy0: 481, cx1: 48, cy1: 481) > BezierCurve(x0: 48, y0: 489, x1: 48, y1: 490, cx0: 48, cy0: 489, cx1: 48, cy1: 490))
Clip: Path (BezierCurve(x0: 48, y0: 482, x1: 50, y1: 480, cx0: 48, cy0: 481, cx1: 49, cy1: 480) > BezierCurve(x0: 57, y0: 480, x1: 59, y1: 482, cx0: 58, cy0: 480, cx1: 59, cy1: 481) > BezierCurve(x0: 59, y0: 489, x1: 57, y1: 491, cx0: 59, cy0: 490, cx1: 58, cy1: 491) > BezierCurve(x0: 50, y0: 491, x1: 48, y1: 489, cx0: 49, cy0: 491, cx1: 48, cy1: 490))
Shape: rgb(42,42,42) Path (Vector(x: 52, y: 489) > Vector(x: 49, y: 486) > Vector(x: 50, y: 484) > Vector(x: 52, y: 486) > Vector(x: 56, y: 482) > Vector(x: 58, y: 483) > Vector(x: 52, y: 489))
Clip: Path (BezierCurve(x0: 248, y0: 478, x1: 250, y1: 476, cx0: 248, cy0: 477, cx1: 249, cy1: 476) > BezierCurve(x0: 264, y0: 476, x1: 266, y1: 478, cx0: 265, cy0: 476, cx1: 266, cy1: 477) > BezierCurve(x0: 266, y0: 492, x1: 264, y1: 494, cx0: 266, cy0: 493, cx1: 265, cy1: 494) > BezierCurve(x0: 250, y0: 494, x1: 248, y1: 492, cx0: 249, cy0: 494, cx1: 248, cy1: 493))
Fill: rgb(222,222,222)
Shape: rgb(165,165,165) Path (BezierCurve(x0: 248, y0: 476, x1: 250, y1: 475, cx0: 249, cy0: 476, cx1: 249, cy1: 475) > BezierCurve(x0: 264, y0: 475, x1: 266, y1: 476, cx0: 265, cy0: 475, cx1: 266, cy1: 476) > BezierCurve(x0: 266, y0: 477, x1: 264, y1: 476, cx0: 265, cy0: 476, cx1: 265, cy1: 476) > BezierCurve(x0: 250, y0: 476, x1: 249, y1: 477, cx0: 250, cy0: 476, cx1: 249, cy1: 476))
Shape: rgb(165,165,165) Path (BezierCurve(x0: 266, y0: 476, x1: 267, y1: 478, cx0: 267, cy0: 477, cx1: 267, cy1: 477) > BezierCurve(x0: 267, y0: 492, x1: 266, y1: 494, cx0: 267, cy0: 493, cx1: 267, cy1: 494) > BezierCurve(x0: 266, y0: 494, x1: 266, y1: 492, cx0: 266, cy0: 493, cx1: 266, cy1: 493) > BezierCurve(x0: 266, y0: 478, x1: 266, y1: 477, cx0: 266, cy0: 478, cx1: 266, cy1: 477))
Shape: rgb(165,165,165) Path (BezierCurve(x0: 266, y0: 494, x1: 264, y1: 495, cx0: 266, cy0: 495, cx1: 265, cy1: 495) > BezierCurve(x0: 250, y0: 495, x1: 248, y1: 494, cx0: 249, cy0: 495, cx1: 249, cy1: 495) > BezierCurve(x0: 249, y0: 494, x1: 250, y1: 494, cx0: 249, cy0: 494, cx1: 250, cy1: 494) > BezierCurve(x0: 264, y0: 494, x1: 266, y1: 494, cx0: 265, cy0: 494, cx1: 265, cy1: 494))
Shape: rgb(165,165,165) Path (BezierCurve(x0: 248, y0: 494, x1: 247, y1: 492, cx0: 248, cy0: 494, cx1: 247, cy1: 493) > BezierCurve(x0: 247, y0: 478, x1: 248, y1: 476, cx0: 247, cy0: 477, cx1: 248, cy1: 477) > BezierCurve(x0: 249, y0: 477, x1: 248, y1: 478, cx0: 248, cy0: 477, cx1: 248, cy1: 478) > BezierCurve(x0: 248, y0: 492, x1: 249, y1: 494, cx0: 248, cy0: 493, cx1: 248, cy1: 493))
Clip: Path (BezierCurve(x0: 248, y0: 478, x1: 250, y1: 476, cx0: 248, cy0: 477, cx1: 249, cy1: 476) > BezierCurve(x0: 264, y0: 476, x1: 266, y1: 478, cx0: 265, cy0: 476, cx1: 266, cy1: 477) > BezierCurve(x0: 266, y0: 492, x1: 264, y1: 494, cx0: 266, cy0: 493, cx1: 265, cy1: 494) > BezierCurve(x0: 250, y0: 494, x1: 248, y1: 492, cx0: 249, cy0: 494, cx1: 248, cy1: 493))
Clip: Path (BezierCurve(x0: 382, y0: 478, x1: 384, y1: 476, cx0: 382, cy0: 477, cx1: 383, cy1: 476) > BezierCurve(x0: 578, y0: 476, x1: 580, y1: 478, cx0: 579, cy0: 476, cx1: 580, cy1: 477) > BezierCurve(x0: 580, y0: 672, x1: 578, y1: 674, cx0: 580, cy0: 673, cx1: 579, cy1: 674) > BezierCurve(x0: 384, y0: 674, x1: 382, y1: 672, cx0: 383, cy0: 674, cx1: 382, cy1: 673))
Fill: rgb(222,222,222)
Shape: rgb(165,165,165) Path (BezierCurve(x0: 382, y0: 476, x1: 384, y1: 475, cx0: 383, cy0: 476, cx1: 383, cy1: 475) > BezierCurve(x0: 578, y0: 475, x1: 580, y1: 476, cx0: 579, cy0: 475, cx1: 580, cy1: 476) > BezierCurve(x0: 580, y0: 477, x1: 578, y1: 476, cx0: 579, cy0: 476, cx1: 579, cy1: 476) > BezierCurve(x0: 384, y0: 476, x1: 383, y1: 477, cx0: 384, cy0: 476, cx1: 383, cy1: 476))
Shape: rgb(165,165,165) Path (BezierCurve(x0: 580, y0: 476, x1: 581, y1: 478, cx0: 581, cy0: 477, cx1: 581, cy1: 477) > BezierCurve(x0: 581, y0: 672, x1: 580, y1: 674, cx0: 581, cy0: 673, cx1: 581, cy1: 674) > BezierCurve(x0: 580, y0: 674, x1: 580, y1: 672, cx0: 580, cy0: 673, cx1: 580, cy1: 673) > BezierCurve(x0: 580, y0: 478, x1: 580, y1: 477, cx0: 580, cy0: 478, cx1: 580, cy1: 477))
Shape: rgb(165,165,165) Path (BezierCurve(x0: 580, y0: 674, x1: 578, y1: 675, cx0: 580, cy0: 675, cx1: 579, cy1: 675) > BezierCurve(x0: 384, y0: 675, x1: 382, y1: 674, cx0: 383, cy0: 675, cx1: 383, cy1: 675) > BezierCurve(x0: 383, y0: 674, x1: 384, y1: 674, cx0: 383, cy0: 674, cx1: 384, cy1: 674) > BezierCurve(x0: 578, y0: 674, x1: 580, y1: 674, cx0: 579, cy0: 674, cx1: 579, cy1: 674))
Shape: rgb(165,165,165) Path (BezierCurve(x0: 382, y0: 674, x1: 381, y1: 672, cx0: 382, cy0: 674, cx1: 381, cy1: 673) > BezierCurve(x0: 381, y0: 478, x1: 382, y1: 476, cx0: 381, cy0: 477, cx1: 382, cy1: 477) > BezierCurve(x0: 383, y0: 477, x1: 382, y1: 478, cx0: 382, cy0: 477, cx1: 382, cy1: 478) > BezierCurve(x0: 382, y0: 672, x1: 383, y1: 674, cx0: 382, cy0: 673, cx1: 382, cy1: 673))
Clip: Path (BezierCurve(x0: 382, y0: 478, x1: 384, y1: 476, cx0: 382, cy0: 477, cx1: 383, cy1: 476) > BezierCurve(x0: 578, y0: 476, x1: 580, y1: 478, cx0: 579, cy0: 476, cx1: 580, cy1: 477) > BezierCurve(x0: 580, y0: 672, x1: 578, y1: 674, cx0: 580, cy0: 673, cx1: 579, cy1: 674) > BezierCurve(x0: 384, y0: 674, x1: 382, y1: 672, cx0: 383, cy0: 674, cx1: 382, cy1: 673))
Clip: Path (BezierCurve(x0: 11, y0: 698, x1: 13, y1: 696, cx0: 11, cy0: 697, cx1: 12, cy1: 696) > BezierCurve(x0: 207, y0: 696, x1: 209, y1: 698, cx0: 208, cy0: 696, cx1: 209, cy1: 697) > BezierCurve(x0: 209, y0: 892, x1: 207, y1: 894, cx0: 209, cy0: 893, cx1: 208, cy1: 894) > BezierCurve(x0: 13, y0: 894, x1: 11, y1: 892, cx0: 12, cy0: 894, cx1: 11, cy1: 893))
Fill: rgb(222,222,222)
Shape: rgb(165,165,165) Path (BezierCurve(x0: 11, y0: 696, x1: 13, y1: 695, cx0: 11, cy0: 696, cx1: 12, cy1: 695) > BezierCurve(x0: 207, y0: 695, x1: 209, y1: 696, cx0: 208, cy0: 695, cx1: 209, cy1: 696) > BezierCurve(x0: 208, y0: 697, x1: 207, y1: 696, cx0: 208, cy0: 696, cx1: 208, cy1: 696) > BezierCurve(x0: 13, y0: 696, x1: 12, y1: 697, cx0: 12, cy0: 696, cx1: 12, cy1: 696))
Shape: rgb(165,165,165) Path (BezierCurve(x0: 209, y0: 696, x1: 210, y1: 698, cx0: 210, cy0: 697, cx1: 210, cy1: 697) > BezierCurve(x0: 210, y0: 892, x1: 209, y1: 894, cx0: 210, cy0: 893, cx1: 210, cy1: 894) > BezierCurve(x0: 208, y0: 894, x1: 209, y1: 892, cx0: 209, cy0: 893, cx1: 209, cy1: 893) > BezierCurve(x0: 209, y0: 698, x1: 208, y1: 697, cx0: 209, cy0: 698, cx1: 209, cy1: 697))
Shape: rgb(165,165,165) Path (BezierCurve(x0: 209, y0: 894, x1: 207, y1: 895, cx0: 209, cy0: 895, cx1: 208, cy1: 895) > BezierCurve(x0: 13, y0: 895, x1: 11, y1: 894, cx0: 12, cy0: 895, cx1: 11, cy1: 895) > BezierCurve(x0: 12, y0: 894, x1: 13, y1: 894, cx0: 12, cy0: 894, cx1: 12, cy1: 894) > BezierCurve(x0: 207, y0: 894, x1: 208, y1: 894, cx0: 208, cy0: 894, cx1: 208, cy1: 894))
Shape: rgb(165,165,165) Path (BezierCurve(x0: 11, y0: 894, x1: 10, y1: 892, cx0: 10, cy0: 894, cx1: 10, cy1: 893) > BezierCurve(x0: 10, y0: 698, x1: 11, y1: 696, cx0: 10, cy0: 697, cx1: 10, cy1: 697) > BezierCurve(x0: 12, y0: 697, x1: 11, y1: 698, cx0: 11, cy0: 697, cx1: 11, cy1: 698) > BezierCurve(x0: 11, y0: 892, x1: 12, y1: 894, cx0: 11, cy0: 893, cx1: 11, cy1: 893))
Clip: Path (BezierCurve(x0: 11, y0: 698, x1: 13, y1: 696, cx0: 11, cy0: 697, cx1: 12, cy1: 696) > BezierCurve(x0: 207, y0: 696, x1: 209, y1: 698, cx0: 208, cy0: 696, cx1: 209, cy1: 697) > BezierCurve(x0: 209, y0: 892, x1: 207, y1: 894, cx0: 209, cy0: 893, cx1: 208, cy1: 894) > BezierCurve(x0: 13, y0: 894, x1: 11, y1: 892, cx0: 12, cy0: 894, cx1: 11, cy1: 893))
Shape: rgb(42,42,42) Path (Vector(x: 89, y: 853) > Vector(x: 42, y: 806) > Vector(x: 65, y: 783) > Vector(x: 89, y: 808) > Vector(x: 156, y: 741) > Vector(x: 178, y: 763) > Vector(x: 89, y: 853))
Transform: (733, 221) [3, 0, 0, 3, 0, 0]
Clip: Path (BezierCurve(x0: 728, y0: 217, x1: 733, y1: 212, cx0: 728, cy0: 214, cx1: 730, cy1: 212) > BezierCurve(x0: 733, y0: 212, x1: 739, y1: 217, cx0: 736, cy0: 212, cx1: 739, cy1: 214) > BezierCurve(x0: 739, y0: 217, x1: 733, y1: 223, cx0: 739, cy0: 220, cx1: 736, cy1: 223) > BezierCurve(x0: 733, y0: 223, x1: 728, y1: 217, cx0: 730, cy0: 223, cx1: 728, cy1: 220))
Fill: rgb(222,222,222)
Shape: rgb(165,165,165) Path (BezierCurve(x0: 729, y0: 213, x1: 733, y1: 211, cx0: 730, cy0: 212, cx1: 731, cy1: 211) > BezierCurve(x0: 733, y0: 211, x1: 738, y1: 213, cx0: 735, cy0: 211, cx1: 737, cy1: 212) > BezierCurve(x0: 737, y0: 213, x1: 733, y1: 212, cx0: 736, cy0: 212, cx1: 735, cy1: 212) > BezierCurve(x0: 733, y0: 212, x1: 729, y1: 213, cx0: 732, cy0: 212, cx1: 730, cy1: 212))
Shape: rgb(165,165,165) Path (BezierCurve(x0: 738, y0: 213, x1: 740, y1: 217, cx0: 739, cy0: 214, cx1: 740, cy1: 215) > BezierCurve(x0: 740, y0: 217, x1: 738, y1: 222, cx0: 740, cy0: 219, cx1: 739, cy1: 221) > BezierCurve(x0: 737, y0: 221, x1: 739, y1: 217, cx0: 738, cy0: 220, cx1: 739, cy1: 219) > BezierCurve(x0: 739, y0: 217, x1: 737, y1: 213, cx0: 739, cy0: 216, cx1: 738, cy1: 214))
Shape: rgb(165,165,165) Path (BezierCurve(x0: 738, y0: 222, x1: 733, y1: 224, cx0: 737, cy0: 223, cx1: 735, cy1: 224) > BezierCurve(x0: 733, y0: 224, x1: 729, y1: 222, cx0: 731, cy0: 224, cx1: 730, cy1: 223) > BezierCurve(x0: 729, y0: 221, x1: 733, y1: 223, cx0: 730, cy0: 222, cx1: 732, cy1: 223) > BezierCurve(x0: 733, y0: 223, x1: 737, y1: 221, cx0: 735, cy0: 223, cx1: 736, cy1: 222))
Shape: rgb(165,165,165) Path (BezierCurve(x0: 729, y0: 222, x1: 727, y1: 217, cx0: 728, cy0: 221, cx1: 727, cy1: 219) > BezierCurve(x0: 727, y0: 217, x1: 729, y1: 213, cx0: 727, cy0: 215, cx1: 728, cy1: 214) > BezierCurve(x0: 729, y0: 213, x1: 728, y1: 217, cx0: 728, cy0: 214, cx1: 728, cy1: 216) > BezierCurve(x0: 728, y0: 217, x1: 729, y1: 221, cx0: 728, cy0: 219, cx1: 728, cy1: 220))
Clip: Path (BezierCurve(x0: 728, y0: 217, x1: 733, y1: 212, cx0: 728, cy0: 214, cx1: 730, cy1: 212) > BezierCurve(x0: 733, y0: 212, x1: 739, y1: 217, cx0: 736, cy0: 212, cx1: 739, cy1: 214) > BezierCurve(x0: 739, y0: 217, x1: 733, y1: 223, cx0: 739, cy0: 220, cx1: 736, cy1: 223) > BezierCurve(x0: 733, y0: 223, x1: 728, y1: 217, cx0: 730, cy0: 223, cx1: 728, cy1: 220))
Transform: (16, 269) [3, 0, 0, 3, 0, 0]
Clip: Path (BezierCurve(x0: 11, y0: 265, x1: 16, y1: 260, cx0: 11, cy0: 262, cx1: 13, cy1: 260) > BezierCurve(x0: 16, y0: 260, x1: 22, y1: 265, cx0: 19, cy0: 260, cx1: 22, cy1: 262) > BezierCurve(x0: 22, y0: 265, x1: 16, y1: 271, cx0: 22, cy0: 268, cx1: 19, cy1: 271) > BezierCurve(x0: 16, y0: 271, x1: 11, y1: 265, cx0: 13, cy0: 271, cx1: 11, cy1: 268))
Fill: rgb(222,222,222)
Shape: rgb(165,165,165) Path (BezierCurve(x0: 12, y0: 261, x1: 16, y1: 259, cx0: 13, cy0: 260, cx1: 15, cy1: 259) > BezierCurve(x0: 16, y0: 259, x1: 21, y1: 261, cx0: 18, cy0: 259, cx1: 20, cy1: 260) > BezierCurve(x0: 20, y0: 261, x1: 16, y1: 260, cx0: 19, cy0: 260, cx1: 18, cy1: 260) > BezierCurve(x0: 16, y0: 260, x1: 13, y1: 261, cx0: 15, cy0: 260, cx1: 14, cy1: 260))
Shape: rgb(165,165,165) Path (BezierCurve(x0: 21, y0: 261, x1: 23, y1: 265, cx0: 22, cy0: 262, cx1: 23, cy1: 263) > BezierCurve(x0: 23, y0: 265, x1: 21, y1: 270, cx0: 23, cy0: 267, cx1: 22, cy1: 269) > BezierCurve(x0: 20, y0: 269, x1: 22, y1: 265, cx0: 21, cy0: 268, cx1: 22, cy1: 267) > BezierCurve(x0: 22, y0: 265, x1: 20, y1: 261, cx0: 22, cy0: 264, cx1: 21, cy1: 262))
Shape: rgb(165,165,165) Path (BezierCurve(x0: 21, y0: 270, x1: 16, y1: 272, cx0: 20, cy0: 271, cx1: 18, cy1: 272) > BezierCurve(x0: 16, y0: 272, x1: 12, y1: 270, cx0: 15, cy0: 272, cx1: 13, cy1: 271) > BezierCurve(x0: 13, y0: 269, x1: 16, y1: 271, cx0: 14, cy0: 270, cx1: 15, cy1: 271) > BezierCurve(x0: 16, y0: 271, x1: 20, y1: 269, cx0: 18, cy0: 271, cx1: 19, cy1: 270))
Shape: rgb(165,165,165) Path (BezierCurve(x0: 12, y0: 270, x1: 10, y1: 265, cx0: 11, cy0: 269, cx1: 10, cy1: 267) > BezierCurve(x0: 10, y0: 265, x1: 12, y1: 261, cx0: 10, cy0: 263, cx1: 11, cy1: 262) > BezierCurve(x0: 13, y0: 261, x1: 11, y1: 265, cx0: 12, cy0: 262, cx1: 11, cy1: 264) > BezierCurve(x0: 11, y0: 265, x1: 13, y1: 269, cx0: 11, cy0: 267, cx1: 12, cy1: 268))
Clip: Path (BezierCurve(x0: 11, y0: 265, x1: 16, y1: 260, cx0: 11, cy0: 262, cx1: 13, cy1: 260) > BezierCurve(x0: 16, y0: 260, x1: 22, y1: 265, cx0: 19, cy0: 260, cx1: 22, cy1: 262) > BezierCurve(x0: 22, y0: 265, x1: 16, y1: 271, cx0: 22, cy0: 268, cx1: 19, cy1: 271) > BezierCurve(x0: 16, y0: 271, x1: 11, y1: 265, cx0: 13, cy0: 271, cx1: 11, cy1: 268))
Shape: rgb(42,42,42) Circle(x: 13, y: 262, r: 3)
Transform: (53, 269) [3, 0, 0, 3, 0, 0]
Clip: Path (BezierCurve(x0: 48, y0: 265, x1: 53, y1: 260, cx0: 48, cy0: 262, cx1: 50, cy1: 260) > BezierCurve(x0: 53, y0: 260, x1: 59, y1: 265, cx0: 56, cy0: 260, cx1: 59, cy1: 262) > BezierCurve(x0: 59, y0: 265, x1: 53, y1: 271, cx0: 59, cy0: 268, cx1: 56, cy1: 271) > BezierCurve(x0: 53, y0: 271, x1: 48, y1: 265, cx0: 50, cy0: 271, cx1: 48, cy1: 268))
Fill: rgb(222,222,222)
Shape: rgb(165,165,165) Path (BezierCurve(x0: 49, y0: 261, x1: 53, y1: 259, cx0: 50, cy0: 260, cx1: 51, cy1: 259) > BezierCurve(x0: 53, y0: 259, x1: 58, y1: 261, cx0: 55, cy0: 259, cx1: 57, cy1: 260) > BezierCurve(x0: 57, y0: 261, x1: 53, y1: 260, cx0: 56, cy0: 260, cx1: 55, cy1: 260) > BezierCurve(x0: 53, y0: 260, x1: 49, y1: 261, cx0: 52, cy0: 260, cx1: 50, cy1: 260))
Shape: rgb(165,165,165) Path (BezierCurve(x0: 58, y0: 261, x1: 60, y1: 265, cx0: 59, cy0: 262, cx1: 60, cy1: 263) > BezierCurve(x0: 60, y0: 265, x1: 58, y1: 270, cx0: 60, cy0: 267, cx1: 59, cy1: 269) > BezierCurve(x0: 57, y0: 269, x1: 59, y1: 265, cx0: 58, cy0: 268, cx1: 59, cy1: 267) > BezierCurve(x0: 59, y0: 265, x1: 57, y1: 261, cx0: 59, cy0: 264, cx1: 58, cy1: 262))
Shape: rgb(165,165,165) Path (BezierCurve(x0: 58, y0: 270, x1: 53, y1: 272, cx0: 57, cy0: 271, cx1: 55, cy1: 272) > BezierCurve(x0: 53, y0: 272, x1: 49, y1: 270, cx0: 51, cy0: 272, cx1: 50, cy1: 271) > BezierCurve(x0: 49, y0: 269, x1: 53, y1: 271, cx0: 50, cy0: 270, cx1: 52, cy1: 271) > BezierCurve(x0: 53, y0: 271, x1: 57, y1: 269, cx0: 55, cy0: 271, cx1: 56, cy1: 270))
Shape: rgb(165,165,165) Path (BezierCurve(x0: 49, y0: 270, x1: 47, y1: 265, cx0: 48, cy0: 269, cx1: 47, cy1: 267) > BezierCurve(x0: 47, y0: 265, x1: 49, y1: 261, cx0: 47, cy0: 263, cx1: 48, cy1: 262) > BezierCurve(x0: 49, y0: 261, x1: 48, y1: 265, cx0: 48, cy0: 262, cx1: 48, cy1: 264) > BezierCurve(x0: 48, y0: 265, x1: 49, y1: 269, cx0: 48, cy0: 267, cx1: 48, cy1: 268))
Clip: Path (BezierCurve(x0: 48, y0: 265, x1: 53, y1: 260, cx0: 48, cy0: 262, cx1: 50, cy1: 260) > BezierCurve(x0: 53, y0: 260, x1: 59, y1: 265, cx0: 56, cy0: 260, cx1: 59, cy1: 262) > BezierCurve(x0: 59, y0: 265, x1: 53, y1: 271, cx0: 59, cy0: 268, cx1: 56, cy1: 271) > BezierCurve(x0: 53, y0: 271, x1: 48, y1: 265, cx0: 50, cy0: 271, cx1: 48, cy1: 268))
Transform: (16, 489) [3, 0, 0, 3, 0, 0]
Clip: Path (BezierCurve(x0: 11, y0: 482, x1: 13, y1: 480, cx0: 11, cy0: 481, cx1: 12, cy1: 480) > BezierCurve(x0: 20, y0: 480, x1: 22, y1: 482, cx0: 21, cy0: 480, cx1: 22, cy1: 481) > BezierCurve(x0: 22, y0: 489, x1: 20, y1: 491, cx0: 22, cy0: 490, cx1: 21, cy1: 491) > BezierCurve(x0: 13, y0: 491, x1: 11, y1: 489, cx0: 12, cy0: 491, cx1: 11, cy1: 490))
Fill: rgb(222,222,222)
Shape: rgb(165,165,165) Path (BezierCurve(x0: 11, y0: 480, x1: 13, y1: 479, cx0: 11, cy0: 479, cx1: 12, cy1: 479) > BezierCurve(x0: 20, y0: 479, x1: 22, y1: 480, cx0: 21, cy0: 479, cx1: 21, cy1: 479) > BezierCurve(x0: 21, y0: 480, x1: 20, y1: 480, cx0: 21, cy0: 480, cx1: 20, cy1: 480) > BezierCurve(x0: 13, y0: 480, x1: 12, y1: 480, cx0: 12, cy0: 480, cx1: 12, cy1: 480))
Shape: rgb(165,165,165) Path (BezierCurve(x0: 22, y0: 480, x1: 23, y1: 482, cx0: 22, cy0: 480, cx1: 23, cy1: 481) > BezierCurve(x0: 23, y0: 489, x1: 22, y1: 491, cx0: 23, cy0: 489, cx1: 22, cy1: 490) > BezierCurve(x0: 21, y0: 490, x1: 22, y1: 489, cx0: 22, cy0: 490, cx1: 22, cy1: 489) > BezierCurve(x0: 22, y0: 482, x1: 21, y1: 480, cx0: 22, cy0: 481, cx1: 22, cy1: 481))
Shape: rgb(165,165,165) Path (BezierCurve(x0: 22, y0: 491, x1: 20, y1: 492, cx0: 21, cy0: 491, cx1: 21, cy1: 492) > BezierCurve(x0: 13, y0: 492, x1: 11, y1: 491, cx0: 12, cy0: 492, cx1: 11, cy1: 491) > BezierCurve(x0: 12, y0: 490, x1: 13, y1: 491, cx0: 12, cy0: 490, cx1: 12, cy1: 491) > BezierCurve(x0: 20, y0: 491, x1: 21, y1: 490, cx0: 20, cy0: 491, cx1: 21, cy1: 490))
Shape: rgb(165,165,165) Path (BezierCurve(x0: 11, y0: 491, x1: 10, y1: 489, cx0: 10, cy0: 490, cx1: 10, cy1: 489) > BezierCurve(x0: 10, y0: 482, x1: 11, y1: 480, cx0: 10, cy0: 481, cx1: 10, cy1: 480) > BezierCurve(x0: 12, y0: 480, x1: 11, y1: 482, cx0: 11, cy0: 481, cx1: 11, cy1: 481) > BezierCurve(x0: 11, y0: 489, x1: 12, y1: 490, cx0: 11, cy0: 489, cx1: 11, cy1: 490))
Clip: Path (BezierCurve(x0: 11, y0: 482, x1: 13, y1: 480, cx0: 11, cy0: 481, cx1: 12, cy1: 480) > BezierCurve(x0: 20, y0: 480, x1: 22, y1: 482, cx0: 21, cy0: 480, cx1: 22, cy1: 481) > BezierCurve(x0: 22, y0: 489, x1: 20, y1: 491, cx0: 22, cy0: 490, cx1: 21, cy1: 491) > BezierCurve(x0: 13, y0: 491, x1: 11, y1: 489, cx0: 12, cy0: 491, cx1: 11, cy1: 490))
Transform: (90, 489) [3, 0, 0, 3, 0, 0]
Clip: Path (BezierCurve(x0: 85, y0: 482, x1: 87, y1: 480, cx0: 85, cy0: 481, cx1: 85, cy1: 480) > BezierCurve(x0: 93, y0: 480, x1: 95, y1: 482, cx0: 95, cy0: 480, cx1: 95, cy1: 481) > BezierCurve(x0: 95, y0: 489, x1: 93, y1: 491, cx0: 95, cy0: 490, cx1: 95, cy1: 491) > BezierCurve(x0: 87, y0: 491, x1: 85, y1: 489, cx0: 85, cy0: 491, cx1: 85, cy1: 490))
Fill: rgb(222,222,222)
Shape: rgb(165,165,165) Path (BezierCurve(x0: 84, y0: 480, x1: 87, y1: 479, cx0: 85, cy0: 479, cx1: 86, cy1: 479) > BezierCurve(x0: 93, y0: 479, x1: 96, y1: 480, cx0: 94, cy0: 479, cx1: 95, cy1: 479) > BezierCurve(x0: 95, y0: 480, x1: 93, y1: 480, cx0: 94, cy0: 480, cx1: 94, cy1: 480) > BezierCurve(x0: 87, y0: 480, x1: 85, y1: 480, cx0: 86, cy0: 480, cx1: 86, cy1: 480))
Shape: rgb(165,165,165) Path (BezierCurve(x0: 96, y0: 480, x1: 96, y1: 482, cx0: 96, cy0: 480, cx1: 96, cy1: 481) > BezierCurve(x0: 96, y0: 489, x1: 96, y1: 491, cx0: 96, cy0: 489, cx1: 96, cy1: 490) > BezierCurve(x0: 95, y0: 490, x1: 95, y1: 489, cx0: 95, cy0: 490, cx1: 95, cy1: 489) > BezierCurve(x0: 95, y0: 482, x1: 95, y1: 480, cx0: 95, cy0: 481, cx1: 95, cy1: 481))
Shape: rgb(165,165,165) Path (BezierCurve(x0: 96, y0: 491, x1: 93, y1: 492, cx0: 95, cy0: 491, cx1: 94, cy1: 492) > BezierCurve(x0: 87, y0: 492, x1: 84, y1: 491, cx0: 86, cy0: 492, cx1: 85, cy1: 491) > BezierCurve(x0: 85, y0: 490, x1: 87, y1: 491, cx0: 86, cy0: 490, cx1: 86, cy1: 491) > BezierCurve(x0: 93, y0: 491, x1: 95, y1: 490, cx0: 94, cy0: 491, cx1: 94, cy1: 490))
Shape: rgb(165,165,165) Path (BezierCurve(x0: 84, y0: 491, x1: 84, y1: 489, cx0: 84, cy0: 490, cx1: 84, cy1: 489) > BezierCurve(x0: 84, y0: 482, x1: 84, y1: 480, cx0: 84, cy0: 481, cx1: 84, cy1: 480) > BezierCurve(x0: 85, y0: 480, x1: 85, y1: 482, cx0: 85, cy0: 481, cx1: 85, cy1: 481) > BezierCurve(x0: 85, y0: 489, x1: 85, y1: 490, cx0: 85, cy0: 489, cx1: 85, cy1: 490))
Clip: Path (BezierCurve(x0: 85, y0: 482, x1: 87, y1: 480, cx0: 85, cy0: 481, cx1: 85, cy1: 480) > BezierCurve(x0: 93, y0: 480, x1: 95, y1: 482, cx0: 95, cy0: 480, cx1: 95, cy1: 481) > BezierCurve(x0: 95, y0: 489, x1: 93, y1: 491, cx0: 95, cy0: 490, cx1: 95, cy1: 491) > BezierCurve(x0: 87, y0: 491, x1: 85, y1: 489, cx0: 85, cy0: 491, cx1: 85, cy1: 490))
Shape: rgb(42,42,42) Path (Vector(x: 89, y: 489) > Vector(x: 86, y: 486) > Vector(x: 87, y: 484) > Vector(x: 89, y: 486) > Vector(x: 93, y: 482) > Vector(x: 94, y: 483) > Vector(x: 89, y: 489))
Transform: (127, 489) [3, 0, 0, 3, 0, 0]
Clip: Path (BezierCurve(x0: 121, y0: 482, x1: 123, y1: 480, cx0: 121, cy0: 481, cx1: 122, cy1: 480) > BezierCurve(x0: 130, y0: 480, x1: 132, y1: 482, cx0: 131, cy0: 480, cx1: 132, cy1: 481) > BezierCurve(x0: 132, y0: 489, x1: 130, y1: 491, cx0: 132, cy0: 490, cx1: 131, cy1: 491) > BezierCurve(x0: 123, y0: 491, x1: 121, y1: 489, cx0: 122, cy0: 491, cx1: 121, cy1: 490))
Fill: rgb(222,222,222)
Shape: rgb(165,165,165) Path (BezierCurve(x0: 121, y0: 480, x1: 123, y1: 479, cx0: 122, cy0: 479, cx1: 123, cy1: 479) > BezierCurve(x0: 130, y0: 479, x1: 132, y1: 480, cx0: 131, cy0: 479, cx1: 132, cy1: 479) > BezierCurve(x0: 132, y0: 480, x1: 130, y1: 480, cx0: 131, cy0: 480, cx1: 131, cy1: 480) > BezierCurve(x0: 123, y0: 480, x1: 122, y1: 480, cx0: 123, cy0: 480, cx1: 122, cy1: 480))
Shape: rgb(165,165,165) Path (BezierCurve(x0: 132, y0: 480, x1: 133, y1: 482, cx0: 133, cy0: 480, cx1: 133, cy1: 481) > BezierCurve(x0: 133, y0: 489, x1: 132, y1: 491, cx0: 133, cy0: 489, cx1: 133, cy1: 490) > BezierCurve(x0: 132, y0: 490, x1: 132, y1: 489, cx0: 132, cy0: 490, cx1: 132, cy1: 489) > BezierCurve(x0: 132, y0: 482, x1: 132, y1: 480, cx0: 132, cy0: 481, cx1: 132, cy1: 481))
Shape: rgb(165,165,165) Path (BezierCurve(x0: 132, y0: 491, x1: 130, y1: 492, cx0: 132, cy0: 491, cx1: 131, cy1: 492) > BezierCurve(x0: 123, y0: 492, x1: 121, y1: 491, cx0: 123, cy0: 492, cx1: 122, cy1: 491) > BezierCurve(x0: 122, y0: 490, x1: 123, y1: 491, cx0: 122, cy0: 490, cx1: 123, cy1: 491) > BezierCurve(x0: 130, y0: 491, x1: 132, y1: 490, cx0: 131, cy0: 491, cx1: 131, cy1: 490))
Shape: rgb(165,165,165) Path (BezierCurve(x0: 121, y0: 491, x1: 120, y1: 489, cx0: 121, cy0: 490, cx1: 120, cy1: 489) > BezierCurve(x0: 120, y0: 482, x1: 121, y1: 480, cx0: 120, cy0: 481, cx1: 121, cy1: 480) > BezierCurve(x0: 122, y0: 480, x1: 121, y1: 482, cx0: 122, cy0: 481, cx1: 121, cy1: 481) > BezierCurve(x0: 121, y0: 489, x1: 122, y1: 490, cx0: 121, cy0: 489, cx1: 122, cy1: 490))
Clip: Path (BezierCurve(x0: 121, y0: 482, x1: 123, y1: 480, cx0: 121, cy0: 481, cx1: 122, cy1: 480) > BezierCurve(x0: 130, y0: 480, x1: 132, y1: 482, cx0: 131, cy0: 480, cx1: 132, cy1: 481) > BezierCurve(x0: 132, y0: 489, x1: 130, y1: 491, cx0: 132, cy0: 490, cx1: 131, cy1: 491) > BezierCurve(x0: 123, y0: 491, x1: 121, y1: 489, cx0: 122, cy0: 491, cx1: 121, cy1: 490))

View File

@ -1,7 +0,0 @@
Window: [800, 600]
Rectangle: [0, 0, 800, 600] rgba(0,0,0,0)
Opacity: 1
Shape: rgb(0,0,0) Path (Vector(x: 8, y: 8) > Vector(x: 512, y: 8) > Vector(x: 510, y: 10) > Vector(x: 10, y: 10))
Shape: rgb(0,0,0) Path (Vector(x: 512, y: 8) > Vector(x: 512, y: 512) > Vector(x: 510, y: 510) > Vector(x: 510, y: 10))
Shape: rgb(0,0,0) Path (Vector(x: 512, y: 512) > Vector(x: 8, y: 512) > Vector(x: 10, y: 510) > Vector(x: 510, y: 510))
Shape: rgb(0,0,0) Path (Vector(x: 8, y: 512) > Vector(x: 8, y: 8) > Vector(x: 10, y: 10) > Vector(x: 10, y: 510))

View File

@ -15,6 +15,9 @@
<h1>External image</h1>
<img src="http://localhost:8081/assets/image2.jpg" style="border:5px solid black;" />
<h1>External svg image</h1>
<img src="http://localhost:8081/assets/image.svg" style="border:5px solid black;" />
<h1>External image (using &lt;base&gt; href)</h1>
<img src="/assets/image_1.jpg" />
</body>

View File

@ -1,16 +0,0 @@
Window: [800, 600]
Rectangle: [0, 0, 800, 600] rgba(0,0,0,0)
Opacity: 1
Text: rgb(0,0,0) normal normal 700 32 Arial
[8, 22]: External
[143, 22]: image
Text: rgb(0,0,0) normal normal 700 32 Arial
[8, 278]: External
[143, 278]: image
[244, 278]: (using
[350, 278]: <base>
[469, 278]: href)
Shape: rgb(0,0,0) Path (Vector(x: 8, y: 80) > Vector(x: 439, y: 80) > Vector(x: 434, y: 85) > Vector(x: 13, y: 85))
Shape: rgb(0,0,0) Path (Vector(x: 439, y: 80) > Vector(x: 439, y: 253) > Vector(x: 434, y: 248) > Vector(x: 434, y: 85))
Shape: rgb(0,0,0) Path (Vector(x: 439, y: 253) > Vector(x: 8, y: 253) > Vector(x: 13, y: 248) > Vector(x: 434, y: 248))
Shape: rgb(0,0,0) Path (Vector(x: 8, y: 253) > Vector(x: 8, y: 80) > Vector(x: 13, y: 85) > Vector(x: 13, y: 248))

View File

@ -1,27 +1,30 @@
<!DOCTYPE html>
<html>
<head>
<head>
<title>Image tests</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<script type="text/javascript" src="../../test.js"></script>
<script type="text/javascript">
function setUp() {
if ($('#testcanvas')[0].getContext) {
var ctx = $('#testcanvas')[0].getContext('2d');
function setUp() {
var ctx = document.querySelector('#testcanvas').getContext('2d');
ctx.fillStyle = "rgb(200,0,0)";
ctx.fillRect (10, 10, 55, 50);
ctx.fillStyle = "rgb(200,0,0)";
ctx.fillRect (10, 10, 55, 50);
ctx.fillStyle = "rgba(0, 0, 200, 0.5)";
ctx.fillRect (30, 30, 55, 50);
} else {
$('#testcanvas').remove();
ctx.fillStyle = "rgba(0, 0, 200, 0.5)";
ctx.fillRect (30, 30, 55, 50);
var gl = document.querySelector('#webglcanvas').getContext('webgl', {preserveDrawingBuffer: true});
if (gl) {
gl.clearColor(0.0, 1.0, 0.0, 1.0);
gl.clear(gl.COLOR_BUFFER_BIT);
}
}
};
</script>
</head>
<body>
<canvas id="testcanvas" style="width:700px;height:300px;"></canvas>
</body>
</head>
<body>
<canvas id="testcanvas" style="width:700px;height:300px;"></canvas>
<canvas id="webglcanvas" style="width:300px;height:300px;"></canvas>
</body>
</html>

View File

@ -1,5 +0,0 @@
Window: [800, 600]
Rectangle: [0, 0, 800, 600] rgba(0,0,0,0)
Opacity: 1
Clip: Path (Vector(x: 8, y: 8) > Vector(x: 708, y: 8) > Vector(x: 708, y: 308) > Vector(x: 8, y: 308))
Draw image: Canvas (source: [0, 0, 300, 150]) (destination: [0, 0, 300, 150])

View File

@ -16,5 +16,6 @@
<body>
<h1>External image (CORS)</h1>
<img src="http://localhost:8081/cors/tests/assets/image2.jpg" />
<img src="http://localhost:8081/cors/tests/assets/image.svg" />
</body>
</html>

View File

@ -1,7 +0,0 @@
Window: [800, 600]
Rectangle: [0, 0, 800, 600] rgba(0,0,0,0)
Opacity: 1
Text: rgb(0,0,0) normal normal 700 32 Arial
[8, 22]: External
[143, 22]: image
[244, 22]: (CORS)

View File

@ -1,32 +0,0 @@
Window: [800, 600]
Rectangle: [0, 0, 800, 600] rgba(0,0,0,0)
Opacity: 1
Text: rgb(0,0,0) normal normal 400 16 Arial
[8, 8]: Image
[57, 8]: without
[112, 8]: src
[138, 8]: attribute,
[204, 8]: should
[256, 8]: not
[283, 8]: crash:
Text: rgb(0,0,0) normal normal 400 16 Arial
[8, 78]: Image
[57, 78]: with
[90, 78]: broken
[143, 78]: src
[169, 78]: attribute,
[236, 78]: should
[287, 78]: not
[314, 78]: crash:
Shape: rgb(255,0,0) Path (Vector(x: 8, y: 26) > Vector(x: 60, y: 26) > Vector(x: 59, y: 27) > Vector(x: 9, y: 27))
Shape: rgb(255,0,0) Path (Vector(x: 60, y: 26) > Vector(x: 60, y: 78) > Vector(x: 59, y: 77) > Vector(x: 59, y: 27))
Shape: rgb(255,0,0) Path (Vector(x: 60, y: 78) > Vector(x: 8, y: 78) > Vector(x: 9, y: 77) > Vector(x: 59, y: 77))
Shape: rgb(255,0,0) Path (Vector(x: 8, y: 78) > Vector(x: 8, y: 26) > Vector(x: 9, y: 27) > Vector(x: 9, y: 77))
Shape: rgb(255,0,0) Path (Vector(x: 8, y: 96) > Vector(x: 60, y: 96) > Vector(x: 59, y: 97) > Vector(x: 9, y: 97))
Shape: rgb(255,0,0) Path (Vector(x: 60, y: 96) > Vector(x: 60, y: 148) > Vector(x: 59, y: 147) > Vector(x: 59, y: 97))
Shape: rgb(255,0,0) Path (Vector(x: 60, y: 148) > Vector(x: 8, y: 148) > Vector(x: 9, y: 147) > Vector(x: 59, y: 147))
Shape: rgb(255,0,0) Path (Vector(x: 8, y: 148) > Vector(x: 8, y: 96) > Vector(x: 9, y: 97) > Vector(x: 9, y: 147))
Shape: rgb(255,0,0) Path (Vector(x: 8, y: 148) > Vector(x: 60, y: 148) > Vector(x: 59, y: 149) > Vector(x: 9, y: 149))
Shape: rgb(255,0,0) Path (Vector(x: 60, y: 148) > Vector(x: 60, y: 200) > Vector(x: 59, y: 199) > Vector(x: 59, y: 149))
Shape: rgb(255,0,0) Path (Vector(x: 60, y: 200) > Vector(x: 8, y: 200) > Vector(x: 9, y: 199) > Vector(x: 59, y: 199))
Shape: rgb(255,0,0) Path (Vector(x: 8, y: 200) > Vector(x: 8, y: 148) > Vector(x: 9, y: 149) > Vector(x: 9, y: 199))

View File

@ -1,36 +0,0 @@
Window: [800, 703]
Rectangle: [0, 0, 800, 703] rgba(0,0,0,0)
Opacity: 1
Clip: Path (Vector(x: 8, y: 433) > Vector(x: 83, y: 433) > Vector(x: 83, y: 508) > Vector(x: 8, y: 508))
Draw image: Image ("/tests/assets/image.jpg") (source: [0, 0, 75, 75]) (destination: [0, 0, 75, 75])
Clip: Path (Vector(x: 87, y: 108) > Vector(x: 137, y: 108) > Vector(x: 137, y: 508) > Vector(x: 87, y: 508))
Draw image: Image ("/tests/assets/image.jpg") (source: [0, 0, 75, 75]) (destination: [0, 0, 75, 75])
Clip: Path (Vector(x: 141, y: 8) > Vector(x: 641, y: 8) > Vector(x: 641, y: 508) > Vector(x: 141, y: 508))
Draw image: Image ("/tests/assets/image.jpg") (source: [0, 0, 75, 75]) (destination: [0, 0, 75, 75])
Clip: Path (BezierCurve(x0: 645, y0: 458, x1: 695, y1: 408, cx0: 645, cy0: 430, cx1: 667, cy1: 408) > BezierCurve(x0: 695, y0: 408, x1: 745, y1: 458, cx0: 723, cy0: 408, cx1: 745, cy1: 430) > BezierCurve(x0: 745, y0: 458, x1: 695, y1: 508, cx0: 745, cy0: 486, cx1: 723, cy1: 508) > BezierCurve(x0: 695, y0: 508, x1: 645, y1: 458, cx0: 667, cy0: 508, cx1: 645, cy1: 486))
Draw image: Image ("/tests/assets/image.jpg") (source: [0, 0, 75, 75]) (destination: [0, 0, 75, 75])
Clip: Path (Vector(x: 8, y: 597) > Vector(x: 508, y: 597) > Vector(x: 508, y: 637) > Vector(x: 8, y: 637))
Draw image: Image ("/tests/assets/image.jpg") (source: [0, 0, 75, 75]) (destination: [0, 0, 75, 75])
Shape: rgb(0,0,0) Path (Vector(x: 512, y: 512) > Vector(x: 637, y: 512) > Vector(x: 632, y: 517) > Vector(x: 517, y: 517))
Shape: rgb(0,0,0) Path (Vector(x: 637, y: 512) > Vector(x: 637, y: 637) > Vector(x: 632, y: 632) > Vector(x: 632, y: 517))
Shape: rgb(0,0,0) Path (Vector(x: 637, y: 637) > Vector(x: 512, y: 637) > Vector(x: 517, y: 632) > Vector(x: 632, y: 632))
Shape: rgb(0,0,0) Path (Vector(x: 512, y: 637) > Vector(x: 512, y: 512) > Vector(x: 517, y: 517) > Vector(x: 517, y: 632))
Clip: Path (Vector(x: 517, y: 517) > Vector(x: 632, y: 517) > Vector(x: 632, y: 632) > Vector(x: 517, y: 632))
Draw image: Image ("/tests/assets/image.jpg") (source: [0, 0, 75, 75]) (destination: [0, 0, 75, 75])
Shape: rgb(0,0,0) Path (Vector(x: 641, y: 537) > Vector(x: 716, y: 537) > Vector(x: 716, y: 542) > Vector(x: 641, y: 542))
Clip: Path (Vector(x: 641, y: 542) > Vector(x: 716, y: 542) > Vector(x: 716, y: 637) > Vector(x: 641, y: 637))
Draw image: Image ("/tests/assets/image.jpg") (source: [0, 0, 75, 75]) (destination: [0, 0, 75, 75])
Shape: rgb(0,0,0) Path (Vector(x: 720, y: 562) > Vector(x: 770, y: 562) > Vector(x: 770, y: 567) > Vector(x: 720, y: 567))
Clip: Path (Vector(x: 720, y: 567) > Vector(x: 770, y: 567) > Vector(x: 770, y: 637) > Vector(x: 720, y: 637))
Draw image: Image ("/tests/assets/image.jpg") (source: [0, 0, 75, 75]) (destination: [0, 0, 75, 75])
Shape: rgb(0,0,0) Path (Vector(x: 8, y: 641) > Vector(x: 58, y: 641) > Vector(x: 58, y: 646) > Vector(x: 8, y: 646))
Clip: Path (Vector(x: 8, y: 646) > Vector(x: 58, y: 646) > Vector(x: 58, y: 691) > Vector(x: 8, y: 691))
Draw image: Image ("/tests/assets/image.jpg") (source: [0, 0, 75, 75]) (destination: [0, 0, 75, 75])
Shape: rgb(0,0,0) Path (Vector(x: 62, y: 689) > Vector(x: 64, y: 689) > Vector(x: 63, y: 690) > Vector(x: 63, y: 690))
Shape: rgb(0,0,0) Path (Vector(x: 64, y: 689) > Vector(x: 64, y: 691) > Vector(x: 63, y: 690) > Vector(x: 63, y: 690))
Shape: rgb(0,0,0) Path (Vector(x: 64, y: 691) > Vector(x: 62, y: 691) > Vector(x: 63, y: 690) > Vector(x: 63, y: 690))
Shape: rgb(0,0,0) Path (Vector(x: 62, y: 691) > Vector(x: 62, y: 689) > Vector(x: 63, y: 690) > Vector(x: 63, y: 690))
Clip: Path (Vector(x: 63, y: 690) > Vector(x: 63, y: 690) > Vector(x: 63, y: 690) > Vector(x: 63, y: 690))
Draw image: Image ("/tests/assets/image.jpg") (source: [0, 0, 75, 75]) (destination: [0, 0, 75, 75])
Clip: Path (Vector(x: 68, y: 691) > Vector(x: 68, y: 691) > Vector(x: 68, y: 691) > Vector(x: 68, y: 691))
Draw image: Image ("/tests/assets/image.jpg") (source: [0, 0, 75, 75]) (destination: [0, 0, 75, 75])

View File

@ -1,9 +0,0 @@
Window: [800, 600]
Rectangle: [0, 0, 800, 600] rgba(0,0,0,0)
Opacity: 1
Text: rgb(0,0,0) normal normal 400 16 Arial
[8, 8]: Inline
[51, 8]: svg
[80, 8]: image:
Clip: Path (Vector(x: 8, y: 26) > Vector(x: 208, y: 26) > Vector(x: 208, y: 226) > Vector(x: 8, y: 226))
Draw image: Image ("/svg+xml;base64,PHN2ZyB4bWxuczpzdmc9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxucz0iaHR0cDovL3d3dy53") (source: [0, 0, 306, 296]) (destination: [0, 0, 306, 296])

View File

@ -1,9 +0,0 @@
Window: [800, 600]
Rectangle: [0, 0, 800, 600] rgba(0,0,0,0)
Opacity: 1
Text: rgb(0,0,0) normal normal 400 16 Arial
[8, 8]: SVG
[46, 8]: taints
[89, 8]: image:
Clip: Path (Vector(x: 8, y: 26) > Vector(x: 666, y: 26) > Vector(x: 666, y: 363) > Vector(x: 8, y: 363))
Draw image: Image ("/tests/assets/image.svg") (source: [0, 0, 658, 337]) (destination: [0, 0, 658, 337])

View File

@ -1,7 +0,0 @@
Window: [800, 600]
Rectangle: [0, 0, 800, 600] rgba(0,0,0,0)
Opacity: 1
Text: rgb(0,0,0) normal normal 400 16 Arial
[8, 8]: Inline
[51, 8]: svg
[80, 8]: image:

View File

@ -1,7 +0,0 @@
Window: [800, 656]
Rectangle: [0, 0, 800, 656] rgba(0,0,0,0)
Opacity: 1
Clip: Path (Vector(x: 8, y: 8) > Vector(x: 666, y: 8) > Vector(x: 666, y: 345) > Vector(x: 8, y: 345))
Draw image: Image ("/tests/assets/image.svg") (source: [0, 0, 658, 337]) (destination: [0, 0, 658, 337])
Clip: Path (Vector(x: 523, y: 445) > Vector(x: 723, y: 445) > Vector(x: 723, y: 645) > Vector(x: 523, y: 645))
Draw image: Image ("/svg+xml;base64,PHN2ZyB4bWxuczpzdmc9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxucz0iaHR0cDovL3d3dy53") (source: [0, 0, 306, 296]) (destination: [0, 0, 306, 296])

View File

@ -1,7 +0,0 @@
Window: [800, 600]
Rectangle: [0, 0, 800, 600] rgba(0,0,0,0)
Opacity: 1
Text: rgb(0,0,0) normal normal 400 16 Arial
[8, 8]: SVG
[46, 8]: node
[86, 8]: image:

View File

@ -1,203 +0,0 @@
Window: [800, 5016]
Rectangle: [0, 0, 800, 5016] rgba(0,0,0,0)
Opacity: 1
Text: rgb(0,0,0) normal normal 400 20 Arial
[48, 22]: 1
Text: rgb(0,0,0) normal normal 400 20 Arial
[48, 72]: 2
Text: rgb(0,0,0) normal normal 400 20 Arial
[48, 122]: 3
Text: rgb(0,0,0) normal normal 400 20 Arial
[48, 172]: 4
Text: rgb(0,0,0) normal normal 400 20 Arial
[48, 222]: 5
Text: rgb(0,0,0) normal normal 400 20 Arial
[48, 272]: 6
Text: rgb(0,0,0) normal normal 400 20 Arial
[48, 322]: 7
Text: rgb(0,0,0) normal normal 400 20 Arial
[48, 372]: 8
Text: rgb(0,0,0) normal normal 400 20 Arial
[48, 422]: 9
Text: rgb(0,0,0) normal normal 400 20 Arial
[48, 472]: 10
Text: rgb(0,0,0) normal normal 400 20 Arial
[48, 522]: 11
Text: rgb(0,0,0) normal normal 400 20 Arial
[48, 572]: 12
Text: rgb(0,0,0) normal normal 400 20 Arial
[48, 622]: 13
Text: rgb(0,0,0) normal normal 400 20 Arial
[48, 672]: 14
Text: rgb(0,0,0) normal normal 400 20 Arial
[48, 722]: 15
Text: rgb(0,0,0) normal normal 400 20 Arial
[48, 772]: 16
Text: rgb(0,0,0) normal normal 400 20 Arial
[48, 822]: 17
Text: rgb(0,0,0) normal normal 400 20 Arial
[48, 872]: 18
Text: rgb(0,0,0) normal normal 400 20 Arial
[48, 922]: 19
Text: rgb(0,0,0) normal normal 400 20 Arial
[48, 972]: 20
Text: rgb(0,0,0) normal normal 400 20 Arial
[48, 1022]: 21
Text: rgb(0,0,0) normal normal 400 20 Arial
[48, 1072]: 22
Text: rgb(0,0,0) normal normal 400 20 Arial
[48, 1122]: 23
Text: rgb(0,0,0) normal normal 400 20 Arial
[48, 1172]: 24
Text: rgb(0,0,0) normal normal 400 20 Arial
[48, 1222]: 25
Text: rgb(0,0,0) normal normal 400 20 Arial
[48, 1272]: 26
Text: rgb(0,0,0) normal normal 400 20 Arial
[48, 1322]: 27
Text: rgb(0,0,0) normal normal 400 20 Arial
[48, 1372]: 28
Text: rgb(0,0,0) normal normal 400 20 Arial
[48, 1422]: 29
Text: rgb(0,0,0) normal normal 400 20 Arial
[48, 1472]: 30
Text: rgb(0,0,0) normal normal 400 20 Arial
[48, 1522]: 31
Text: rgb(0,0,0) normal normal 400 20 Arial
[48, 1572]: 32
Text: rgb(0,0,0) normal normal 400 20 Arial
[48, 1622]: 33
Text: rgb(0,0,0) normal normal 400 20 Arial
[48, 1672]: 34
Text: rgb(0,0,0) normal normal 400 20 Arial
[48, 1722]: 35
Text: rgb(0,0,0) normal normal 400 20 Arial
[48, 1772]: 36
Text: rgb(0,0,0) normal normal 400 20 Arial
[48, 1822]: 37
Text: rgb(0,0,0) normal normal 400 20 Arial
[48, 1872]: 38
Text: rgb(0,0,0) normal normal 400 20 Arial
[48, 1922]: 39
Text: rgb(0,0,0) normal normal 400 20 Arial
[48, 1972]: 40
Text: rgb(0,0,0) normal normal 400 20 Arial
[48, 2022]: 41
Text: rgb(0,0,0) normal normal 400 20 Arial
[48, 2072]: 42
Text: rgb(0,0,0) normal normal 400 20 Arial
[48, 2122]: 43
Text: rgb(0,0,0) normal normal 400 20 Arial
[48, 2172]: 44
Text: rgb(0,0,0) normal normal 400 20 Arial
[48, 2222]: 45
Text: rgb(0,0,0) normal normal 400 20 Arial
[48, 2272]: 46
Text: rgb(0,0,0) normal normal 400 20 Arial
[48, 2322]: 47
Text: rgb(0,0,0) normal normal 400 20 Arial
[48, 2372]: 48
Text: rgb(0,0,0) normal normal 400 20 Arial
[48, 2422]: 49
Text: rgb(0,0,0) normal normal 400 20 Arial
[48, 2472]: 50
Text: rgb(0,0,0) normal normal 400 20 Arial
[48, 2522]: 51
Text: rgb(0,0,0) normal normal 400 20 Arial
[48, 2572]: 52
Text: rgb(0,0,0) normal normal 400 20 Arial
[48, 2622]: 53
Text: rgb(0,0,0) normal normal 400 20 Arial
[48, 2672]: 54
Text: rgb(0,0,0) normal normal 400 20 Arial
[48, 2722]: 55
Text: rgb(0,0,0) normal normal 400 20 Arial
[48, 2772]: 56
Text: rgb(0,0,0) normal normal 400 20 Arial
[48, 2822]: 57
Text: rgb(0,0,0) normal normal 400 20 Arial
[48, 2872]: 58
Text: rgb(0,0,0) normal normal 400 20 Arial
[48, 2922]: 59
Text: rgb(0,0,0) normal normal 400 20 Arial
[48, 2972]: 60
Text: rgb(0,0,0) normal normal 400 20 Arial
[48, 3022]: 61
Text: rgb(0,0,0) normal normal 400 20 Arial
[48, 3072]: 62
Text: rgb(0,0,0) normal normal 400 20 Arial
[48, 3122]: 63
Text: rgb(0,0,0) normal normal 400 20 Arial
[48, 3172]: 64
Text: rgb(0,0,0) normal normal 400 20 Arial
[48, 3222]: 65
Text: rgb(0,0,0) normal normal 400 20 Arial
[48, 3272]: 66
Text: rgb(0,0,0) normal normal 400 20 Arial
[48, 3322]: 67
Text: rgb(0,0,0) normal normal 400 20 Arial
[48, 3372]: 68
Text: rgb(0,0,0) normal normal 400 20 Arial
[48, 3422]: 69
Text: rgb(0,0,0) normal normal 400 20 Arial
[48, 3472]: 70
Text: rgb(0,0,0) normal normal 400 20 Arial
[48, 3522]: 71
Text: rgb(0,0,0) normal normal 400 20 Arial
[48, 3572]: 72
Text: rgb(0,0,0) normal normal 400 20 Arial
[48, 3622]: 73
Text: rgb(0,0,0) normal normal 400 20 Arial
[48, 3672]: 74
Text: rgb(0,0,0) normal normal 400 20 Arial
[48, 3722]: 75
Text: rgb(0,0,0) normal normal 400 20 Arial
[48, 3772]: 76
Text: rgb(0,0,0) normal normal 400 20 Arial
[48, 3822]: 77
Text: rgb(0,0,0) normal normal 400 20 Arial
[48, 3872]: 78
Text: rgb(0,0,0) normal normal 400 20 Arial
[48, 3922]: 79
Text: rgb(0,0,0) normal normal 400 20 Arial
[48, 3972]: 80
Text: rgb(0,0,0) normal normal 400 20 Arial
[48, 4022]: 81
Text: rgb(0,0,0) normal normal 400 20 Arial
[48, 4072]: 82
Text: rgb(0,0,0) normal normal 400 20 Arial
[48, 4122]: 83
Text: rgb(0,0,0) normal normal 400 20 Arial
[48, 4172]: 84
Text: rgb(0,0,0) normal normal 400 20 Arial
[48, 4222]: 85
Text: rgb(0,0,0) normal normal 400 20 Arial
[48, 4272]: 86
Text: rgb(0,0,0) normal normal 400 20 Arial
[48, 4322]: 87
Text: rgb(0,0,0) normal normal 400 20 Arial
[48, 4372]: 88
Text: rgb(0,0,0) normal normal 400 20 Arial
[48, 4422]: 89
Text: rgb(0,0,0) normal normal 400 20 Arial
[48, 4472]: 90
Text: rgb(0,0,0) normal normal 400 20 Arial
[48, 4522]: 91
Text: rgb(0,0,0) normal normal 400 20 Arial
[48, 4572]: 92
Text: rgb(0,0,0) normal normal 400 20 Arial
[48, 4622]: 93
Text: rgb(0,0,0) normal normal 400 20 Arial
[48, 4672]: 94
Text: rgb(0,0,0) normal normal 400 20 Arial
[48, 4722]: 95
Text: rgb(0,0,0) normal normal 400 20 Arial
[48, 4772]: 96
Text: rgb(0,0,0) normal normal 400 20 Arial
[48, 4822]: 97
Text: rgb(0,0,0) normal normal 400 20 Arial
[48, 4872]: 98
Text: rgb(0,0,0) normal normal 400 20 Arial
[48, 4922]: 99
Text: rgb(0,0,0) normal normal 400 20 Arial
[48, 4972]: 100

View File

@ -1,203 +0,0 @@
Window: [800, 5016]
Rectangle: [0, 0, 800, 5016] rgba(0,0,0,0)
Opacity: 1
Text: rgb(0,0,0) normal normal 400 20 Arial
[48, 22]: 1
Text: rgb(0,0,0) normal normal 400 20 Arial
[48, 72]: 2
Text: rgb(0,0,0) normal normal 400 20 Arial
[48, 122]: 3
Text: rgb(0,0,0) normal normal 400 20 Arial
[48, 172]: 4
Text: rgb(0,0,0) normal normal 400 20 Arial
[48, 222]: 5
Text: rgb(0,0,0) normal normal 400 20 Arial
[48, 272]: 6
Text: rgb(0,0,0) normal normal 400 20 Arial
[48, 322]: 7
Text: rgb(0,0,0) normal normal 400 20 Arial
[48, 372]: 8
Text: rgb(0,0,0) normal normal 400 20 Arial
[48, 422]: 9
Text: rgb(0,0,0) normal normal 400 20 Arial
[48, 472]: 10
Text: rgb(0,0,0) normal normal 400 20 Arial
[48, 522]: 11
Text: rgb(0,0,0) normal normal 400 20 Arial
[48, 572]: 12
Text: rgb(0,0,0) normal normal 400 20 Arial
[48, 622]: 13
Text: rgb(0,0,0) normal normal 400 20 Arial
[48, 672]: 14
Text: rgb(0,0,0) normal normal 400 20 Arial
[48, 722]: 15
Text: rgb(0,0,0) normal normal 400 20 Arial
[48, 772]: 16
Text: rgb(0,0,0) normal normal 400 20 Arial
[48, 822]: 17
Text: rgb(0,0,0) normal normal 400 20 Arial
[48, 872]: 18
Text: rgb(0,0,0) normal normal 400 20 Arial
[48, 922]: 19
Text: rgb(0,0,0) normal normal 400 20 Arial
[48, 972]: 20
Text: rgb(0,0,0) normal normal 400 20 Arial
[48, 1022]: 21
Text: rgb(0,0,0) normal normal 400 20 Arial
[48, 1072]: 22
Text: rgb(0,0,0) normal normal 400 20 Arial
[48, 1122]: 23
Text: rgb(0,0,0) normal normal 400 20 Arial
[48, 1172]: 24
Text: rgb(0,0,0) normal normal 400 20 Arial
[48, 1222]: 25
Text: rgb(0,0,0) normal normal 400 20 Arial
[48, 1272]: 26
Text: rgb(0,0,0) normal normal 400 20 Arial
[48, 1322]: 27
Text: rgb(0,0,0) normal normal 400 20 Arial
[48, 1372]: 28
Text: rgb(0,0,0) normal normal 400 20 Arial
[48, 1422]: 29
Text: rgb(0,0,0) normal normal 400 20 Arial
[48, 1472]: 30
Text: rgb(0,0,0) normal normal 400 20 Arial
[48, 1522]: 31
Text: rgb(0,0,0) normal normal 400 20 Arial
[48, 1572]: 32
Text: rgb(0,0,0) normal normal 400 20 Arial
[48, 1622]: 33
Text: rgb(0,0,0) normal normal 400 20 Arial
[48, 1672]: 34
Text: rgb(0,0,0) normal normal 400 20 Arial
[48, 1722]: 35
Text: rgb(0,0,0) normal normal 400 20 Arial
[48, 1772]: 36
Text: rgb(0,0,0) normal normal 400 20 Arial
[48, 1822]: 37
Text: rgb(0,0,0) normal normal 400 20 Arial
[48, 1872]: 38
Text: rgb(0,0,0) normal normal 400 20 Arial
[48, 1922]: 39
Text: rgb(0,0,0) normal normal 400 20 Arial
[48, 1972]: 40
Text: rgb(0,0,0) normal normal 400 20 Arial
[48, 2022]: 41
Text: rgb(0,0,0) normal normal 400 20 Arial
[48, 2072]: 42
Text: rgb(0,0,0) normal normal 400 20 Arial
[48, 2122]: 43
Text: rgb(0,0,0) normal normal 400 20 Arial
[48, 2172]: 44
Text: rgb(0,0,0) normal normal 400 20 Arial
[48, 2222]: 45
Text: rgb(0,0,0) normal normal 400 20 Arial
[48, 2272]: 46
Text: rgb(0,0,0) normal normal 400 20 Arial
[48, 2322]: 47
Text: rgb(0,0,0) normal normal 400 20 Arial
[48, 2372]: 48
Text: rgb(0,0,0) normal normal 400 20 Arial
[48, 2422]: 49
Text: rgb(0,0,0) normal normal 400 20 Arial
[48, 2472]: 50
Text: rgb(0,0,0) normal normal 400 20 Arial
[48, 2522]: 51
Text: rgb(0,0,0) normal normal 400 20 Arial
[48, 2572]: 52
Text: rgb(0,0,0) normal normal 400 20 Arial
[48, 2622]: 53
Text: rgb(0,0,0) normal normal 400 20 Arial
[48, 2672]: 54
Text: rgb(0,0,0) normal normal 400 20 Arial
[48, 2722]: 55
Text: rgb(0,0,0) normal normal 400 20 Arial
[48, 2772]: 56
Text: rgb(0,0,0) normal normal 400 20 Arial
[48, 2822]: 57
Text: rgb(0,0,0) normal normal 400 20 Arial
[48, 2872]: 58
Text: rgb(0,0,0) normal normal 400 20 Arial
[48, 2922]: 59
Text: rgb(0,0,0) normal normal 400 20 Arial
[48, 2972]: 60
Text: rgb(0,0,0) normal normal 400 20 Arial
[48, 3022]: 61
Text: rgb(0,0,0) normal normal 400 20 Arial
[48, 3072]: 62
Text: rgb(0,0,0) normal normal 400 20 Arial
[48, 3122]: 63
Text: rgb(0,0,0) normal normal 400 20 Arial
[48, 3172]: 64
Text: rgb(0,0,0) normal normal 400 20 Arial
[48, 3222]: 65
Text: rgb(0,0,0) normal normal 400 20 Arial
[48, 3272]: 66
Text: rgb(0,0,0) normal normal 400 20 Arial
[48, 3322]: 67
Text: rgb(0,0,0) normal normal 400 20 Arial
[48, 3372]: 68
Text: rgb(0,0,0) normal normal 400 20 Arial
[48, 3422]: 69
Text: rgb(0,0,0) normal normal 400 20 Arial
[48, 3472]: 70
Text: rgb(0,0,0) normal normal 400 20 Arial
[48, 3522]: 71
Text: rgb(0,0,0) normal normal 400 20 Arial
[48, 3572]: 72
Text: rgb(0,0,0) normal normal 400 20 Arial
[48, 3622]: 73
Text: rgb(0,0,0) normal normal 400 20 Arial
[48, 3672]: 74
Text: rgb(0,0,0) normal normal 400 20 Arial
[48, 3722]: 75
Text: rgb(0,0,0) normal normal 400 20 Arial
[48, 3772]: 76
Text: rgb(0,0,0) normal normal 400 20 Arial
[48, 3822]: 77
Text: rgb(0,0,0) normal normal 400 20 Arial
[48, 3872]: 78
Text: rgb(0,0,0) normal normal 400 20 Arial
[48, 3922]: 79
Text: rgb(0,0,0) normal normal 400 20 Arial
[48, 3972]: 80
Text: rgb(0,0,0) normal normal 400 20 Arial
[48, 4022]: 81
Text: rgb(0,0,0) normal normal 400 20 Arial
[48, 4072]: 82
Text: rgb(0,0,0) normal normal 400 20 Arial
[48, 4122]: 83
Text: rgb(0,0,0) normal normal 400 20 Arial
[48, 4172]: 84
Text: rgb(0,0,0) normal normal 400 20 Arial
[48, 4222]: 85
Text: rgb(0,0,0) normal normal 400 20 Arial
[48, 4272]: 86
Text: rgb(0,0,0) normal normal 400 20 Arial
[48, 4322]: 87
Text: rgb(0,0,0) normal normal 400 20 Arial
[48, 4372]: 88
Text: rgb(0,0,0) normal normal 400 20 Arial
[48, 4422]: 89
Text: rgb(0,0,0) normal normal 400 20 Arial
[48, 4472]: 90
Text: rgb(0,0,0) normal normal 400 20 Arial
[48, 4522]: 91
Text: rgb(0,0,0) normal normal 400 20 Arial
[48, 4572]: 92
Text: rgb(0,0,0) normal normal 400 20 Arial
[48, 4622]: 93
Text: rgb(0,0,0) normal normal 400 20 Arial
[48, 4672]: 94
Text: rgb(0,0,0) normal normal 400 20 Arial
[48, 4722]: 95
Text: rgb(0,0,0) normal normal 400 20 Arial
[48, 4772]: 96
Text: rgb(0,0,0) normal normal 400 20 Arial
[48, 4822]: 97
Text: rgb(0,0,0) normal normal 400 20 Arial
[48, 4872]: 98
Text: rgb(0,0,0) normal normal 400 20 Arial
[48, 4922]: 99
Text: rgb(0,0,0) normal normal 400 20 Arial
[48, 4972]: 100

View File

@ -0,0 +1,102 @@
<!doctype html>
<html>
<head>
<title>List tests</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<script type="text/javascript" src="../../test.js"></script>
<style>
li {
margin: 10px 5%;
}
.list1 {
list-style-type: circle;
}
.list2 {
list-style-image: url(../../assets/image.jpg);
}
.list3 {
list-style-image: linear-gradient(60deg, deeppink, aquamarine);
list-style-position: inside;
}
.list4 {
}
.list5 {
list-style-type: lower-roman;
}
.list6 {
list-style-type: hiragana;
}
.list7 {
list-style-type: simp-chinese-informal;
}
.list8 {
list-style-type: lower-roman;
}
.list8 li {
display: block;
}
.list9 {
display: list-item;
list-style-type: lower-alpha;
margin: 10px;
position: relative;
left: 200px;
}
</style>
</head>
<body>
<ul class="list1">
<li>Alpha</li>
<li>Beta</li>
<li>Gamma</li>
</ul>
<ul class="list2">
<li>Alpha</li>
<li>Beta</li>
<li>Gamma</li>
</ul>
<ul class="list3">
<li>Alpha</li>
<li>Beta</li>
<li>Gamma</li>
</ul>
<ol class="list4" start="-1">
<li>Alpha</li>
<li>Beta</li>
<li>Gamma</li>
</ol>
<ol class="list5">
<li>Alpha</li>
<li value="5">Beta</li>
<li>Gamma</li>
</ol>
<ol class="list6">
<li>Alpha</li>
<li>Beta</li>
<li>Gamma</li>
</ol>
<ol class="list7">
<li>Alpha</li>
<li>Beta</li>
<li>Gamma</li>
</ol>
<ol class="list8">
<li>Alpha</li>
<li>Beta</li>
<li>Gamma</li>
</ol>
<div class="list9">Alpha</div>
<div class="list9">Beta</div>
<div class="list9">Gamma</div>
</body>
</html>

View File

@ -1,203 +0,0 @@
Window: [800, 5016]
Rectangle: [0, 0, 800, 5016] rgba(0,0,0,0)
Opacity: 1
Text: rgb(0,0,0) normal normal 400 20 Arial
[48, 22]: 1
Text: rgb(0,0,0) normal normal 400 20 Arial
[48, 72]: 2
Text: rgb(0,0,0) normal normal 400 20 Arial
[48, 122]: 3
Text: rgb(0,0,0) normal normal 400 20 Arial
[48, 172]: 4
Text: rgb(0,0,0) normal normal 400 20 Arial
[48, 222]: 5
Text: rgb(0,0,0) normal normal 400 20 Arial
[48, 272]: 6
Text: rgb(0,0,0) normal normal 400 20 Arial
[48, 322]: 7
Text: rgb(0,0,0) normal normal 400 20 Arial
[48, 372]: 8
Text: rgb(0,0,0) normal normal 400 20 Arial
[48, 422]: 9
Text: rgb(0,0,0) normal normal 400 20 Arial
[48, 472]: 10
Text: rgb(0,0,0) normal normal 400 20 Arial
[48, 522]: 11
Text: rgb(0,0,0) normal normal 400 20 Arial
[48, 572]: 12
Text: rgb(0,0,0) normal normal 400 20 Arial
[48, 622]: 13
Text: rgb(0,0,0) normal normal 400 20 Arial
[48, 672]: 14
Text: rgb(0,0,0) normal normal 400 20 Arial
[48, 722]: 15
Text: rgb(0,0,0) normal normal 400 20 Arial
[48, 772]: 16
Text: rgb(0,0,0) normal normal 400 20 Arial
[48, 822]: 17
Text: rgb(0,0,0) normal normal 400 20 Arial
[48, 872]: 18
Text: rgb(0,0,0) normal normal 400 20 Arial
[48, 922]: 19
Text: rgb(0,0,0) normal normal 400 20 Arial
[48, 972]: 20
Text: rgb(0,0,0) normal normal 400 20 Arial
[48, 1022]: 21
Text: rgb(0,0,0) normal normal 400 20 Arial
[48, 1072]: 22
Text: rgb(0,0,0) normal normal 400 20 Arial
[48, 1122]: 23
Text: rgb(0,0,0) normal normal 400 20 Arial
[48, 1172]: 24
Text: rgb(0,0,0) normal normal 400 20 Arial
[48, 1222]: 25
Text: rgb(0,0,0) normal normal 400 20 Arial
[48, 1272]: 26
Text: rgb(0,0,0) normal normal 400 20 Arial
[48, 1322]: 27
Text: rgb(0,0,0) normal normal 400 20 Arial
[48, 1372]: 28
Text: rgb(0,0,0) normal normal 400 20 Arial
[48, 1422]: 29
Text: rgb(0,0,0) normal normal 400 20 Arial
[48, 1472]: 30
Text: rgb(0,0,0) normal normal 400 20 Arial
[48, 1522]: 31
Text: rgb(0,0,0) normal normal 400 20 Arial
[48, 1572]: 32
Text: rgb(0,0,0) normal normal 400 20 Arial
[48, 1622]: 33
Text: rgb(0,0,0) normal normal 400 20 Arial
[48, 1672]: 34
Text: rgb(0,0,0) normal normal 400 20 Arial
[48, 1722]: 35
Text: rgb(0,0,0) normal normal 400 20 Arial
[48, 1772]: 36
Text: rgb(0,0,0) normal normal 400 20 Arial
[48, 1822]: 37
Text: rgb(0,0,0) normal normal 400 20 Arial
[48, 1872]: 38
Text: rgb(0,0,0) normal normal 400 20 Arial
[48, 1922]: 39
Text: rgb(0,0,0) normal normal 400 20 Arial
[48, 1972]: 40
Text: rgb(0,0,0) normal normal 400 20 Arial
[48, 2022]: 41
Text: rgb(0,0,0) normal normal 400 20 Arial
[48, 2072]: 42
Text: rgb(0,0,0) normal normal 400 20 Arial
[48, 2122]: 43
Text: rgb(0,0,0) normal normal 400 20 Arial
[48, 2172]: 44
Text: rgb(0,0,0) normal normal 400 20 Arial
[48, 2222]: 45
Text: rgb(0,0,0) normal normal 400 20 Arial
[48, 2272]: 46
Text: rgb(0,0,0) normal normal 400 20 Arial
[48, 2322]: 47
Text: rgb(0,0,0) normal normal 400 20 Arial
[48, 2372]: 48
Text: rgb(0,0,0) normal normal 400 20 Arial
[48, 2422]: 49
Text: rgb(0,0,0) normal normal 400 20 Arial
[48, 2472]: 50
Text: rgb(0,0,0) normal normal 400 20 Arial
[48, 2522]: 51
Text: rgb(0,0,0) normal normal 400 20 Arial
[48, 2572]: 52
Text: rgb(0,0,0) normal normal 400 20 Arial
[48, 2622]: 53
Text: rgb(0,0,0) normal normal 400 20 Arial
[48, 2672]: 54
Text: rgb(0,0,0) normal normal 400 20 Arial
[48, 2722]: 55
Text: rgb(0,0,0) normal normal 400 20 Arial
[48, 2772]: 56
Text: rgb(0,0,0) normal normal 400 20 Arial
[48, 2822]: 57
Text: rgb(0,0,0) normal normal 400 20 Arial
[48, 2872]: 58
Text: rgb(0,0,0) normal normal 400 20 Arial
[48, 2922]: 59
Text: rgb(0,0,0) normal normal 400 20 Arial
[48, 2972]: 60
Text: rgb(0,0,0) normal normal 400 20 Arial
[48, 3022]: 61
Text: rgb(0,0,0) normal normal 400 20 Arial
[48, 3072]: 62
Text: rgb(0,0,0) normal normal 400 20 Arial
[48, 3122]: 63
Text: rgb(0,0,0) normal normal 400 20 Arial
[48, 3172]: 64
Text: rgb(0,0,0) normal normal 400 20 Arial
[48, 3222]: 65
Text: rgb(0,0,0) normal normal 400 20 Arial
[48, 3272]: 66
Text: rgb(0,0,0) normal normal 400 20 Arial
[48, 3322]: 67
Text: rgb(0,0,0) normal normal 400 20 Arial
[48, 3372]: 68
Text: rgb(0,0,0) normal normal 400 20 Arial
[48, 3422]: 69
Text: rgb(0,0,0) normal normal 400 20 Arial
[48, 3472]: 70
Text: rgb(0,0,0) normal normal 400 20 Arial
[48, 3522]: 71
Text: rgb(0,0,0) normal normal 400 20 Arial
[48, 3572]: 72
Text: rgb(0,0,0) normal normal 400 20 Arial
[48, 3622]: 73
Text: rgb(0,0,0) normal normal 400 20 Arial
[48, 3672]: 74
Text: rgb(0,0,0) normal normal 400 20 Arial
[48, 3722]: 75
Text: rgb(0,0,0) normal normal 400 20 Arial
[48, 3772]: 76
Text: rgb(0,0,0) normal normal 400 20 Arial
[48, 3822]: 77
Text: rgb(0,0,0) normal normal 400 20 Arial
[48, 3872]: 78
Text: rgb(0,0,0) normal normal 400 20 Arial
[48, 3922]: 79
Text: rgb(0,0,0) normal normal 400 20 Arial
[48, 3972]: 80
Text: rgb(0,0,0) normal normal 400 20 Arial
[48, 4022]: 81
Text: rgb(0,0,0) normal normal 400 20 Arial
[48, 4072]: 82
Text: rgb(0,0,0) normal normal 400 20 Arial
[48, 4122]: 83
Text: rgb(0,0,0) normal normal 400 20 Arial
[48, 4172]: 84
Text: rgb(0,0,0) normal normal 400 20 Arial
[48, 4222]: 85
Text: rgb(0,0,0) normal normal 400 20 Arial
[48, 4272]: 86
Text: rgb(0,0,0) normal normal 400 20 Arial
[48, 4322]: 87
Text: rgb(0,0,0) normal normal 400 20 Arial
[48, 4372]: 88
Text: rgb(0,0,0) normal normal 400 20 Arial
[48, 4422]: 89
Text: rgb(0,0,0) normal normal 400 20 Arial
[48, 4472]: 90
Text: rgb(0,0,0) normal normal 400 20 Arial
[48, 4522]: 91
Text: rgb(0,0,0) normal normal 400 20 Arial
[48, 4572]: 92
Text: rgb(0,0,0) normal normal 400 20 Arial
[48, 4622]: 93
Text: rgb(0,0,0) normal normal 400 20 Arial
[48, 4672]: 94
Text: rgb(0,0,0) normal normal 400 20 Arial
[48, 4722]: 95
Text: rgb(0,0,0) normal normal 400 20 Arial
[48, 4772]: 96
Text: rgb(0,0,0) normal normal 400 20 Arial
[48, 4822]: 97
Text: rgb(0,0,0) normal normal 400 20 Arial
[48, 4872]: 98
Text: rgb(0,0,0) normal normal 400 20 Arial
[48, 4922]: 99
Text: rgb(0,0,0) normal normal 400 20 Arial
[48, 4972]: 100

View File

@ -1,203 +0,0 @@
Window: [800, 5016]
Rectangle: [0, 0, 800, 5016] rgba(0,0,0,0)
Opacity: 1
Text: rgb(0,0,0) normal normal 400 20 Arial
[48, 22]: 1
Text: rgb(0,0,0) normal normal 400 20 Arial
[48, 72]: 2
Text: rgb(0,0,0) normal normal 400 20 Arial
[48, 122]: 3
Text: rgb(0,0,0) normal normal 400 20 Arial
[48, 172]: 4
Text: rgb(0,0,0) normal normal 400 20 Arial
[48, 222]: 5
Text: rgb(0,0,0) normal normal 400 20 Arial
[48, 272]: 6
Text: rgb(0,0,0) normal normal 400 20 Arial
[48, 322]: 7
Text: rgb(0,0,0) normal normal 400 20 Arial
[48, 372]: 8
Text: rgb(0,0,0) normal normal 400 20 Arial
[48, 422]: 9
Text: rgb(0,0,0) normal normal 400 20 Arial
[48, 472]: 10
Text: rgb(0,0,0) normal normal 400 20 Arial
[48, 522]: 11
Text: rgb(0,0,0) normal normal 400 20 Arial
[48, 572]: 12
Text: rgb(0,0,0) normal normal 400 20 Arial
[48, 622]: 13
Text: rgb(0,0,0) normal normal 400 20 Arial
[48, 672]: 14
Text: rgb(0,0,0) normal normal 400 20 Arial
[48, 722]: 15
Text: rgb(0,0,0) normal normal 400 20 Arial
[48, 772]: 16
Text: rgb(0,0,0) normal normal 400 20 Arial
[48, 822]: 17
Text: rgb(0,0,0) normal normal 400 20 Arial
[48, 872]: 18
Text: rgb(0,0,0) normal normal 400 20 Arial
[48, 922]: 19
Text: rgb(0,0,0) normal normal 400 20 Arial
[48, 972]: 20
Text: rgb(0,0,0) normal normal 400 20 Arial
[48, 1022]: 21
Text: rgb(0,0,0) normal normal 400 20 Arial
[48, 1072]: 22
Text: rgb(0,0,0) normal normal 400 20 Arial
[48, 1122]: 23
Text: rgb(0,0,0) normal normal 400 20 Arial
[48, 1172]: 24
Text: rgb(0,0,0) normal normal 400 20 Arial
[48, 1222]: 25
Text: rgb(0,0,0) normal normal 400 20 Arial
[48, 1272]: 26
Text: rgb(0,0,0) normal normal 400 20 Arial
[48, 1322]: 27
Text: rgb(0,0,0) normal normal 400 20 Arial
[48, 1372]: 28
Text: rgb(0,0,0) normal normal 400 20 Arial
[48, 1422]: 29
Text: rgb(0,0,0) normal normal 400 20 Arial
[48, 1472]: 30
Text: rgb(0,0,0) normal normal 400 20 Arial
[48, 1522]: 31
Text: rgb(0,0,0) normal normal 400 20 Arial
[48, 1572]: 32
Text: rgb(0,0,0) normal normal 400 20 Arial
[48, 1622]: 33
Text: rgb(0,0,0) normal normal 400 20 Arial
[48, 1672]: 34
Text: rgb(0,0,0) normal normal 400 20 Arial
[48, 1722]: 35
Text: rgb(0,0,0) normal normal 400 20 Arial
[48, 1772]: 36
Text: rgb(0,0,0) normal normal 400 20 Arial
[48, 1822]: 37
Text: rgb(0,0,0) normal normal 400 20 Arial
[48, 1872]: 38
Text: rgb(0,0,0) normal normal 400 20 Arial
[48, 1922]: 39
Text: rgb(0,0,0) normal normal 400 20 Arial
[48, 1972]: 40
Text: rgb(0,0,0) normal normal 400 20 Arial
[48, 2022]: 41
Text: rgb(0,0,0) normal normal 400 20 Arial
[48, 2072]: 42
Text: rgb(0,0,0) normal normal 400 20 Arial
[48, 2122]: 43
Text: rgb(0,0,0) normal normal 400 20 Arial
[48, 2172]: 44
Text: rgb(0,0,0) normal normal 400 20 Arial
[48, 2222]: 45
Text: rgb(0,0,0) normal normal 400 20 Arial
[48, 2272]: 46
Text: rgb(0,0,0) normal normal 400 20 Arial
[48, 2322]: 47
Text: rgb(0,0,0) normal normal 400 20 Arial
[48, 2372]: 48
Text: rgb(0,0,0) normal normal 400 20 Arial
[48, 2422]: 49
Text: rgb(0,0,0) normal normal 400 20 Arial
[48, 2472]: 50
Text: rgb(0,0,0) normal normal 400 20 Arial
[48, 2522]: 51
Text: rgb(0,0,0) normal normal 400 20 Arial
[48, 2572]: 52
Text: rgb(0,0,0) normal normal 400 20 Arial
[48, 2622]: 53
Text: rgb(0,0,0) normal normal 400 20 Arial
[48, 2672]: 54
Text: rgb(0,0,0) normal normal 400 20 Arial
[48, 2722]: 55
Text: rgb(0,0,0) normal normal 400 20 Arial
[48, 2772]: 56
Text: rgb(0,0,0) normal normal 400 20 Arial
[48, 2822]: 57
Text: rgb(0,0,0) normal normal 400 20 Arial
[48, 2872]: 58
Text: rgb(0,0,0) normal normal 400 20 Arial
[48, 2922]: 59
Text: rgb(0,0,0) normal normal 400 20 Arial
[48, 2972]: 60
Text: rgb(0,0,0) normal normal 400 20 Arial
[48, 3022]: 61
Text: rgb(0,0,0) normal normal 400 20 Arial
[48, 3072]: 62
Text: rgb(0,0,0) normal normal 400 20 Arial
[48, 3122]: 63
Text: rgb(0,0,0) normal normal 400 20 Arial
[48, 3172]: 64
Text: rgb(0,0,0) normal normal 400 20 Arial
[48, 3222]: 65
Text: rgb(0,0,0) normal normal 400 20 Arial
[48, 3272]: 66
Text: rgb(0,0,0) normal normal 400 20 Arial
[48, 3322]: 67
Text: rgb(0,0,0) normal normal 400 20 Arial
[48, 3372]: 68
Text: rgb(0,0,0) normal normal 400 20 Arial
[48, 3422]: 69
Text: rgb(0,0,0) normal normal 400 20 Arial
[48, 3472]: 70
Text: rgb(0,0,0) normal normal 400 20 Arial
[48, 3522]: 71
Text: rgb(0,0,0) normal normal 400 20 Arial
[48, 3572]: 72
Text: rgb(0,0,0) normal normal 400 20 Arial
[48, 3622]: 73
Text: rgb(0,0,0) normal normal 400 20 Arial
[48, 3672]: 74
Text: rgb(0,0,0) normal normal 400 20 Arial
[48, 3722]: 75
Text: rgb(0,0,0) normal normal 400 20 Arial
[48, 3772]: 76
Text: rgb(0,0,0) normal normal 400 20 Arial
[48, 3822]: 77
Text: rgb(0,0,0) normal normal 400 20 Arial
[48, 3872]: 78
Text: rgb(0,0,0) normal normal 400 20 Arial
[48, 3922]: 79
Text: rgb(0,0,0) normal normal 400 20 Arial
[48, 3972]: 80
Text: rgb(0,0,0) normal normal 400 20 Arial
[48, 4022]: 81
Text: rgb(0,0,0) normal normal 400 20 Arial
[48, 4072]: 82
Text: rgb(0,0,0) normal normal 400 20 Arial
[48, 4122]: 83
Text: rgb(0,0,0) normal normal 400 20 Arial
[48, 4172]: 84
Text: rgb(0,0,0) normal normal 400 20 Arial
[48, 4222]: 85
Text: rgb(0,0,0) normal normal 400 20 Arial
[48, 4272]: 86
Text: rgb(0,0,0) normal normal 400 20 Arial
[48, 4322]: 87
Text: rgb(0,0,0) normal normal 400 20 Arial
[48, 4372]: 88
Text: rgb(0,0,0) normal normal 400 20 Arial
[48, 4422]: 89
Text: rgb(0,0,0) normal normal 400 20 Arial
[48, 4472]: 90
Text: rgb(0,0,0) normal normal 400 20 Arial
[48, 4522]: 91
Text: rgb(0,0,0) normal normal 400 20 Arial
[48, 4572]: 92
Text: rgb(0,0,0) normal normal 400 20 Arial
[48, 4622]: 93
Text: rgb(0,0,0) normal normal 400 20 Arial
[48, 4672]: 94
Text: rgb(0,0,0) normal normal 400 20 Arial
[48, 4722]: 95
Text: rgb(0,0,0) normal normal 400 20 Arial
[48, 4772]: 96
Text: rgb(0,0,0) normal normal 400 20 Arial
[48, 4822]: 97
Text: rgb(0,0,0) normal normal 400 20 Arial
[48, 4872]: 98
Text: rgb(0,0,0) normal normal 400 20 Arial
[48, 4922]: 99
Text: rgb(0,0,0) normal normal 400 20 Arial
[48, 4972]: 100

View File

@ -0,0 +1,41 @@
<!DOCTYPE html>
<html>
<head>
<title>element render test</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<script>
</script>
<script type="text/javascript" src="../../test.js"></script>
<style>
#div1 {
width: 100px;
height: 100px;
background: green;
}
#ignored {
background: red;
width: 100px;
height: 100px;
}
body, html {
margin: 0;
padding: 0;
}
</style>
</head>
<body>
<div id="ignored" data-html2canvas-ignore>
great failure
</div>
<div id="div1">
great success
</div>
</body>
</html>

View File

@ -1,134 +0,0 @@
Window: [800, 600]
Rectangle: [0, 0, 800, 600] rgba(0,0,0,0)
Opacity: 1
Shape: rgb(0,0,0) Path (Vector(x: 8, y: 8) > Vector(x: 312, y: 8) > Vector(x: 310, y: 10) > Vector(x: 10, y: 10))
Shape: rgb(0,0,0) Path (Vector(x: 312, y: 8) > Vector(x: 312, y: 312) > Vector(x: 310, y: 310) > Vector(x: 310, y: 10))
Shape: rgb(0,0,0) Path (Vector(x: 312, y: 312) > Vector(x: 8, y: 312) > Vector(x: 10, y: 310) > Vector(x: 310, y: 310))
Shape: rgb(0,0,0) Path (Vector(x: 8, y: 312) > Vector(x: 8, y: 8) > Vector(x: 10, y: 10) > Vector(x: 10, y: 310))
Clip: Path (Vector(x: 10, y: 10) > Vector(x: 310, y: 10) > Vector(x: 310, y: 310) > Vector(x: 10, y: 310))
Clip: Path (Vector(x: 10, y: 10) > Vector(x: 310, y: 10) > Vector(x: 310, y: 310) > Vector(x: 10, y: 310))
Text: rgb(0,0,0) normal normal 400 16 Arial
[10, 26]: Le
[32, 26]: Lorem
[82, 26]: Ipsum
[130, 26]: est
[156, 26]: simplement
[242, 26]: du
[264, 26]: faux
[10, 42]: texte
[49, 42]: employé
[114, 42]: dans
[153, 42]: la
[170, 42]: composition
[260, 42]: et
[278, 42]: la
[10, 59]: mise
[48, 59]: en
[70, 59]: page
[110, 59]: avant
[154, 59]: impression.
[240, 59]: Le
[262, 59]: Lorem
[10, 76]: Ipsum
[58, 76]: est
[84, 76]: le
[101, 76]: faux
[135, 76]: texte
[174, 76]: standard
[241, 76]: de
[10, 93]: l'imprimerie
[96, 93]: depuis
[147, 93]: les
[172, 93]: années
[229, 93]: 1500,
[10, 110]: quand
[59, 110]: un
[81, 110]: peintre
[134, 110]: anonyme
[205, 110]: assembla
[10, 126]: ensemble
[84, 126]: des
[114, 126]: morceaux
[189, 126]: de
[211, 126]: texte
[250, 126]: pour
[10, 143]: réaliser
[67, 143]: un
[89, 143]: livre
[123, 143]: spécimen
[196, 143]: de
[218, 143]: polices
[272, 143]: de
[10, 160]: texte.
[54, 160]: Il
[66, 160]: n'a
[91, 160]: pas
[122, 160]: fait
[147, 160]: que
[178, 160]: survivre
[239, 160]: cinq
[10, 177]: siècles,
[68, 177]: mais
[106, 177]: s'est
[143, 177]: aussi
[185, 177]: adapté
[238, 177]: à
[251, 177]: la
[10, 194]: bureautique
[99, 194]: informatique,
[196, 194]: sans
[234, 194]: que
[265, 194]: son
[10, 210]: contenu
[71, 210]: n'en
[106, 210]: soit
[135, 210]: modifié.
[195, 210]: Il
[208, 210]: a
[221, 210]: été
[10, 227]: popularisé
[88, 227]: dans
[128, 227]: les
[152, 227]: années
[209, 227]: 1960
[249, 227]: grâce
[294, 227]: à
[10, 244]: la
[27, 244]: vente
[70, 244]: de
[93, 244]: feuilles
[147, 244]: Letraset
[209, 244]: contenant
[284, 244]: des
[10, 261]: passages
[83, 261]: du
[105, 261]: Lorem
[155, 261]: Ipsum,
[208, 261]: et,
[230, 261]: plus
[10, 278]: récemment,
[99, 278]: par
[126, 278]: son
[157, 278]: inclusion
[224, 278]: dans
[262, 278]: des
[10, 294]: applications
[99, 294]: de
[121, 294]: mise
[160, 294]: en
[182, 294]: page
[222, 294]: de
[244, 294]: texte,
[10, 311]: comme
[67, 311]: Aldus
[111, 311]: PageMaker.
Transform: (91, 525) [-0.92, -0.39, 0.39, -0.92, 0, 0]
Clip: Path (Vector(x: 10, y: 10) > Vector(x: 310, y: 10) > Vector(x: 310, y: 310) > Vector(x: 10, y: 310))
Clip: Path (Vector(x: -140, y: 215) > Vector(x: 321, y: 215) > Vector(x: 321, y: 835) > Vector(x: -140, y: 835))
Fill: rgb(255,0,0)
Clip: Path (Vector(x: 10, y: 10) > Vector(x: 310, y: 10) > Vector(x: 310, y: 310) > Vector(x: 10, y: 310))
Transform: (268, -94) [-0.92, -0.39, 0.39, -0.92, 0, 0]
Clip: Path (Vector(x: 10, y: 10) > Vector(x: 310, y: 10) > Vector(x: 310, y: 310) > Vector(x: 10, y: 310))
Clip: Path (Vector(x: -47, y: -402) > Vector(x: 582, y: -402) > Vector(x: 582, y: 215) > Vector(x: -47, y: 215))
Fill: rgb(255,0,255)
Clip: Path (Vector(x: 10, y: 10) > Vector(x: 310, y: 10) > Vector(x: 310, y: 310) > Vector(x: 10, y: 310))

View File

@ -1,70 +1,122 @@
<!DOCTYPE html>
<html>
<head>
<title>Overflow tests</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<script type="text/javascript" src="../../test.js"></script>
<style>
.small{
font-size:14px;
}
<head>
<title>Overflow tests</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<script type="text/javascript" src="../../test.js"></script>
<style>
.small{
font-size:14px;
}
.medium{
font-size:18px;
}
.large{
font-size:24px;
}
div{
background: #ccc;
border:6px solid black;
width:300px;
height:200px;
margin: 0 0 60px 0;
}
h1 {
margin:0;
line-height: 40px;
}
body {
font-family: Arial;
line-height: 17px;
font-size: 1em;
}
</style>
.medium{
font-size:18px;
}
.large{
font-size:24px;
}
div{
background: #ccc;
border:6px solid black;
width:300px;
height:200px;
margin: 0 0 60px 0;
}
h1 {
margin:0;
line-height: 40px;
}
body {
font-family: Arial;
line-height: 17px;
font-size: 1em;
}
.cell {
display: inline-block;
width: 100px;
float: right;
height: 100px;
}
</head>
<body>
.cell p {
height: 60px;
}
<h1>Overflow: visible</h1>
<div> Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book. It has survived not only five centuries, but also the leap into electronic typesetting, remaining essentially unchanged. It was popularised in the 1960s with the release of Letraset sheets containing Lorem Ipsum passages, and more recently with desktop publishing software like <b>Aldus PageMaker</b> including versions of Lorem Ipsum.
</div>
.visible {
overflow: visible;
}
.hidden {
overflow: hidden;
}
.scroll {
overflow: scroll;
}
.auto {
overflow: auto;
}
</style>
<h1>Overflow: hidden</h1>
<div style="overflow:hidden;float: right; height: 100px; border-radius: 100%; border-color: transparent;">
Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book. It has survived not only five centuries, but also the leap into electronic typesetting, remaining essentially unchanged. It was popularised in the 1960s
</head>
<body>
<div class="cell">
visible
<p class="visible">Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec luctus pretium facilisis. Praesent rutrum eget nisl in tristique. Sed tincidunt nisl et tellus vulputate, nec rhoncus orci pretium.</p>
</div>
<div class="cell">
hidden
<p class="hidden">Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec luctus pretium facilisis. Praesent rutrum eget nisl in tristique. Sed tincidunt nisl et tellus vulputate, nec rhoncus orci pretium.</p>
</div>
<div class="cell">
scroll
<p class="scroll">Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec luctus pretium facilisis. Praesent rutrum eget nisl in tristique. Sed tincidunt nisl et tellus vulputate, nec rhoncus orci pretium.</p>
</div>
<div class="cell">
auto
<p class="auto">Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec luctus pretium facilisis. Praesent rutrum eget nisl in tristique. Sed tincidunt nisl et tellus vulputate, nec rhoncus orci pretium.</p>
</div>
<h1>Overflow: visible</h1>
<div> Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book. It has survived not only five centuries, but also the leap into electronic typesetting, remaining essentially unchanged. It was popularised in the 1960s with the release of Letraset sheets containing Lorem Ipsum passages, and more recently with desktop publishing software like <b>Aldus PageMaker</b> including versions of Lorem Ipsum.
</div>
with the release of <div style="border-width:10px 0 5px 0;background:green;">a</div>Letraset sheets containing Lorem Ipsum passages, <img src="../../assets/image.jpg" /> and more recently with desktop publishing software like <b>Aldus PageMaker</b> including versions of Lorem Ipsum.
<h1>Overflow: hidden</h1>
<div style="overflow:hidden;float: right; height: 100px; border-radius: 100%; border-color: transparent;">
Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book. It has survived not only five centuries, but also the leap into electronic typesetting, remaining essentially unchanged. It was popularised in the 1960s
with the release of <div style="border-width:10px 0 5px 0;background:green;">a</div>Letraset sheets containing Lorem Ipsum passages, <img src="../../assets/image.jpg" /> and more recently with desktop publishing software like <b>Aldus PageMaker</b> including versions of Lorem Ipsum.
<div style="overflow:visible;position:relative;"><u>position:relative within a overflow:hidden element</u><br /> <br />
<div style="overflow:visible;position:relative;"><u>position:relative within a overflow:hidden element</u><br /> <br />
Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book. It has survived not only five centuries, but also the leap into electronic typesetting, remaining essentially unchanged. It was popularised in the 1960s with the release of Letraset sheets containing Lorem Ipsum passages, and more recently with desktop publishing software like <b>Aldus PageMaker</b> including versions of Lorem Ipsum.
Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book. It has survived not only five centuries, but also the leap into electronic typesetting, remaining essentially unchanged. It was popularised in the 1960s with the release of Letraset sheets containing Lorem Ipsum passages, and more recently with desktop publishing software like <b>Aldus PageMaker</b> including versions of Lorem Ipsum.
</div>
</div>
<div style="overflow:hidden;">
Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book. It has survived not only five centuries, but also the leap into electronic typesetting, remaining essentially unchanged. It was popularised in the 1960s
</div>
</div>
<div style="overflow:hidden;">
Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book. It has survived not only five centuries, but also the leap into electronic typesetting, remaining essentially unchanged. It was popularised in the 1960s
with the release of <div style="border-width:10px 0 5px 0;background:green;">a</div>Letraset sheets containing Lorem Ipsum passages, <img src="../../assets/image.jpg" /> and more recently with desktop publishing software like <b>Aldus PageMaker</b> including versions of Lorem Ipsum.
with the release of <div style="border-width:10px 0 5px 0;background:green;">a</div>Letraset sheets containing Lorem Ipsum passages, <img src="../../assets/image.jpg" /> and more recently with desktop publishing software like <b>Aldus PageMaker</b> including versions of Lorem Ipsum.
<div style="overflow:visible;position:relative;"><u>position:relative within a overflow:hidden element</u><br /> <br />
<div style="overflow:visible;position:relative;"><u>position:relative within a overflow:hidden element</u><br /> <br />
Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book. It has survived not only five centuries, but also the leap into electronic typesetting, remaining essentially unchanged. It was popularised in the 1960s with the release of Letraset sheets containing Lorem Ipsum passages, and more recently with desktop publishing software like <b>Aldus PageMaker</b> including versions of Lorem Ipsum.
Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book. It has survived not only five centuries, but also the leap into electronic typesetting, remaining essentially unchanged. It was popularised in the 1960s with the release of Letraset sheets containing Lorem Ipsum passages, and more recently with desktop publishing software like <b>Aldus PageMaker</b> including versions of Lorem Ipsum.
</div>
</div>
</div>
</div>
<div style="overflow:scroll; height: 100px;" id="scroll">
Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book. It has survived not only five centuries, but also the leap into electronic typesetting, remaining essentially unchanged. It was popularised in the 1960s
</body>
with the release of <div style="border-width:10px 0 5px 0;background:green;">a</div>Letraset sheets containing Lorem Ipsum passages, <img src="../../assets/image.jpg" /> and more recently with desktop publishing software like <b>Aldus PageMaker</b> including versions of Lorem Ipsum.
<div style="overflow:visible;position:relative;"><u>position:relative within a overflow:hidden element</u><br /> <br />
Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book. It has survived not only five centuries, but also the leap into electronic typesetting, remaining essentially unchanged. It was popularised in the 1960s with the release of Letraset sheets containing Lorem Ipsum passages, and more recently with desktop publishing software like <b>Aldus PageMaker</b> including versions of Lorem Ipsum.
</div>
<script>
document.querySelector('#scroll').scrollTo(0, 200);
</script>
</div>
</body>
</html>

View File

@ -1,567 +0,0 @@
Window: [800, 632]
Rectangle: [0, 0, 800, 632] rgba(0,0,0,0)
Opacity: 1
Text: rgb(0,0,0) normal normal 700 32 Arial
[8, 10]: Overflow:
[164, 10]: visible
Clip: Path (Vector(x: 8, y: 48) > Vector(x: 320, y: 48) > Vector(x: 320, y: 260) > Vector(x: 8, y: 260))
Fill: rgb(204,204,204)
Shape: rgb(0,0,0) Path (Vector(x: 8, y: 48) > Vector(x: 320, y: 48) > Vector(x: 314, y: 54) > Vector(x: 14, y: 54))
Shape: rgb(0,0,0) Path (Vector(x: 320, y: 48) > Vector(x: 320, y: 260) > Vector(x: 314, y: 254) > Vector(x: 314, y: 54))
Shape: rgb(0,0,0) Path (Vector(x: 320, y: 260) > Vector(x: 8, y: 260) > Vector(x: 14, y: 254) > Vector(x: 314, y: 254))
Shape: rgb(0,0,0) Path (Vector(x: 8, y: 260) > Vector(x: 8, y: 48) > Vector(x: 14, y: 54) > Vector(x: 14, y: 254))
Text: rgb(0,0,0) normal normal 400 16 Arial
[14, 54]: Lorem
[64, 54]: Ipsum
[112, 54]: is
[128, 54]: simply
[178, 54]: dummy
[234, 54]: text
[265, 54]: of
[282, 54]: the
[14, 70]: printing
[71, 70]: and
[102, 70]: typesetting
[184, 70]: industry.
[248, 70]: Lorem
[14, 87]: Ipsum
[62, 87]: has
[92, 87]: been
[132, 87]: the
[159, 87]: industry's
[230, 87]: standard
[14, 104]: dummy
[71, 104]: text
[101, 104]: ever
[137, 104]: since
[178, 104]: the
[205, 104]: 1500s,
[258, 104]: when
[14, 121]: an
[36, 121]: unknown
[105, 121]: printer
[154, 121]: took
[189, 121]: a
[202, 121]: galley
[249, 121]: of
[267, 121]: type
[14, 138]: and
[45, 138]: scrambled
[123, 138]: it
[136, 138]: to
[154, 138]: make
[197, 138]: a
[210, 138]: type
[245, 138]: specimen
[14, 154]: book.
[58, 154]: It
[71, 154]: has
[101, 154]: survived
[165, 154]: not
[192, 154]: only
[226, 154]: five
[14, 171]: centuries,
[88, 171]: but
[114, 171]: also
[148, 171]: the
[175, 171]: leap
[210, 171]: into
[240, 171]: electronic
[14, 188]: typesetting,
[100, 188]: remaining
[175, 188]: essentially
[14, 205]: unchanged.
[102, 205]: It
[116, 205]: was
[148, 205]: popularised
[236, 205]: in
[252, 205]: the
[14, 222]: 1960s
[62, 222]: with
[95, 222]: the
[122, 222]: release
[178, 222]: of
[196, 222]: Letraset
[258, 222]: sheets
[14, 238]: containing
[91, 238]: Lorem
[141, 238]: Ipsum
[189, 238]: passages,
[266, 238]: and
[14, 255]: more
[55, 255]: recently
[115, 255]: with
[148, 255]: desktop
[209, 255]: publishing
[14, 272]: software
[79, 272]: like
Text: rgb(0,0,0) normal normal 400 16 Arial
[245, 272]: including
[14, 289]: versions
[78, 289]: of
[96, 289]: Lorem
[146, 289]: Ipsum.
Text: rgb(0,0,0) normal normal 700 32 Arial
[8, 322]: Overflow:
[164, 322]: hidden
Clip: Path (Vector(x: 8, y: 360) > Vector(x: 320, y: 360) > Vector(x: 320, y: 572) > Vector(x: 8, y: 572))
Fill: rgb(204,204,204)
Shape: rgb(0,0,0) Path (Vector(x: 8, y: 360) > Vector(x: 320, y: 360) > Vector(x: 314, y: 366) > Vector(x: 14, y: 366))
Shape: rgb(0,0,0) Path (Vector(x: 320, y: 360) > Vector(x: 320, y: 572) > Vector(x: 314, y: 566) > Vector(x: 314, y: 366))
Shape: rgb(0,0,0) Path (Vector(x: 320, y: 572) > Vector(x: 8, y: 572) > Vector(x: 14, y: 566) > Vector(x: 314, y: 566))
Shape: rgb(0,0,0) Path (Vector(x: 8, y: 572) > Vector(x: 8, y: 360) > Vector(x: 14, y: 366) > Vector(x: 14, y: 566))
Clip: Path (Vector(x: 14, y: 366) > Vector(x: 314, y: 366) > Vector(x: 314, y: 566) > Vector(x: 14, y: 566))
Text: rgb(0,0,0) normal normal 400 16 Arial
[14, 366]: Lorem
[64, 366]: Ipsum
[112, 366]: is
[128, 366]: simply
[178, 366]: dummy
[234, 366]: text
[265, 366]: of
[282, 366]: the
[14, 382]: printing
[71, 382]: and
[102, 382]: typesetting
[184, 382]: industry.
[248, 382]: Lorem
[14, 399]: Ipsum
[62, 399]: has
[92, 399]: been
[132, 399]: the
[159, 399]: industry's
[230, 399]: standard
[14, 416]: dummy
[71, 416]: text
[101, 416]: ever
[137, 416]: since
[178, 416]: the
[205, 416]: 1500s,
[258, 416]: when
[14, 433]: an
[36, 433]: unknown
[105, 433]: printer
[154, 433]: took
[189, 433]: a
[202, 433]: galley
[249, 433]: of
[267, 433]: type
[14, 450]: and
[45, 450]: scrambled
[123, 450]: it
[136, 450]: to
[154, 450]: make
[197, 450]: a
[210, 450]: type
[245, 450]: specimen
[14, 466]: book.
[58, 466]: It
[71, 466]: has
[101, 466]: survived
[165, 466]: not
[192, 466]: only
[226, 466]: five
[14, 483]: centuries,
[88, 483]: but
[114, 483]: also
[148, 483]: the
[175, 483]: leap
[210, 483]: into
[240, 483]: electronic
[14, 500]: typesetting,
[100, 500]: remaining
[175, 500]: essentially
[14, 517]: unchanged.
[102, 517]: It
[116, 517]: was
[148, 517]: popularised
[236, 517]: in
[252, 517]: the
[14, 534]: 1960s
[62, 534]: with
[95, 534]: the
[122, 534]: release
[178, 534]: of
Text: rgb(0,0,0) normal normal 400 16 Arial
[14, 825]: Letraset
[76, 825]: sheets
[128, 825]: containing
[205, 825]: Lorem
[255, 825]: Ipsum
[14, 903]: passages,
Text: rgb(0,0,0) normal normal 400 16 Arial
[171, 903]: and
[202, 903]: more
[243, 903]: recently
[14, 920]: with
[47, 920]: desktop
[107, 920]: publishing
[184, 920]: software
[249, 920]: like
Text: rgb(0,0,0) normal normal 400 16 Arial
[152, 937]: including
[220, 937]: versions
[284, 937]: of
[14, 954]: Lorem
[64, 954]: Ipsum.
Clip: Path (Vector(x: 14, y: 366) > Vector(x: 314, y: 366) > Vector(x: 314, y: 566) > Vector(x: 14, y: 566))
Clip: Path (Vector(x: 14, y: 551) > Vector(x: 314, y: 551) > Vector(x: 314, y: 766) > Vector(x: 14, y: 766))
Fill: rgb(0,128,0)
Shape: rgb(0,0,0) Path (Vector(x: 14, y: 551) > Vector(x: 314, y: 551) > Vector(x: 314, y: 561) > Vector(x: 14, y: 561))
Shape: rgb(0,0,0) Path (Vector(x: 314, y: 551) > Vector(x: 314, y: 766) > Vector(x: 314, y: 761) > Vector(x: 314, y: 561))
Shape: rgb(0,0,0) Path (Vector(x: 314, y: 766) > Vector(x: 14, y: 766) > Vector(x: 14, y: 761) > Vector(x: 314, y: 761))
Shape: rgb(0,0,0) Path (Vector(x: 14, y: 766) > Vector(x: 14, y: 551) > Vector(x: 14, y: 561) > Vector(x: 14, y: 761))
Clip: Path (Vector(x: 14, y: 366) > Vector(x: 314, y: 366) > Vector(x: 314, y: 566) > Vector(x: 14, y: 566))
Text: rgb(0,0,0) normal normal 400 16 Arial
[14, 560]: a
Clip: Path (BezierCurve(x0: 480, y0: 416, x1: 636, y1: 360, cx0: 480, cy0: 385, cx1: 550, cy1: 360) > BezierCurve(x0: 636, y0: 360, x1: 792, y1: 416, cx0: 722, cy0: 360, cx1: 792, cy1: 385) > BezierCurve(x0: 792, y0: 416, x1: 636, y1: 472, cx0: 792, cy0: 447, cx1: 722, cy1: 472) > BezierCurve(x0: 636, y0: 472, x1: 480, y1: 416, cx0: 550, cy0: 472, cx1: 480, cy1: 447))
Fill: rgb(204,204,204)
Clip: Path (BezierCurve(x0: 486, y0: 416, x1: 636, y1: 366, cx0: 486, cy0: 388, cx1: 553, cy1: 366) > BezierCurve(x0: 636, y0: 366, x1: 786, y1: 416, cx0: 719, cy0: 366, cx1: 786, cy1: 388) > BezierCurve(x0: 786, y0: 416, x1: 636, y1: 466, cx0: 786, cy0: 444, cx1: 719, cy1: 466) > BezierCurve(x0: 636, y0: 466, x1: 486, y1: 416, cx0: 553, cy0: 466, cx1: 486, cy1: 444))
Text: rgb(0,0,0) normal normal 400 16 Arial
[486, 366]: Lorem
[536, 366]: Ipsum
[584, 366]: is
[600, 366]: simply
[650, 366]: dummy
[706, 366]: text
[737, 366]: of
[754, 366]: the
[486, 382]: printing
[543, 382]: and
[574, 382]: typesetting
[656, 382]: industry.
[720, 382]: Lorem
[486, 399]: Ipsum
[534, 399]: has
[564, 399]: been
[604, 399]: the
[631, 399]: industry's
[702, 399]: standard
[486, 416]: dummy
[543, 416]: text
[573, 416]: ever
[609, 416]: since
[650, 416]: the
[677, 416]: 1500s,
[730, 416]: when
[486, 433]: an
[508, 433]: unknown
[577, 433]: printer
[626, 433]: took
[661, 433]: a
[674, 433]: galley
[721, 433]: of
[739, 433]: type
[486, 450]: and
[517, 450]: scrambled
[595, 450]: it
[608, 450]: to
[626, 450]: make
[669, 450]: a
[682, 450]: type
[717, 450]: specimen
[486, 466]: book.
[530, 466]: It
[543, 466]: has
[573, 466]: survived
[637, 466]: not
[664, 466]: only
[698, 466]: five
[486, 483]: centuries,
[560, 483]: but
[586, 483]: also
[620, 483]: the
[647, 483]: leap
[682, 483]: into
[712, 483]: electronic
[486, 500]: typesetting,
[572, 500]: remaining
[647, 500]: essentially
[486, 517]: unchanged.
[574, 517]: It
[588, 517]: was
[620, 517]: popularised
[708, 517]: in
[724, 517]: the
[486, 534]: 1960s
[534, 534]: with
[567, 534]: the
[594, 534]: release
[650, 534]: of
Text: rgb(0,0,0) normal normal 400 16 Arial
[486, 825]: Letraset
[548, 825]: sheets
[600, 825]: containing
[677, 825]: Lorem
[727, 825]: Ipsum
[486, 903]: passages,
Text: rgb(0,0,0) normal normal 400 16 Arial
[643, 903]: and
[674, 903]: more
[715, 903]: recently
[486, 920]: with
[519, 920]: desktop
[579, 920]: publishing
[656, 920]: software
[721, 920]: like
Text: rgb(0,0,0) normal normal 400 16 Arial
[624, 937]: including
[692, 937]: versions
[756, 937]: of
[486, 954]: Lorem
[536, 954]: Ipsum.
Clip: Path (BezierCurve(x0: 486, y0: 416, x1: 636, y1: 366, cx0: 486, cy0: 388, cx1: 553, cy1: 366) > BezierCurve(x0: 636, y0: 366, x1: 786, y1: 416, cx0: 719, cy0: 366, cx1: 786, cy1: 388) > BezierCurve(x0: 786, y0: 416, x1: 636, y1: 466, cx0: 786, cy0: 444, cx1: 719, cy1: 466) > BezierCurve(x0: 636, y0: 466, x1: 486, y1: 416, cx0: 553, cy0: 466, cx1: 486, cy1: 444))
Clip: Path (Vector(x: 486, y: 551) > Vector(x: 786, y: 551) > Vector(x: 786, y: 766) > Vector(x: 486, y: 766))
Fill: rgb(0,128,0)
Shape: rgb(0,0,0) Path (Vector(x: 486, y: 551) > Vector(x: 786, y: 551) > Vector(x: 786, y: 561) > Vector(x: 486, y: 561))
Shape: rgb(0,0,0) Path (Vector(x: 786, y: 551) > Vector(x: 786, y: 766) > Vector(x: 786, y: 761) > Vector(x: 786, y: 561))
Shape: rgb(0,0,0) Path (Vector(x: 786, y: 766) > Vector(x: 486, y: 766) > Vector(x: 486, y: 761) > Vector(x: 786, y: 761))
Shape: rgb(0,0,0) Path (Vector(x: 486, y: 766) > Vector(x: 486, y: 551) > Vector(x: 486, y: 561) > Vector(x: 486, y: 761))
Clip: Path (BezierCurve(x0: 486, y0: 416, x1: 636, y1: 366, cx0: 486, cy0: 388, cx1: 553, cy1: 366) > BezierCurve(x0: 636, y0: 366, x1: 786, y1: 416, cx0: 719, cy0: 366, cx1: 786, cy1: 388) > BezierCurve(x0: 786, y0: 416, x1: 636, y1: 466, cx0: 786, cy0: 444, cx1: 719, cy1: 466) > BezierCurve(x0: 636, y0: 466, x1: 486, y1: 416, cx0: 553, cy0: 466, cx1: 486, cy1: 444))
Text: rgb(0,0,0) normal normal 400 16 Arial
[486, 560]: a
Clip: Path (BezierCurve(x0: 486, y0: 416, x1: 636, y1: 366, cx0: 486, cy0: 388, cx1: 553, cy1: 366) > BezierCurve(x0: 636, y0: 366, x1: 786, y1: 416, cx0: 719, cy0: 366, cx1: 786, cy1: 388) > BezierCurve(x0: 786, y0: 416, x1: 636, y1: 466, cx0: 786, cy0: 444, cx1: 719, cy1: 466) > BezierCurve(x0: 636, y0: 466, x1: 486, y1: 416, cx0: 553, cy0: 466, cx1: 486, cy1: 444))
Clip: Path (Vector(x: 563, y: 843) > Vector(x: 638, y: 843) > Vector(x: 638, y: 918) > Vector(x: 563, y: 918))
Draw image: Image ("/tests/assets/image.jpg") (source: [0, 0, 75, 75]) (destination: [0, 0, 75, 75])
Clip: Path (BezierCurve(x0: 486, y0: 416, x1: 636, y1: 366, cx0: 486, cy0: 388, cx1: 553, cy1: 366) > BezierCurve(x0: 636, y0: 366, x1: 786, y1: 416, cx0: 719, cy0: 366, cx1: 786, cy1: 388) > BezierCurve(x0: 786, y0: 416, x1: 636, y1: 466, cx0: 786, cy0: 444, cx1: 719, cy1: 466) > BezierCurve(x0: 636, y0: 466, x1: 486, y1: 416, cx0: 553, cy0: 466, cx1: 486, cy1: 444))
Text: rgb(0,0,0) normal normal 700 16 Arial
[486, 937]: Aldus
[535, 937]: PageMaker
Text: rgb(0,0,0) normal normal 700 16 Arial
[107, 272]: Aldus
[156, 272]: PageMaker
Clip: Path (Vector(x: 14, y: 366) > Vector(x: 314, y: 366) > Vector(x: 314, y: 566) > Vector(x: 14, y: 566))
Clip: Path (Vector(x: 91, y: 843) > Vector(x: 166, y: 843) > Vector(x: 166, y: 918) > Vector(x: 91, y: 918))
Draw image: Image ("/tests/assets/image.jpg") (source: [0, 0, 75, 75]) (destination: [0, 0, 75, 75])
Clip: Path (Vector(x: 14, y: 366) > Vector(x: 314, y: 366) > Vector(x: 314, y: 566) > Vector(x: 14, y: 566))
Text: rgb(0,0,0) normal normal 700 16 Arial
[14, 937]: Aldus
[63, 937]: PageMaker
Clip: Path (BezierCurve(x0: 486, y0: 416, x1: 636, y1: 366, cx0: 486, cy0: 388, cx1: 553, cy1: 366) > BezierCurve(x0: 636, y0: 366, x1: 786, y1: 416, cx0: 719, cy0: 366, cx1: 786, cy1: 388) > BezierCurve(x0: 786, y0: 416, x1: 636, y1: 466, cx0: 786, cy0: 444, cx1: 719, cy1: 466) > BezierCurve(x0: 636, y0: 466, x1: 486, y1: 416, cx0: 553, cy0: 466, cx1: 486, cy1: 444))
Clip: Path (Vector(x: 486, y: 971) > Vector(x: 798, y: 971) > Vector(x: 798, y: 1183) > Vector(x: 486, y: 1183))
Fill: rgb(204,204,204)
Shape: rgb(0,0,0) Path (Vector(x: 486, y: 971) > Vector(x: 798, y: 971) > Vector(x: 792, y: 977) > Vector(x: 492, y: 977))
Shape: rgb(0,0,0) Path (Vector(x: 798, y: 971) > Vector(x: 798, y: 1183) > Vector(x: 792, y: 1177) > Vector(x: 792, y: 977))
Shape: rgb(0,0,0) Path (Vector(x: 798, y: 1183) > Vector(x: 486, y: 1183) > Vector(x: 492, y: 1177) > Vector(x: 792, y: 1177))
Shape: rgb(0,0,0) Path (Vector(x: 486, y: 1183) > Vector(x: 486, y: 971) > Vector(x: 492, y: 977) > Vector(x: 492, y: 1177))
Clip: Path (BezierCurve(x0: 486, y0: 416, x1: 636, y1: 366, cx0: 486, cy0: 388, cx1: 553, cy1: 366) > BezierCurve(x0: 636, y0: 366, x1: 786, y1: 416, cx0: 719, cy0: 366, cx1: 786, cy1: 388) > BezierCurve(x0: 786, y0: 416, x1: 636, y1: 466, cx0: 786, cy0: 444, cx1: 719, cy1: 466) > BezierCurve(x0: 636, y0: 466, x1: 486, y1: 416, cx0: 553, cy0: 466, cx1: 486, cy1: 444))
Text: rgb(0,0,0) normal normal 400 16 Arial
[492, 1027]: Lorem
[542, 1027]: Ipsum
[590, 1027]: is
[606, 1027]: simply
[656, 1027]: dummy
[712, 1027]: text
[743, 1027]: of
[760, 1027]: the
[492, 1044]: printing
[549, 1044]: and
[580, 1044]: typesetting
[662, 1044]: industry.
[726, 1044]: Lorem
[492, 1061]: Ipsum
[540, 1061]: has
[570, 1061]: been
[610, 1061]: the
[637, 1061]: industry's
[708, 1061]: standard
[492, 1077]: dummy
[549, 1077]: text
[579, 1077]: ever
[615, 1077]: since
[656, 1077]: the
[683, 1077]: 1500s,
[736, 1077]: when
[492, 1094]: an
[514, 1094]: unknown
[583, 1094]: printer
[632, 1094]: took
[667, 1094]: a
[680, 1094]: galley
[727, 1094]: of
[745, 1094]: type
[492, 1111]: and
[523, 1111]: scrambled
[601, 1111]: it
[614, 1111]: to
[632, 1111]: make
[675, 1111]: a
[688, 1111]: type
[723, 1111]: specimen
[492, 1128]: book.
[536, 1128]: It
[549, 1128]: has
[579, 1128]: survived
[643, 1128]: not
[670, 1128]: only
[704, 1128]: five
[492, 1145]: centuries,
[566, 1145]: but
[592, 1145]: also
[626, 1145]: the
[653, 1145]: leap
[688, 1145]: into
[718, 1145]: electronic
[492, 1161]: typesetting,
[578, 1161]: remaining
[653, 1161]: essentially
[492, 1178]: unchanged.
[580, 1178]: It
[594, 1178]: was
[626, 1178]: popularised
[714, 1178]: in
[730, 1178]: the
[492, 1195]: 1960s
[540, 1195]: with
[573, 1195]: the
[600, 1195]: release
[656, 1195]: of
[674, 1195]: Letraset
[736, 1195]: sheets
[492, 1212]: containing
[569, 1212]: Lorem
[619, 1212]: Ipsum
[667, 1212]: passages,
[744, 1212]: and
[492, 1229]: more
[533, 1229]: recently
[593, 1229]: with
[626, 1229]: desktop
[687, 1229]: publishing
[492, 1245]: software
[557, 1245]: like
Text: rgb(0,0,0) normal normal 400 16 Arial
[723, 1245]: including
[492, 1262]: versions
[556, 1262]: of
[574, 1262]: Lorem
[624, 1262]: Ipsum.
Clip: Path (BezierCurve(x0: 486, y0: 416, x1: 636, y1: 366, cx0: 486, cy0: 388, cx1: 553, cy1: 366) > BezierCurve(x0: 636, y0: 366, x1: 786, y1: 416, cx0: 719, cy0: 366, cx1: 786, cy1: 388) > BezierCurve(x0: 786, y0: 416, x1: 636, y1: 466, cx0: 786, cy0: 444, cx1: 719, cy1: 466) > BezierCurve(x0: 636, y0: 466, x1: 486, y1: 416, cx0: 553, cy0: 466, cx1: 486, cy1: 444))
Text: rgb(0,0,0) normal normal 400 16 Arial solid rgb(0,0,0) underline
[492, 977]: position:relative
[603, 977]:
[608, 977]: within
[648, 977]:
[653, 977]: a
[662, 977]:
[666, 977]: overflow:hidden
[778, 976]:
[492, 993]: element
Clip: Path (BezierCurve(x0: 486, y0: 416, x1: 636, y1: 366, cx0: 486, cy0: 388, cx1: 553, cy1: 366) > BezierCurve(x0: 636, y0: 366, x1: 786, y1: 416, cx0: 719, cy0: 366, cx1: 786, cy1: 388) > BezierCurve(x0: 786, y0: 416, x1: 636, y1: 466, cx0: 786, cy0: 444, cx1: 719, cy1: 466) > BezierCurve(x0: 636, y0: 466, x1: 486, y1: 416, cx0: 553, cy0: 466, cx1: 486, cy1: 444))
Text: rgb(0,0,0) normal normal 700 16 Arial
[585, 1245]: Aldus
[634, 1245]: PageMaker
Clip: Path (Vector(x: 14, y: 366) > Vector(x: 314, y: 366) > Vector(x: 314, y: 566) > Vector(x: 14, y: 566))
Clip: Path (Vector(x: 14, y: 971) > Vector(x: 326, y: 971) > Vector(x: 326, y: 1183) > Vector(x: 14, y: 1183))
Fill: rgb(204,204,204)
Shape: rgb(0,0,0) Path (Vector(x: 14, y: 971) > Vector(x: 326, y: 971) > Vector(x: 320, y: 977) > Vector(x: 20, y: 977))
Shape: rgb(0,0,0) Path (Vector(x: 326, y: 971) > Vector(x: 326, y: 1183) > Vector(x: 320, y: 1177) > Vector(x: 320, y: 977))
Shape: rgb(0,0,0) Path (Vector(x: 326, y: 1183) > Vector(x: 14, y: 1183) > Vector(x: 20, y: 1177) > Vector(x: 320, y: 1177))
Shape: rgb(0,0,0) Path (Vector(x: 14, y: 1183) > Vector(x: 14, y: 971) > Vector(x: 20, y: 977) > Vector(x: 20, y: 1177))
Clip: Path (Vector(x: 14, y: 366) > Vector(x: 314, y: 366) > Vector(x: 314, y: 566) > Vector(x: 14, y: 566))
Text: rgb(0,0,0) normal normal 400 16 Arial
[20, 1027]: Lorem
[70, 1027]: Ipsum
[118, 1027]: is
[134, 1027]: simply
[184, 1027]: dummy
[240, 1027]: text
[271, 1027]: of
[288, 1027]: the
[20, 1044]: printing
[77, 1044]: and
[108, 1044]: typesetting
[190, 1044]: industry.
[254, 1044]: Lorem
[20, 1061]: Ipsum
[68, 1061]: has
[98, 1061]: been
[138, 1061]: the
[165, 1061]: industry's
[236, 1061]: standard
[20, 1077]: dummy
[77, 1077]: text
[107, 1077]: ever
[143, 1077]: since
[184, 1077]: the
[211, 1077]: 1500s,
[264, 1077]: when
[20, 1094]: an
[42, 1094]: unknown
[111, 1094]: printer
[160, 1094]: took
[195, 1094]: a
[208, 1094]: galley
[255, 1094]: of
[273, 1094]: type
[20, 1111]: and
[51, 1111]: scrambled
[129, 1111]: it
[142, 1111]: to
[160, 1111]: make
[203, 1111]: a
[216, 1111]: type
[251, 1111]: specimen
[20, 1128]: book.
[64, 1128]: It
[77, 1128]: has
[107, 1128]: survived
[171, 1128]: not
[198, 1128]: only
[232, 1128]: five
[20, 1145]: centuries,
[94, 1145]: but
[120, 1145]: also
[154, 1145]: the
[181, 1145]: leap
[216, 1145]: into
[246, 1145]: electronic
[20, 1161]: typesetting,
[106, 1161]: remaining
[181, 1161]: essentially
[20, 1178]: unchanged.
[108, 1178]: It
[122, 1178]: was
[154, 1178]: popularised
[242, 1178]: in
[258, 1178]: the
[20, 1195]: 1960s
[68, 1195]: with
[101, 1195]: the
[128, 1195]: release
[184, 1195]: of
[202, 1195]: Letraset
[264, 1195]: sheets
[20, 1212]: containing
[97, 1212]: Lorem
[147, 1212]: Ipsum
[195, 1212]: passages,
[272, 1212]: and
[20, 1229]: more
[61, 1229]: recently
[121, 1229]: with
[154, 1229]: desktop
[215, 1229]: publishing
[20, 1245]: software
[85, 1245]: like
Text: rgb(0,0,0) normal normal 400 16 Arial
[251, 1245]: including
[20, 1262]: versions
[84, 1262]: of
[102, 1262]: Lorem
[152, 1262]: Ipsum.
Clip: Path (Vector(x: 14, y: 366) > Vector(x: 314, y: 366) > Vector(x: 314, y: 566) > Vector(x: 14, y: 566))
Text: rgb(0,0,0) normal normal 400 16 Arial solid rgb(0,0,0) underline
[20, 977]: position:relative
[131, 977]:
[136, 977]: within
[176, 977]:
[181, 977]: a
[190, 977]:
[194, 977]: overflow:hidden
[306, 976]:
[20, 993]: element
Clip: Path (Vector(x: 14, y: 366) > Vector(x: 314, y: 366) > Vector(x: 314, y: 566) > Vector(x: 14, y: 566))
Text: rgb(0,0,0) normal normal 700 16 Arial
[113, 1245]: Aldus
[162, 1245]: PageMaker

View File

@ -0,0 +1,104 @@
<!doctype html>
<html>
<head>
<script type="text/javascript" src="../test.js"></script>
<style>
body {
quotes: "<{" "}>" "->" "<-" "(" ")" "-:" ":-";
}
.counter1,
.counter2,
.quotes1,
.attr-url {
border: 1px solid deepskyblue;
padding: 5px;
margin-bottom: 10px;
}
.counter1 {
counter-reset: c1 3;
}
.counter1 > div::before {
content: "«\"" counter(c1) "\»";
counter-increment: c1 -1;
}
.counter2 {
counter-reset: c2;
}
.counter2 > div::before {
content: "["counters(c2, " < ", upper-roman) ']';
counter-increment: c2 2;
}
.quotes1::before {
content: open-quote "!" open-quote close-quote open-quote;
}
.quotes1::after {
content: "!" close-quote close-quote;
}
.quotes2 {
quotes: "«" "»" "“" "”";
}
.quotes2::before {
content: open-quote;
}
.quotes2::after {
content: close-quote;
}
.attr-url > div::after {
content: url(../assets/image.jpg) "///" attr(data-text);
}
</style>
</head>
<body>
<div class="counter1">
<div>A</div>
<div>B</div>
<div>C</div>
<div>D</div>
</div>
<div class="counter2">
<div>A</div>
<div>B</div>
<div>
C
<div class="counter2">
<div>a</div>
<div>b</div>
<div>
c
<div class="counter2">
<div>Aa</div>
<div>Bb</div>
<div>Cc</div>
</div>
</div>
</div>
</div>
<div>D</div>
</div>
<div class="quotes1">
Hello
<div class="quotes2">
Quoted
<div class="quotes2">World</div>
</div>
</div>
<div class="attr-url">
<div data-text="Hello World"></div>
</div>
</body>
</html>

View File

@ -1,73 +0,0 @@
Window: [800, 600]
Rectangle: [0, 0, 800, 600] rgba(0,0,0,0)
Opacity: 1
Text: rgb(0,0,0) normal normal 400 16 Arial
[90, 8]: Content
[150, 8]: 1
Text: rgb(0,0,0) normal normal 400 16 Arial
[8, 8]: root
[40, 8]: before!
Text: rgb(0,0,0) normal normal 400 16 Arial
[164, 8]: after!
Text: rgb(0,0,0) normal normal 400 16 Arial
[286, 8]: Content
[347, 8]: 2
Text: rgb(0,0,0) normal normal 400 16 Arial
[204, 8]: root
[236, 8]: before!
Text: rgb(0,0,0) normal normal 400 16 Arial
[360, 8]: after!
Text: rgb(0,0,0) normal normal 400 16 Arial
[8, 26]: Content
[68, 26]: 1
Text: rgb(0,0,0) normal normal 400 16 Arial
[82, 26]: Content
[142, 26]: 2
Text: rgb(0,0,0) normal normal 400 16 Arial
[90, 105]: Content
[150, 105]: 1
Text: rgb(0,0,0) normal normal 400 16 Arial
[8, 105]: root
[40, 105]: before!
Clip: Path (Vector(x: 159, y: 44) > Vector(x: 234, y: 44) > Vector(x: 234, y: 119) > Vector(x: 159, y: 119))
Draw image: Image ("/tests/assets/image2.jpg") (source: [0, 0, 75, 75]) (destination: [0, 0, 75, 75])
Text: rgb(0,0,0) normal normal 400 16 Arial
[320, 105]: Content
[381, 105]: 2
Text: rgb(0,0,0) normal normal 400 16 Arial
[239, 105]: root
[271, 105]: before!
Clip: Path (Vector(x: 390, y: 44) > Vector(x: 465, y: 44) > Vector(x: 465, y: 119) > Vector(x: 390, y: 119))
Draw image: Image ("/tests/assets/image2.jpg") (source: [0, 0, 75, 75]) (destination: [0, 0, 75, 75])
Text: rgb(0,0,0) normal normal 400 16 Arial
[100, 123]: Content
[160, 123]: 1
Clip: Path (Vector(x: 8, y: 118) > Vector(x: 100, y: 118) > Vector(x: 100, y: 145) > Vector(x: 8, y: 145))
Repeat: Image ("/tests/assets/image_1.jpg") [13, 123] Size (75, 75) Path (Vector(x: 8, y: 118) > Vector(x: 100, y: 118) > Vector(x: 100, y: 145) > Vector(x: 8, y: 145))
Shape: rgb(255,0,0) Path (Vector(x: 8, y: 118) > Vector(x: 100, y: 118) > Vector(x: 95, y: 123) > Vector(x: 13, y: 123))
Shape: rgb(255,0,0) Path (Vector(x: 100, y: 118) > Vector(x: 100, y: 145) > Vector(x: 95, y: 140) > Vector(x: 95, y: 123))
Shape: rgb(255,0,0) Path (Vector(x: 100, y: 145) > Vector(x: 8, y: 145) > Vector(x: 13, y: 140) > Vector(x: 95, y: 140))
Shape: rgb(255,0,0) Path (Vector(x: 8, y: 145) > Vector(x: 8, y: 118) > Vector(x: 13, y: 123) > Vector(x: 13, y: 140))
Text: rgb(0,0,0) normal normal 400 16 Arial
[13, 123]: root
[45, 123]: before!
Clip: Path (Vector(x: 169, y: 123) > Vector(x: 210, y: 123) > Vector(x: 210, y: 140) > Vector(x: 169, y: 140))
Repeat: Image ("/tests/assets/image2_1.jpg") [169, 123] Size (75, 75) Path (Vector(x: 169, y: 123) > Vector(x: 210, y: 123) > Vector(x: 210, y: 140) > Vector(x: 169, y: 140))
Text: rgb(0,0,0) normal normal 400 16 Arial
[174, 123]: after!
Text: rgb(0,0,0) normal normal 400 16 Arial
[306, 123]: Content
[367, 123]: 2
Clip: Path (Vector(x: 215, y: 118) > Vector(x: 306, y: 118) > Vector(x: 306, y: 145) > Vector(x: 215, y: 145))
Repeat: Image ("/tests/assets/image_1.jpg") [220, 123] Size (75, 75) Path (Vector(x: 215, y: 118) > Vector(x: 306, y: 118) > Vector(x: 306, y: 145) > Vector(x: 215, y: 145))
Shape: rgb(255,0,0) Path (Vector(x: 215, y: 118) > Vector(x: 306, y: 118) > Vector(x: 301, y: 123) > Vector(x: 220, y: 123))
Shape: rgb(255,0,0) Path (Vector(x: 306, y: 118) > Vector(x: 306, y: 145) > Vector(x: 301, y: 140) > Vector(x: 301, y: 123))
Shape: rgb(255,0,0) Path (Vector(x: 306, y: 145) > Vector(x: 215, y: 145) > Vector(x: 220, y: 140) > Vector(x: 301, y: 140))
Shape: rgb(255,0,0) Path (Vector(x: 215, y: 145) > Vector(x: 215, y: 118) > Vector(x: 220, y: 123) > Vector(x: 220, y: 140))
Text: rgb(0,0,0) normal normal 400 16 Arial
[220, 123]: root
[252, 123]: before!
Clip: Path (Vector(x: 376, y: 123) > Vector(x: 417, y: 123) > Vector(x: 417, y: 140) > Vector(x: 376, y: 140))
Repeat: Image ("/tests/assets/image2_1.jpg") [376, 123] Size (75, 75) Path (Vector(x: 376, y: 123) > Vector(x: 417, y: 123) > Vector(x: 417, y: 140) > Vector(x: 376, y: 140))
Text: rgb(0,0,0) normal normal 400 16 Arial
[380, 123]: after!

View File

@ -1,32 +0,0 @@
Window: [800, 600]
Rectangle: [0, 0, 800, 600] rgba(0,0,0,0)
Opacity: 1
Text: rgb(0,0,0) normal normal 400 16 Arial
[8, 8]: Some
[54, 8]: inline
[96, 8]: text
Text: rgb(0,0,0) normal normal 400 16 Arial
[297, 8]: followed
[360, 8]: by
[382, 8]: more
[422, 8]: inline
[464, 8]: text.
Text: rgb(0,0,0) normal normal 400 16 Arial
[8, 76]: Then
[49, 76]: more
[90, 76]: inline
[132, 76]: text.
Clip: Path (Vector(x: 8, y: 42) > Vector(x: 792, y: 42) > Vector(x: 792, y: 60) > Vector(x: 8, y: 60))
Fill: rgb(0,128,0)
Text: rgb(0,0,0) normal normal 400 16 Arial
[8, 42]: Then
[49, 42]: a
[62, 42]: block
[104, 42]: level
[142, 42]: element.
Text: rgb(0,0,255) normal normal 400 16 Arial
[126, 8]: followed
[190, 8]: by
[211, 8]: text
[241, 8]: in
[258, 8]: span

File diff suppressed because it is too large Load Diff

View File

@ -1,83 +0,0 @@
Window: [800, 600]
Rectangle: [0, 0, 800, 600] rgba(0,0,0,0)
Opacity: 1
Text: rgb(0,0,0) normal normal 400 16 Arial
[8, 61]: Fontawesome
[113, 61]: icons
Text: rgb(0,0,0) normal normal 400 16 Arial
[239, 61]: fa
[252, 61]: -
[258, 61]: 5x
Text: rgb(0,0,0) normal normal 400 16 Arial
[55, 203]: fa
[68, 203]: -
[74, 203]: twitter
[121, 203]: on
[143, 203]: fa
[156, 203]: -
[162, 203]: square
[211, 203]: -
[216, 203]: o
Text: rgb(0,0,0) normal normal 400 16 Arial
[55, 246]: fa
[68, 246]: -
[74, 246]: flag
[104, 246]: on
[126, 246]: fa
[140, 246]: -
[145, 246]: circle
Text: rgb(0,0,0) normal normal 400 16 Arial
[55, 289]: fa
[68, 289]: -
[74, 289]: terminal
[135, 289]: on
[157, 289]: fa
[171, 289]: -
[176, 289]: square
Text: rgb(0,0,0) normal normal 400 16 Arial
[55, 332]: fa
[68, 332]: -
[74, 332]: ban
[105, 332]: on
[127, 332]: fa
[140, 332]: -
[146, 332]: camera
Text: rgb(0,0,0) normal normal 400 80 FontAwesome
[155, 7]: 
Text: rgb(0,0,0) normal normal 400 16 Arial
[42, 104]: List
[71, 104]: icons
Text: rgb(0,0,0) normal normal 400 16 FontAwesome
[18, 106]: 
Text: rgb(0,0,0) normal normal 400 16 Arial
[42, 122]: can
[73, 122]: be
[95, 122]: used
Text: rgb(0,0,0) normal normal 400 16 FontAwesome
[18, 124]: 
Text: rgb(0,0,0) normal normal 400 16 Arial
[42, 140]: as
[63, 140]: bullets
Text: rgb(0,0,0) normal normal 400 16 FontAwesome
[18, 142]: 
Text: rgb(0,0,0) normal normal 400 16 Arial
[42, 158]: in
[59, 158]: lists
Text: rgb(0,0,0) normal normal 400 16 FontAwesome
[18, 160]: 
Text: rgb(0,0,0) normal normal 400 42 FontAwesome
[13, 192]: 
Text: rgb(0,0,0) normal normal 400 21 FontAwesome
[19, 202]: 
Text: rgb(0,0,0) normal normal 400 42 FontAwesome
[11, 234]: 
Text: rgb(255,255,255) normal normal 400 21 FontAwesome
[19, 245]: 
Text: rgb(0,0,0) normal normal 400 42 FontAwesome
[11, 277]: 
Text: rgb(255,255,255) normal normal 400 21 FontAwesome
[19, 288]: 
Text: rgb(0,0,0) normal normal 400 21 FontAwesome
[18, 330]: 
Text: rgb(0,0,0) normal normal 400 42 FontAwesome
[11, 320]: 

View File

@ -1,355 +0,0 @@
Window: [800, 2528]
Rectangle: [0, 0, 800, 2528] rgba(0,0,0,0)
Opacity: 1
Shape: rgb(0,0,0) Path (Vector(x: 8, y: 8) > Vector(x: 792, y: 8) > Vector(x: 791, y: 9) > Vector(x: 9, y: 9))
Shape: rgb(0,0,0) Path (Vector(x: 792, y: 8) > Vector(x: 792, y: 28) > Vector(x: 791, y: 27) > Vector(x: 791, y: 9))
Shape: rgb(0,0,0) Path (Vector(x: 792, y: 28) > Vector(x: 8, y: 28) > Vector(x: 9, y: 27) > Vector(x: 791, y: 27))
Shape: rgb(0,0,0) Path (Vector(x: 8, y: 28) > Vector(x: 8, y: 8) > Vector(x: 9, y: 9) > Vector(x: 9, y: 27))
Text: rgb(0,0,0) normal normal 400 16 arial solid rgb(0,0,0) line-through
[9, 9]: Testing
[60, 9]:
[64, 9]: texts
Shape: rgb(0,0,0) Path (Vector(x: 8, y: 29) > Vector(x: 792, y: 29) > Vector(x: 791, y: 30) > Vector(x: 9, y: 30))
Shape: rgb(0,0,0) Path (Vector(x: 792, y: 29) > Vector(x: 792, y: 57) > Vector(x: 791, y: 56) > Vector(x: 791, y: 30))
Shape: rgb(0,0,0) Path (Vector(x: 792, y: 57) > Vector(x: 8, y: 57) > Vector(x: 9, y: 56) > Vector(x: 791, y: 56))
Shape: rgb(0,0,0) Path (Vector(x: 8, y: 57) > Vector(x: 8, y: 29) > Vector(x: 9, y: 30) > Vector(x: 9, y: 56))
Text: rgb(0,0,0) normal normal 400 22 arial solid rgb(0,0,0) line-through
[9, 31]: Testing
[79, 31]:
[85, 31]: texts
Shape: rgb(0,0,0) Path (Vector(x: 8, y: 58) > Vector(x: 792, y: 58) > Vector(x: 791, y: 59) > Vector(x: 9, y: 59))
Shape: rgb(0,0,0) Path (Vector(x: 792, y: 58) > Vector(x: 792, y: 92) > Vector(x: 791, y: 91) > Vector(x: 791, y: 59))
Shape: rgb(0,0,0) Path (Vector(x: 792, y: 92) > Vector(x: 8, y: 92) > Vector(x: 9, y: 91) > Vector(x: 791, y: 91))
Shape: rgb(0,0,0) Path (Vector(x: 8, y: 92) > Vector(x: 8, y: 58) > Vector(x: 9, y: 59) > Vector(x: 9, y: 91))
Text: rgb(0,0,0) normal normal 400 28 arial solid rgb(0,0,0) line-through
[9, 59]: Testing
[98, 59]:
[106, 59]: texts
Shape: rgb(0,0,0) Path (Vector(x: 8, y: 93) > Vector(x: 792, y: 93) > Vector(x: 791, y: 94) > Vector(x: 9, y: 94))
Shape: rgb(0,0,0) Path (Vector(x: 792, y: 93) > Vector(x: 792, y: 134) > Vector(x: 791, y: 133) > Vector(x: 791, y: 94))
Shape: rgb(0,0,0) Path (Vector(x: 792, y: 134) > Vector(x: 8, y: 134) > Vector(x: 9, y: 133) > Vector(x: 791, y: 133))
Shape: rgb(0,0,0) Path (Vector(x: 8, y: 134) > Vector(x: 8, y: 93) > Vector(x: 9, y: 94) > Vector(x: 9, y: 133))
Text: rgb(0,0,0) normal normal 400 34 arial solid rgb(0,0,0) line-through
[9, 94]: Testing
[117, 94]:
[126, 94]: texts
Shape: rgb(0,0,0) Path (Vector(x: 8, y: 135) > Vector(x: 792, y: 135) > Vector(x: 791, y: 136) > Vector(x: 9, y: 136))
Shape: rgb(0,0,0) Path (Vector(x: 792, y: 135) > Vector(x: 792, y: 183) > Vector(x: 791, y: 182) > Vector(x: 791, y: 136))
Shape: rgb(0,0,0) Path (Vector(x: 792, y: 183) > Vector(x: 8, y: 183) > Vector(x: 9, y: 182) > Vector(x: 791, y: 182))
Shape: rgb(0,0,0) Path (Vector(x: 8, y: 183) > Vector(x: 8, y: 135) > Vector(x: 9, y: 136) > Vector(x: 9, y: 182))
Text: rgb(0,0,0) normal normal 400 40 arial solid rgb(0,0,0) line-through
[9, 136]: Testing
[136, 136]:
[147, 136]: texts
Shape: rgb(0,0,0) Path (Vector(x: 8, y: 184) > Vector(x: 792, y: 184) > Vector(x: 791, y: 185) > Vector(x: 9, y: 185))
Shape: rgb(0,0,0) Path (Vector(x: 792, y: 184) > Vector(x: 792, y: 239) > Vector(x: 791, y: 238) > Vector(x: 791, y: 185))
Shape: rgb(0,0,0) Path (Vector(x: 792, y: 239) > Vector(x: 8, y: 239) > Vector(x: 9, y: 238) > Vector(x: 791, y: 238))
Shape: rgb(0,0,0) Path (Vector(x: 8, y: 239) > Vector(x: 8, y: 184) > Vector(x: 9, y: 185) > Vector(x: 9, y: 238))
Text: rgb(0,0,0) normal normal 400 46 arial solid rgb(0,0,0) line-through
[9, 186]: Testing
[155, 186]:
[168, 186]: texts
Shape: rgb(0,0,0) Path (Vector(x: 8, y: 240) > Vector(x: 792, y: 240) > Vector(x: 791, y: 241) > Vector(x: 9, y: 241))
Shape: rgb(0,0,0) Path (Vector(x: 792, y: 240) > Vector(x: 792, y: 302) > Vector(x: 791, y: 301) > Vector(x: 791, y: 241))
Shape: rgb(0,0,0) Path (Vector(x: 792, y: 302) > Vector(x: 8, y: 302) > Vector(x: 9, y: 301) > Vector(x: 791, y: 301))
Shape: rgb(0,0,0) Path (Vector(x: 8, y: 302) > Vector(x: 8, y: 240) > Vector(x: 9, y: 241) > Vector(x: 9, y: 301))
Text: rgb(0,0,0) normal normal 400 52 arial solid rgb(0,0,0) line-through
[9, 242]: Testing
[174, 242]:
[188, 242]: texts
Shape: rgb(0,0,0) Path (Vector(x: 8, y: 303) > Vector(x: 792, y: 303) > Vector(x: 791, y: 304) > Vector(x: 9, y: 304))
Shape: rgb(0,0,0) Path (Vector(x: 792, y: 303) > Vector(x: 792, y: 371) > Vector(x: 791, y: 370) > Vector(x: 791, y: 304))
Shape: rgb(0,0,0) Path (Vector(x: 792, y: 371) > Vector(x: 8, y: 371) > Vector(x: 9, y: 370) > Vector(x: 791, y: 370))
Shape: rgb(0,0,0) Path (Vector(x: 8, y: 371) > Vector(x: 8, y: 303) > Vector(x: 9, y: 304) > Vector(x: 9, y: 370))
Text: rgb(0,0,0) normal normal 400 58 arial solid rgb(0,0,0) line-through
[9, 305]: Testing
[193, 305]:
[209, 305]: texts
Shape: rgb(0,0,0) Path (Vector(x: 8, y: 372) > Vector(x: 792, y: 372) > Vector(x: 791, y: 373) > Vector(x: 9, y: 373))
Shape: rgb(0,0,0) Path (Vector(x: 792, y: 372) > Vector(x: 792, y: 448) > Vector(x: 791, y: 447) > Vector(x: 791, y: 373))
Shape: rgb(0,0,0) Path (Vector(x: 792, y: 448) > Vector(x: 8, y: 448) > Vector(x: 9, y: 447) > Vector(x: 791, y: 447))
Shape: rgb(0,0,0) Path (Vector(x: 8, y: 448) > Vector(x: 8, y: 372) > Vector(x: 9, y: 373) > Vector(x: 9, y: 447))
Text: rgb(0,0,0) normal normal 400 64 arial solid rgb(0,0,0) line-through
[9, 374]: Testing
[212, 374]:
[230, 374]: texts
Shape: rgb(0,0,0) Path (Vector(x: 8, y: 449) > Vector(x: 792, y: 449) > Vector(x: 791, y: 450) > Vector(x: 9, y: 450))
Shape: rgb(0,0,0) Path (Vector(x: 792, y: 449) > Vector(x: 792, y: 531) > Vector(x: 791, y: 530) > Vector(x: 791, y: 450))
Shape: rgb(0,0,0) Path (Vector(x: 792, y: 531) > Vector(x: 8, y: 531) > Vector(x: 9, y: 530) > Vector(x: 791, y: 530))
Shape: rgb(0,0,0) Path (Vector(x: 8, y: 531) > Vector(x: 8, y: 449) > Vector(x: 9, y: 450) > Vector(x: 9, y: 530))
Text: rgb(0,0,0) normal normal 400 70 arial solid rgb(0,0,0) line-through
[9, 451]: Testing
[231, 451]:
[250, 451]: texts
Shape: rgb(0,0,0) Path (Vector(x: 8, y: 532) > Vector(x: 792, y: 532) > Vector(x: 791, y: 533) > Vector(x: 9, y: 533))
Shape: rgb(0,0,0) Path (Vector(x: 792, y: 532) > Vector(x: 792, y: 622) > Vector(x: 791, y: 621) > Vector(x: 791, y: 533))
Shape: rgb(0,0,0) Path (Vector(x: 792, y: 622) > Vector(x: 8, y: 622) > Vector(x: 9, y: 621) > Vector(x: 791, y: 621))
Shape: rgb(0,0,0) Path (Vector(x: 8, y: 622) > Vector(x: 8, y: 532) > Vector(x: 9, y: 533) > Vector(x: 9, y: 621))
Text: rgb(0,0,0) normal normal 400 76 arial solid rgb(0,0,0) line-through
[9, 535]: Testing
[250, 535]:
[271, 535]: texts
Shape: rgb(0,0,0) Path (Vector(x: 8, y: 623) > Vector(x: 792, y: 623) > Vector(x: 791, y: 624) > Vector(x: 9, y: 624))
Shape: rgb(0,0,0) Path (Vector(x: 792, y: 623) > Vector(x: 792, y: 644) > Vector(x: 791, y: 643) > Vector(x: 791, y: 624))
Shape: rgb(0,0,0) Path (Vector(x: 792, y: 644) > Vector(x: 8, y: 644) > Vector(x: 9, y: 643) > Vector(x: 791, y: 643))
Shape: rgb(0,0,0) Path (Vector(x: 8, y: 644) > Vector(x: 8, y: 623) > Vector(x: 9, y: 624) > Vector(x: 9, y: 643))
Text: rgb(0,0,0) normal normal 400 16 verdana solid rgb(0,0,0) line-through
[9, 624]: Testing
[66, 624]:
[72, 624]: texts
Shape: rgb(0,0,0) Path (Vector(x: 8, y: 645) > Vector(x: 792, y: 645) > Vector(x: 791, y: 646) > Vector(x: 9, y: 646))
Shape: rgb(0,0,0) Path (Vector(x: 792, y: 645) > Vector(x: 792, y: 674) > Vector(x: 791, y: 673) > Vector(x: 791, y: 646))
Shape: rgb(0,0,0) Path (Vector(x: 792, y: 674) > Vector(x: 8, y: 674) > Vector(x: 9, y: 673) > Vector(x: 791, y: 673))
Shape: rgb(0,0,0) Path (Vector(x: 8, y: 674) > Vector(x: 8, y: 645) > Vector(x: 9, y: 646) > Vector(x: 9, y: 673))
Text: rgb(0,0,0) normal normal 400 22 verdana solid rgb(0,0,0) line-through
[9, 646]: Testing
[87, 646]:
[95, 646]: texts
Shape: rgb(0,0,0) Path (Vector(x: 8, y: 675) > Vector(x: 792, y: 675) > Vector(x: 791, y: 676) > Vector(x: 9, y: 676))
Shape: rgb(0,0,0) Path (Vector(x: 792, y: 675) > Vector(x: 792, y: 711) > Vector(x: 791, y: 710) > Vector(x: 791, y: 676))
Shape: rgb(0,0,0) Path (Vector(x: 792, y: 711) > Vector(x: 8, y: 711) > Vector(x: 9, y: 710) > Vector(x: 791, y: 710))
Shape: rgb(0,0,0) Path (Vector(x: 8, y: 711) > Vector(x: 8, y: 675) > Vector(x: 9, y: 676) > Vector(x: 9, y: 710))
Text: rgb(0,0,0) normal normal 400 28 verdana solid rgb(0,0,0) line-through
[9, 676]: Testing
[108, 676]:
[118, 676]: texts
Shape: rgb(0,0,0) Path (Vector(x: 8, y: 712) > Vector(x: 792, y: 712) > Vector(x: 791, y: 713) > Vector(x: 9, y: 713))
Shape: rgb(0,0,0) Path (Vector(x: 792, y: 712) > Vector(x: 792, y: 755) > Vector(x: 791, y: 754) > Vector(x: 791, y: 713))
Shape: rgb(0,0,0) Path (Vector(x: 792, y: 755) > Vector(x: 8, y: 755) > Vector(x: 9, y: 754) > Vector(x: 791, y: 754))
Shape: rgb(0,0,0) Path (Vector(x: 8, y: 755) > Vector(x: 8, y: 712) > Vector(x: 9, y: 713) > Vector(x: 9, y: 754))
Text: rgb(0,0,0) normal normal 400 34 verdana solid rgb(0,0,0) line-through
[9, 713]: Testing
[130, 713]:
[142, 713]: texts
Shape: rgb(0,0,0) Path (Vector(x: 8, y: 756) > Vector(x: 792, y: 756) > Vector(x: 791, y: 757) > Vector(x: 9, y: 757))
Shape: rgb(0,0,0) Path (Vector(x: 792, y: 756) > Vector(x: 792, y: 807) > Vector(x: 791, y: 806) > Vector(x: 791, y: 757))
Shape: rgb(0,0,0) Path (Vector(x: 792, y: 807) > Vector(x: 8, y: 807) > Vector(x: 9, y: 806) > Vector(x: 791, y: 806))
Shape: rgb(0,0,0) Path (Vector(x: 8, y: 807) > Vector(x: 8, y: 756) > Vector(x: 9, y: 757) > Vector(x: 9, y: 806))
Text: rgb(0,0,0) normal normal 400 40 verdana solid rgb(0,0,0) line-through
[9, 757]: Testing
[151, 757]:
[165, 757]: texts
Shape: rgb(0,0,0) Path (Vector(x: 8, y: 808) > Vector(x: 792, y: 808) > Vector(x: 791, y: 809) > Vector(x: 9, y: 809))
Shape: rgb(0,0,0) Path (Vector(x: 792, y: 808) > Vector(x: 792, y: 866) > Vector(x: 791, y: 865) > Vector(x: 791, y: 809))
Shape: rgb(0,0,0) Path (Vector(x: 792, y: 866) > Vector(x: 8, y: 866) > Vector(x: 9, y: 865) > Vector(x: 791, y: 865))
Shape: rgb(0,0,0) Path (Vector(x: 8, y: 866) > Vector(x: 8, y: 808) > Vector(x: 9, y: 809) > Vector(x: 9, y: 865))
Text: rgb(0,0,0) normal normal 400 46 verdana solid rgb(0,0,0) line-through
[9, 809]: Testing
[172, 809]:
[188, 809]: texts
Shape: rgb(0,0,0) Path (Vector(x: 8, y: 867) > Vector(x: 792, y: 867) > Vector(x: 791, y: 868) > Vector(x: 9, y: 868))
Shape: rgb(0,0,0) Path (Vector(x: 792, y: 867) > Vector(x: 792, y: 932) > Vector(x: 791, y: 931) > Vector(x: 791, y: 868))
Shape: rgb(0,0,0) Path (Vector(x: 792, y: 932) > Vector(x: 8, y: 932) > Vector(x: 9, y: 931) > Vector(x: 791, y: 931))
Shape: rgb(0,0,0) Path (Vector(x: 8, y: 932) > Vector(x: 8, y: 867) > Vector(x: 9, y: 868) > Vector(x: 9, y: 931))
Text: rgb(0,0,0) normal normal 400 52 verdana solid rgb(0,0,0) line-through
[9, 868]: Testing
[194, 868]:
[212, 868]: texts
Shape: rgb(0,0,0) Path (Vector(x: 8, y: 933) > Vector(x: 792, y: 933) > Vector(x: 791, y: 934) > Vector(x: 9, y: 934))
Shape: rgb(0,0,0) Path (Vector(x: 792, y: 933) > Vector(x: 792, y: 1005) > Vector(x: 791, y: 1004) > Vector(x: 791, y: 934))
Shape: rgb(0,0,0) Path (Vector(x: 792, y: 1005) > Vector(x: 8, y: 1005) > Vector(x: 9, y: 1004) > Vector(x: 791, y: 1004))
Shape: rgb(0,0,0) Path (Vector(x: 8, y: 1005) > Vector(x: 8, y: 933) > Vector(x: 9, y: 934) > Vector(x: 9, y: 1004))
Text: rgb(0,0,0) normal normal 400 58 verdana solid rgb(0,0,0) line-through
[9, 934]: Testing
[215, 934]:
[235, 934]: texts
Shape: rgb(0,0,0) Path (Vector(x: 8, y: 1006) > Vector(x: 792, y: 1006) > Vector(x: 791, y: 1007) > Vector(x: 9, y: 1007))
Shape: rgb(0,0,0) Path (Vector(x: 792, y: 1006) > Vector(x: 792, y: 1086) > Vector(x: 791, y: 1085) > Vector(x: 791, y: 1007))
Shape: rgb(0,0,0) Path (Vector(x: 792, y: 1086) > Vector(x: 8, y: 1086) > Vector(x: 9, y: 1085) > Vector(x: 791, y: 1085))
Shape: rgb(0,0,0) Path (Vector(x: 8, y: 1086) > Vector(x: 8, y: 1006) > Vector(x: 9, y: 1007) > Vector(x: 9, y: 1085))
Text: rgb(0,0,0) normal normal 400 64 verdana solid rgb(0,0,0) line-through
[9, 1007]: Testing
[236, 1007]:
[259, 1007]: texts
Shape: rgb(0,0,0) Path (Vector(x: 8, y: 1087) > Vector(x: 792, y: 1087) > Vector(x: 791, y: 1088) > Vector(x: 9, y: 1088))
Shape: rgb(0,0,0) Path (Vector(x: 792, y: 1087) > Vector(x: 792, y: 1174) > Vector(x: 791, y: 1173) > Vector(x: 791, y: 1088))
Shape: rgb(0,0,0) Path (Vector(x: 792, y: 1174) > Vector(x: 8, y: 1174) > Vector(x: 9, y: 1173) > Vector(x: 791, y: 1173))
Shape: rgb(0,0,0) Path (Vector(x: 8, y: 1174) > Vector(x: 8, y: 1087) > Vector(x: 9, y: 1088) > Vector(x: 9, y: 1173))
Text: rgb(0,0,0) normal normal 400 70 verdana solid rgb(0,0,0) line-through
[9, 1088]: Testing
[258, 1088]:
[282, 1088]: texts
Shape: rgb(0,0,0) Path (Vector(x: 8, y: 1175) > Vector(x: 792, y: 1175) > Vector(x: 791, y: 1176) > Vector(x: 9, y: 1176))
Shape: rgb(0,0,0) Path (Vector(x: 792, y: 1175) > Vector(x: 792, y: 1270) > Vector(x: 791, y: 1269) > Vector(x: 791, y: 1176))
Shape: rgb(0,0,0) Path (Vector(x: 792, y: 1270) > Vector(x: 8, y: 1270) > Vector(x: 9, y: 1269) > Vector(x: 791, y: 1269))
Shape: rgb(0,0,0) Path (Vector(x: 8, y: 1270) > Vector(x: 8, y: 1175) > Vector(x: 9, y: 1176) > Vector(x: 9, y: 1269))
Text: rgb(0,0,0) normal normal 400 76 verdana solid rgb(0,0,0) line-through
[9, 1177]: Testing
[279, 1177]:
[306, 1177]: texts
Shape: rgb(0,0,0) Path (Vector(x: 8, y: 1271) > Vector(x: 792, y: 1271) > Vector(x: 791, y: 1272) > Vector(x: 9, y: 1272))
Shape: rgb(0,0,0) Path (Vector(x: 792, y: 1271) > Vector(x: 792, y: 1292) > Vector(x: 791, y: 1291) > Vector(x: 791, y: 1272))
Shape: rgb(0,0,0) Path (Vector(x: 792, y: 1292) > Vector(x: 8, y: 1292) > Vector(x: 9, y: 1291) > Vector(x: 791, y: 1291))
Shape: rgb(0,0,0) Path (Vector(x: 8, y: 1292) > Vector(x: 8, y: 1271) > Vector(x: 9, y: 1272) > Vector(x: 9, y: 1291))
Text: rgb(0,0,0) normal normal 400 16 tahoma solid rgb(0,0,0) line-through
[9, 1272]: Testing
[61, 1272]:
[66, 1272]: texts
Shape: rgb(0,0,0) Path (Vector(x: 8, y: 1293) > Vector(x: 792, y: 1293) > Vector(x: 791, y: 1294) > Vector(x: 9, y: 1294))
Shape: rgb(0,0,0) Path (Vector(x: 792, y: 1293) > Vector(x: 792, y: 1321) > Vector(x: 791, y: 1320) > Vector(x: 791, y: 1294))
Shape: rgb(0,0,0) Path (Vector(x: 792, y: 1321) > Vector(x: 8, y: 1321) > Vector(x: 9, y: 1320) > Vector(x: 791, y: 1320))
Shape: rgb(0,0,0) Path (Vector(x: 8, y: 1321) > Vector(x: 8, y: 1293) > Vector(x: 9, y: 1294) > Vector(x: 9, y: 1320))
Text: rgb(0,0,0) normal normal 400 22 tahoma solid rgb(0,0,0) line-through
[9, 1294]: Testing
[80, 1294]:
[87, 1294]: texts
Shape: rgb(0,0,0) Path (Vector(x: 8, y: 1322) > Vector(x: 792, y: 1322) > Vector(x: 791, y: 1323) > Vector(x: 9, y: 1323))
Shape: rgb(0,0,0) Path (Vector(x: 792, y: 1322) > Vector(x: 792, y: 1358) > Vector(x: 791, y: 1357) > Vector(x: 791, y: 1323))
Shape: rgb(0,0,0) Path (Vector(x: 792, y: 1358) > Vector(x: 8, y: 1358) > Vector(x: 9, y: 1357) > Vector(x: 791, y: 1357))
Shape: rgb(0,0,0) Path (Vector(x: 8, y: 1358) > Vector(x: 8, y: 1322) > Vector(x: 9, y: 1323) > Vector(x: 9, y: 1357))
Text: rgb(0,0,0) normal normal 400 28 tahoma solid rgb(0,0,0) line-through
[9, 1324]: Testing
[100, 1324]:
[108, 1324]: texts
Shape: rgb(0,0,0) Path (Vector(x: 8, y: 1359) > Vector(x: 792, y: 1359) > Vector(x: 791, y: 1360) > Vector(x: 9, y: 1360))
Shape: rgb(0,0,0) Path (Vector(x: 792, y: 1359) > Vector(x: 792, y: 1402) > Vector(x: 791, y: 1401) > Vector(x: 791, y: 1360))
Shape: rgb(0,0,0) Path (Vector(x: 792, y: 1402) > Vector(x: 8, y: 1402) > Vector(x: 9, y: 1401) > Vector(x: 791, y: 1401))
Shape: rgb(0,0,0) Path (Vector(x: 8, y: 1402) > Vector(x: 8, y: 1359) > Vector(x: 9, y: 1360) > Vector(x: 9, y: 1401))
Text: rgb(0,0,0) normal normal 400 34 tahoma solid rgb(0,0,0) line-through
[9, 1360]: Testing
[119, 1360]:
[130, 1360]: texts
Shape: rgb(0,0,0) Path (Vector(x: 8, y: 1403) > Vector(x: 792, y: 1403) > Vector(x: 791, y: 1404) > Vector(x: 9, y: 1404))
Shape: rgb(0,0,0) Path (Vector(x: 792, y: 1403) > Vector(x: 792, y: 1454) > Vector(x: 791, y: 1453) > Vector(x: 791, y: 1404))
Shape: rgb(0,0,0) Path (Vector(x: 792, y: 1454) > Vector(x: 8, y: 1454) > Vector(x: 9, y: 1453) > Vector(x: 791, y: 1453))
Shape: rgb(0,0,0) Path (Vector(x: 8, y: 1454) > Vector(x: 8, y: 1403) > Vector(x: 9, y: 1404) > Vector(x: 9, y: 1453))
Text: rgb(0,0,0) normal normal 400 40 tahoma solid rgb(0,0,0) line-through
[9, 1404]: Testing
[138, 1404]:
[151, 1404]: texts
Shape: rgb(0,0,0) Path (Vector(x: 8, y: 1455) > Vector(x: 792, y: 1455) > Vector(x: 791, y: 1456) > Vector(x: 9, y: 1456))
Shape: rgb(0,0,0) Path (Vector(x: 792, y: 1455) > Vector(x: 792, y: 1512) > Vector(x: 791, y: 1511) > Vector(x: 791, y: 1456))
Shape: rgb(0,0,0) Path (Vector(x: 792, y: 1512) > Vector(x: 8, y: 1512) > Vector(x: 9, y: 1511) > Vector(x: 791, y: 1511))
Shape: rgb(0,0,0) Path (Vector(x: 8, y: 1512) > Vector(x: 8, y: 1455) > Vector(x: 9, y: 1456) > Vector(x: 9, y: 1511))
Text: rgb(0,0,0) normal normal 400 46 tahoma solid rgb(0,0,0) line-through
[9, 1456]: Testing
[158, 1456]:
[172, 1456]: texts
Shape: rgb(0,0,0) Path (Vector(x: 8, y: 1513) > Vector(x: 792, y: 1513) > Vector(x: 791, y: 1514) > Vector(x: 9, y: 1514))
Shape: rgb(0,0,0) Path (Vector(x: 792, y: 1513) > Vector(x: 792, y: 1578) > Vector(x: 791, y: 1577) > Vector(x: 791, y: 1514))
Shape: rgb(0,0,0) Path (Vector(x: 792, y: 1578) > Vector(x: 8, y: 1578) > Vector(x: 9, y: 1577) > Vector(x: 791, y: 1577))
Shape: rgb(0,0,0) Path (Vector(x: 8, y: 1578) > Vector(x: 8, y: 1513) > Vector(x: 9, y: 1514) > Vector(x: 9, y: 1577))
Text: rgb(0,0,0) normal normal 400 52 tahoma solid rgb(0,0,0) line-through
[9, 1514]: Testing
[177, 1514]:
[193, 1514]: texts
Shape: rgb(0,0,0) Path (Vector(x: 8, y: 1579) > Vector(x: 792, y: 1579) > Vector(x: 791, y: 1580) > Vector(x: 9, y: 1580))
Shape: rgb(0,0,0) Path (Vector(x: 792, y: 1579) > Vector(x: 792, y: 1651) > Vector(x: 791, y: 1650) > Vector(x: 791, y: 1580))
Shape: rgb(0,0,0) Path (Vector(x: 792, y: 1651) > Vector(x: 8, y: 1651) > Vector(x: 9, y: 1650) > Vector(x: 791, y: 1650))
Shape: rgb(0,0,0) Path (Vector(x: 8, y: 1651) > Vector(x: 8, y: 1579) > Vector(x: 9, y: 1580) > Vector(x: 9, y: 1650))
Text: rgb(0,0,0) normal normal 400 58 tahoma solid rgb(0,0,0) line-through
[9, 1580]: Testing
[196, 1580]:
[214, 1580]: texts
Shape: rgb(0,0,0) Path (Vector(x: 8, y: 1652) > Vector(x: 792, y: 1652) > Vector(x: 791, y: 1653) > Vector(x: 9, y: 1653))
Shape: rgb(0,0,0) Path (Vector(x: 792, y: 1652) > Vector(x: 792, y: 1731) > Vector(x: 791, y: 1730) > Vector(x: 791, y: 1653))
Shape: rgb(0,0,0) Path (Vector(x: 792, y: 1731) > Vector(x: 8, y: 1731) > Vector(x: 9, y: 1730) > Vector(x: 791, y: 1730))
Shape: rgb(0,0,0) Path (Vector(x: 8, y: 1731) > Vector(x: 8, y: 1652) > Vector(x: 9, y: 1653) > Vector(x: 9, y: 1730))
Text: rgb(0,0,0) normal normal 400 64 tahoma solid rgb(0,0,0) line-through
[9, 1653]: Testing
[216, 1653]:
[236, 1653]: texts
Shape: rgb(0,0,0) Path (Vector(x: 8, y: 1732) > Vector(x: 792, y: 1732) > Vector(x: 791, y: 1733) > Vector(x: 9, y: 1733))
Shape: rgb(0,0,0) Path (Vector(x: 792, y: 1732) > Vector(x: 792, y: 1819) > Vector(x: 791, y: 1818) > Vector(x: 791, y: 1733))
Shape: rgb(0,0,0) Path (Vector(x: 792, y: 1819) > Vector(x: 8, y: 1819) > Vector(x: 9, y: 1818) > Vector(x: 791, y: 1818))
Shape: rgb(0,0,0) Path (Vector(x: 8, y: 1819) > Vector(x: 8, y: 1732) > Vector(x: 9, y: 1733) > Vector(x: 9, y: 1818))
Text: rgb(0,0,0) normal normal 400 70 tahoma solid rgb(0,0,0) line-through
[9, 1733]: Testing
[235, 1733]:
[257, 1733]: texts
Shape: rgb(0,0,0) Path (Vector(x: 8, y: 1820) > Vector(x: 792, y: 1820) > Vector(x: 791, y: 1821) > Vector(x: 9, y: 1821))
Shape: rgb(0,0,0) Path (Vector(x: 792, y: 1820) > Vector(x: 792, y: 1913) > Vector(x: 791, y: 1912) > Vector(x: 791, y: 1821))
Shape: rgb(0,0,0) Path (Vector(x: 792, y: 1913) > Vector(x: 8, y: 1913) > Vector(x: 9, y: 1912) > Vector(x: 791, y: 1912))
Shape: rgb(0,0,0) Path (Vector(x: 8, y: 1913) > Vector(x: 8, y: 1820) > Vector(x: 9, y: 1821) > Vector(x: 9, y: 1912))
Text: rgb(0,0,0) normal normal 400 76 tahoma solid rgb(0,0,0) line-through
[9, 1821]: Testing
[254, 1821]:
[278, 1821]: texts
Shape: rgb(0,0,0) Path (Vector(x: 8, y: 1914) > Vector(x: 792, y: 1914) > Vector(x: 791, y: 1915) > Vector(x: 9, y: 1915))
Shape: rgb(0,0,0) Path (Vector(x: 792, y: 1914) > Vector(x: 792, y: 1934) > Vector(x: 791, y: 1933) > Vector(x: 791, y: 1915))
Shape: rgb(0,0,0) Path (Vector(x: 792, y: 1934) > Vector(x: 8, y: 1934) > Vector(x: 9, y: 1933) > Vector(x: 791, y: 1933))
Shape: rgb(0,0,0) Path (Vector(x: 8, y: 1934) > Vector(x: 8, y: 1914) > Vector(x: 9, y: 1915) > Vector(x: 9, y: 1933))
Text: rgb(0,0,0) normal normal 400 16 courier new solid rgb(0,0,0) line-through
[9, 1915]: Testing
[76, 1915]:
[86, 1915]: texts
Shape: rgb(0,0,0) Path (Vector(x: 8, y: 1935) > Vector(x: 792, y: 1935) > Vector(x: 791, y: 1936) > Vector(x: 9, y: 1936))
Shape: rgb(0,0,0) Path (Vector(x: 792, y: 1935) > Vector(x: 792, y: 1962) > Vector(x: 791, y: 1961) > Vector(x: 791, y: 1936))
Shape: rgb(0,0,0) Path (Vector(x: 792, y: 1962) > Vector(x: 8, y: 1962) > Vector(x: 9, y: 1961) > Vector(x: 791, y: 1961))
Shape: rgb(0,0,0) Path (Vector(x: 8, y: 1962) > Vector(x: 8, y: 1935) > Vector(x: 9, y: 1936) > Vector(x: 9, y: 1961))
Text: rgb(0,0,0) normal normal 400 22 courier new solid rgb(0,0,0) line-through
[9, 1936]: Testing
[102, 1936]:
[115, 1936]: texts
Shape: rgb(0,0,0) Path (Vector(x: 8, y: 1963) > Vector(x: 792, y: 1963) > Vector(x: 791, y: 1964) > Vector(x: 9, y: 1964))
Shape: rgb(0,0,0) Path (Vector(x: 792, y: 1963) > Vector(x: 792, y: 1997) > Vector(x: 791, y: 1996) > Vector(x: 791, y: 1964))
Shape: rgb(0,0,0) Path (Vector(x: 792, y: 1997) > Vector(x: 8, y: 1997) > Vector(x: 9, y: 1996) > Vector(x: 791, y: 1996))
Shape: rgb(0,0,0) Path (Vector(x: 8, y: 1997) > Vector(x: 8, y: 1963) > Vector(x: 9, y: 1964) > Vector(x: 9, y: 1996))
Text: rgb(0,0,0) normal normal 400 28 courier new solid rgb(0,0,0) line-through
[9, 1965]: Testing
[127, 1965]:
[144, 1965]: texts
Shape: rgb(0,0,0) Path (Vector(x: 8, y: 1998) > Vector(x: 792, y: 1998) > Vector(x: 791, y: 1999) > Vector(x: 9, y: 1999))
Shape: rgb(0,0,0) Path (Vector(x: 792, y: 1998) > Vector(x: 792, y: 2039) > Vector(x: 791, y: 2038) > Vector(x: 791, y: 1999))
Shape: rgb(0,0,0) Path (Vector(x: 792, y: 2039) > Vector(x: 8, y: 2039) > Vector(x: 9, y: 2038) > Vector(x: 791, y: 2038))
Shape: rgb(0,0,0) Path (Vector(x: 8, y: 2039) > Vector(x: 8, y: 1998) > Vector(x: 9, y: 1999) > Vector(x: 9, y: 2038))
Text: rgb(0,0,0) normal normal 400 34 courier new solid rgb(0,0,0) line-through
[9, 1999]: Testing
[152, 1999]:
[172, 1999]: texts
Shape: rgb(0,0,0) Path (Vector(x: 8, y: 2040) > Vector(x: 792, y: 2040) > Vector(x: 791, y: 2041) > Vector(x: 9, y: 2041))
Shape: rgb(0,0,0) Path (Vector(x: 792, y: 2040) > Vector(x: 792, y: 2087) > Vector(x: 791, y: 2086) > Vector(x: 791, y: 2041))
Shape: rgb(0,0,0) Path (Vector(x: 792, y: 2087) > Vector(x: 8, y: 2087) > Vector(x: 9, y: 2086) > Vector(x: 791, y: 2086))
Shape: rgb(0,0,0) Path (Vector(x: 8, y: 2087) > Vector(x: 8, y: 2040) > Vector(x: 9, y: 2041) > Vector(x: 9, y: 2086))
Text: rgb(0,0,0) normal normal 400 40 courier new solid rgb(0,0,0) line-through
[9, 2041]: Testing
[177, 2041]:
[201, 2041]: texts
Shape: rgb(0,0,0) Path (Vector(x: 8, y: 2088) > Vector(x: 792, y: 2088) > Vector(x: 791, y: 2089) > Vector(x: 9, y: 2089))
Shape: rgb(0,0,0) Path (Vector(x: 792, y: 2088) > Vector(x: 792, y: 2142) > Vector(x: 791, y: 2141) > Vector(x: 791, y: 2089))
Shape: rgb(0,0,0) Path (Vector(x: 792, y: 2142) > Vector(x: 8, y: 2142) > Vector(x: 9, y: 2141) > Vector(x: 791, y: 2141))
Shape: rgb(0,0,0) Path (Vector(x: 8, y: 2142) > Vector(x: 8, y: 2088) > Vector(x: 9, y: 2089) > Vector(x: 9, y: 2141))
Text: rgb(0,0,0) normal normal 400 46 courier new solid rgb(0,0,0) line-through
[9, 2089]: Testing
[202, 2089]:
[230, 2089]: texts
Shape: rgb(0,0,0) Path (Vector(x: 8, y: 2143) > Vector(x: 792, y: 2143) > Vector(x: 791, y: 2144) > Vector(x: 9, y: 2144))
Shape: rgb(0,0,0) Path (Vector(x: 792, y: 2143) > Vector(x: 792, y: 2204) > Vector(x: 791, y: 2203) > Vector(x: 791, y: 2144))
Shape: rgb(0,0,0) Path (Vector(x: 792, y: 2204) > Vector(x: 8, y: 2204) > Vector(x: 9, y: 2203) > Vector(x: 791, y: 2203))
Shape: rgb(0,0,0) Path (Vector(x: 8, y: 2204) > Vector(x: 8, y: 2143) > Vector(x: 9, y: 2144) > Vector(x: 9, y: 2203))
Text: rgb(0,0,0) normal normal 400 52 courier new solid rgb(0,0,0) line-through
[9, 2145]: Testing
[228, 2145]:
[259, 2145]: texts
Shape: rgb(0,0,0) Path (Vector(x: 8, y: 2205) > Vector(x: 792, y: 2205) > Vector(x: 791, y: 2206) > Vector(x: 9, y: 2206))
Shape: rgb(0,0,0) Path (Vector(x: 792, y: 2205) > Vector(x: 792, y: 2273) > Vector(x: 791, y: 2272) > Vector(x: 791, y: 2206))
Shape: rgb(0,0,0) Path (Vector(x: 792, y: 2273) > Vector(x: 8, y: 2273) > Vector(x: 9, y: 2272) > Vector(x: 791, y: 2272))
Shape: rgb(0,0,0) Path (Vector(x: 8, y: 2273) > Vector(x: 8, y: 2205) > Vector(x: 9, y: 2206) > Vector(x: 9, y: 2272))
Text: rgb(0,0,0) normal normal 400 58 courier new solid rgb(0,0,0) line-through
[9, 2206]: Testing
[253, 2206]:
[288, 2206]: texts
Shape: rgb(0,0,0) Path (Vector(x: 8, y: 2274) > Vector(x: 792, y: 2274) > Vector(x: 791, y: 2275) > Vector(x: 9, y: 2275))
Shape: rgb(0,0,0) Path (Vector(x: 792, y: 2274) > Vector(x: 792, y: 2349) > Vector(x: 791, y: 2348) > Vector(x: 791, y: 2275))
Shape: rgb(0,0,0) Path (Vector(x: 792, y: 2349) > Vector(x: 8, y: 2349) > Vector(x: 9, y: 2348) > Vector(x: 791, y: 2348))
Shape: rgb(0,0,0) Path (Vector(x: 8, y: 2349) > Vector(x: 8, y: 2274) > Vector(x: 9, y: 2275) > Vector(x: 9, y: 2348))
Text: rgb(0,0,0) normal normal 400 64 courier new solid rgb(0,0,0) line-through
[9, 2275]: Testing
[278, 2275]:
[316, 2275]: texts
Shape: rgb(0,0,0) Path (Vector(x: 8, y: 2350) > Vector(x: 792, y: 2350) > Vector(x: 791, y: 2351) > Vector(x: 9, y: 2351))
Shape: rgb(0,0,0) Path (Vector(x: 792, y: 2350) > Vector(x: 792, y: 2431) > Vector(x: 791, y: 2430) > Vector(x: 791, y: 2351))
Shape: rgb(0,0,0) Path (Vector(x: 792, y: 2431) > Vector(x: 8, y: 2431) > Vector(x: 9, y: 2430) > Vector(x: 791, y: 2430))
Shape: rgb(0,0,0) Path (Vector(x: 8, y: 2431) > Vector(x: 8, y: 2350) > Vector(x: 9, y: 2351) > Vector(x: 9, y: 2430))
Text: rgb(0,0,0) normal normal 400 70 courier new solid rgb(0,0,0) line-through
[9, 2351]: Testing
[303, 2351]:
[345, 2351]: texts
Shape: rgb(0,0,0) Path (Vector(x: 8, y: 2432) > Vector(x: 792, y: 2432) > Vector(x: 791, y: 2433) > Vector(x: 9, y: 2433))
Shape: rgb(0,0,0) Path (Vector(x: 792, y: 2432) > Vector(x: 792, y: 2520) > Vector(x: 791, y: 2519) > Vector(x: 791, y: 2433))
Shape: rgb(0,0,0) Path (Vector(x: 792, y: 2520) > Vector(x: 8, y: 2520) > Vector(x: 9, y: 2519) > Vector(x: 791, y: 2519))
Shape: rgb(0,0,0) Path (Vector(x: 8, y: 2520) > Vector(x: 8, y: 2432) > Vector(x: 9, y: 2433) > Vector(x: 9, y: 2519))
Text: rgb(0,0,0) normal normal 400 76 courier new solid rgb(0,0,0) line-through
[9, 2433]: Testing
[328, 2433]:
[374, 2433]: texts

View File

@ -1,355 +0,0 @@
Window: [800, 2528]
Rectangle: [0, 0, 800, 2528] rgba(0,0,0,0)
Opacity: 1
Shape: rgb(0,0,0) Path (Vector(x: 8, y: 8) > Vector(x: 792, y: 8) > Vector(x: 791, y: 9) > Vector(x: 9, y: 9))
Shape: rgb(0,0,0) Path (Vector(x: 792, y: 8) > Vector(x: 792, y: 28) > Vector(x: 791, y: 27) > Vector(x: 791, y: 9))
Shape: rgb(0,0,0) Path (Vector(x: 792, y: 28) > Vector(x: 8, y: 28) > Vector(x: 9, y: 27) > Vector(x: 791, y: 27))
Shape: rgb(0,0,0) Path (Vector(x: 8, y: 28) > Vector(x: 8, y: 8) > Vector(x: 9, y: 9) > Vector(x: 9, y: 27))
Text: rgb(0,0,0) normal normal 400 16 arial solid rgb(255,0,0) underline, overline, line-through
[9, 9]: Testing
[60, 9]:
[64, 9]: texts
Shape: rgb(0,0,0) Path (Vector(x: 8, y: 29) > Vector(x: 792, y: 29) > Vector(x: 791, y: 30) > Vector(x: 9, y: 30))
Shape: rgb(0,0,0) Path (Vector(x: 792, y: 29) > Vector(x: 792, y: 57) > Vector(x: 791, y: 56) > Vector(x: 791, y: 30))
Shape: rgb(0,0,0) Path (Vector(x: 792, y: 57) > Vector(x: 8, y: 57) > Vector(x: 9, y: 56) > Vector(x: 791, y: 56))
Shape: rgb(0,0,0) Path (Vector(x: 8, y: 57) > Vector(x: 8, y: 29) > Vector(x: 9, y: 30) > Vector(x: 9, y: 56))
Text: rgb(0,0,0) normal normal 400 22 arial solid rgb(255,0,0) underline, overline, line-through
[9, 31]: Testing
[79, 31]:
[85, 31]: texts
Shape: rgb(0,0,0) Path (Vector(x: 8, y: 58) > Vector(x: 792, y: 58) > Vector(x: 791, y: 59) > Vector(x: 9, y: 59))
Shape: rgb(0,0,0) Path (Vector(x: 792, y: 58) > Vector(x: 792, y: 92) > Vector(x: 791, y: 91) > Vector(x: 791, y: 59))
Shape: rgb(0,0,0) Path (Vector(x: 792, y: 92) > Vector(x: 8, y: 92) > Vector(x: 9, y: 91) > Vector(x: 791, y: 91))
Shape: rgb(0,0,0) Path (Vector(x: 8, y: 92) > Vector(x: 8, y: 58) > Vector(x: 9, y: 59) > Vector(x: 9, y: 91))
Text: rgb(0,0,0) normal normal 400 28 arial solid rgb(255,0,0) underline, overline, line-through
[9, 59]: Testing
[98, 59]:
[106, 59]: texts
Shape: rgb(0,0,0) Path (Vector(x: 8, y: 93) > Vector(x: 792, y: 93) > Vector(x: 791, y: 94) > Vector(x: 9, y: 94))
Shape: rgb(0,0,0) Path (Vector(x: 792, y: 93) > Vector(x: 792, y: 134) > Vector(x: 791, y: 133) > Vector(x: 791, y: 94))
Shape: rgb(0,0,0) Path (Vector(x: 792, y: 134) > Vector(x: 8, y: 134) > Vector(x: 9, y: 133) > Vector(x: 791, y: 133))
Shape: rgb(0,0,0) Path (Vector(x: 8, y: 134) > Vector(x: 8, y: 93) > Vector(x: 9, y: 94) > Vector(x: 9, y: 133))
Text: rgb(0,0,0) normal normal 400 34 arial solid rgb(255,0,0) underline, overline, line-through
[9, 94]: Testing
[117, 94]:
[126, 94]: texts
Shape: rgb(0,0,0) Path (Vector(x: 8, y: 135) > Vector(x: 792, y: 135) > Vector(x: 791, y: 136) > Vector(x: 9, y: 136))
Shape: rgb(0,0,0) Path (Vector(x: 792, y: 135) > Vector(x: 792, y: 183) > Vector(x: 791, y: 182) > Vector(x: 791, y: 136))
Shape: rgb(0,0,0) Path (Vector(x: 792, y: 183) > Vector(x: 8, y: 183) > Vector(x: 9, y: 182) > Vector(x: 791, y: 182))
Shape: rgb(0,0,0) Path (Vector(x: 8, y: 183) > Vector(x: 8, y: 135) > Vector(x: 9, y: 136) > Vector(x: 9, y: 182))
Text: rgb(0,0,0) normal normal 400 40 arial solid rgb(255,0,0) underline, overline, line-through
[9, 136]: Testing
[136, 136]:
[147, 136]: texts
Shape: rgb(0,0,0) Path (Vector(x: 8, y: 184) > Vector(x: 792, y: 184) > Vector(x: 791, y: 185) > Vector(x: 9, y: 185))
Shape: rgb(0,0,0) Path (Vector(x: 792, y: 184) > Vector(x: 792, y: 239) > Vector(x: 791, y: 238) > Vector(x: 791, y: 185))
Shape: rgb(0,0,0) Path (Vector(x: 792, y: 239) > Vector(x: 8, y: 239) > Vector(x: 9, y: 238) > Vector(x: 791, y: 238))
Shape: rgb(0,0,0) Path (Vector(x: 8, y: 239) > Vector(x: 8, y: 184) > Vector(x: 9, y: 185) > Vector(x: 9, y: 238))
Text: rgb(0,0,0) normal normal 400 46 arial solid rgb(255,0,0) underline, overline, line-through
[9, 186]: Testing
[155, 186]:
[168, 186]: texts
Shape: rgb(0,0,0) Path (Vector(x: 8, y: 240) > Vector(x: 792, y: 240) > Vector(x: 791, y: 241) > Vector(x: 9, y: 241))
Shape: rgb(0,0,0) Path (Vector(x: 792, y: 240) > Vector(x: 792, y: 302) > Vector(x: 791, y: 301) > Vector(x: 791, y: 241))
Shape: rgb(0,0,0) Path (Vector(x: 792, y: 302) > Vector(x: 8, y: 302) > Vector(x: 9, y: 301) > Vector(x: 791, y: 301))
Shape: rgb(0,0,0) Path (Vector(x: 8, y: 302) > Vector(x: 8, y: 240) > Vector(x: 9, y: 241) > Vector(x: 9, y: 301))
Text: rgb(0,0,0) normal normal 400 52 arial solid rgb(255,0,0) underline, overline, line-through
[9, 242]: Testing
[174, 242]:
[188, 242]: texts
Shape: rgb(0,0,0) Path (Vector(x: 8, y: 303) > Vector(x: 792, y: 303) > Vector(x: 791, y: 304) > Vector(x: 9, y: 304))
Shape: rgb(0,0,0) Path (Vector(x: 792, y: 303) > Vector(x: 792, y: 371) > Vector(x: 791, y: 370) > Vector(x: 791, y: 304))
Shape: rgb(0,0,0) Path (Vector(x: 792, y: 371) > Vector(x: 8, y: 371) > Vector(x: 9, y: 370) > Vector(x: 791, y: 370))
Shape: rgb(0,0,0) Path (Vector(x: 8, y: 371) > Vector(x: 8, y: 303) > Vector(x: 9, y: 304) > Vector(x: 9, y: 370))
Text: rgb(0,0,0) normal normal 400 58 arial solid rgb(255,0,0) underline, overline, line-through
[9, 305]: Testing
[193, 305]:
[209, 305]: texts
Shape: rgb(0,0,0) Path (Vector(x: 8, y: 372) > Vector(x: 792, y: 372) > Vector(x: 791, y: 373) > Vector(x: 9, y: 373))
Shape: rgb(0,0,0) Path (Vector(x: 792, y: 372) > Vector(x: 792, y: 448) > Vector(x: 791, y: 447) > Vector(x: 791, y: 373))
Shape: rgb(0,0,0) Path (Vector(x: 792, y: 448) > Vector(x: 8, y: 448) > Vector(x: 9, y: 447) > Vector(x: 791, y: 447))
Shape: rgb(0,0,0) Path (Vector(x: 8, y: 448) > Vector(x: 8, y: 372) > Vector(x: 9, y: 373) > Vector(x: 9, y: 447))
Text: rgb(0,0,0) normal normal 400 64 arial solid rgb(255,0,0) underline, overline, line-through
[9, 374]: Testing
[212, 374]:
[230, 374]: texts
Shape: rgb(0,0,0) Path (Vector(x: 8, y: 449) > Vector(x: 792, y: 449) > Vector(x: 791, y: 450) > Vector(x: 9, y: 450))
Shape: rgb(0,0,0) Path (Vector(x: 792, y: 449) > Vector(x: 792, y: 531) > Vector(x: 791, y: 530) > Vector(x: 791, y: 450))
Shape: rgb(0,0,0) Path (Vector(x: 792, y: 531) > Vector(x: 8, y: 531) > Vector(x: 9, y: 530) > Vector(x: 791, y: 530))
Shape: rgb(0,0,0) Path (Vector(x: 8, y: 531) > Vector(x: 8, y: 449) > Vector(x: 9, y: 450) > Vector(x: 9, y: 530))
Text: rgb(0,0,0) normal normal 400 70 arial solid rgb(255,0,0) underline, overline, line-through
[9, 451]: Testing
[231, 451]:
[250, 451]: texts
Shape: rgb(0,0,0) Path (Vector(x: 8, y: 532) > Vector(x: 792, y: 532) > Vector(x: 791, y: 533) > Vector(x: 9, y: 533))
Shape: rgb(0,0,0) Path (Vector(x: 792, y: 532) > Vector(x: 792, y: 622) > Vector(x: 791, y: 621) > Vector(x: 791, y: 533))
Shape: rgb(0,0,0) Path (Vector(x: 792, y: 622) > Vector(x: 8, y: 622) > Vector(x: 9, y: 621) > Vector(x: 791, y: 621))
Shape: rgb(0,0,0) Path (Vector(x: 8, y: 622) > Vector(x: 8, y: 532) > Vector(x: 9, y: 533) > Vector(x: 9, y: 621))
Text: rgb(0,0,0) normal normal 400 76 arial solid rgb(255,0,0) underline, overline, line-through
[9, 535]: Testing
[250, 535]:
[271, 535]: texts
Shape: rgb(0,0,0) Path (Vector(x: 8, y: 623) > Vector(x: 792, y: 623) > Vector(x: 791, y: 624) > Vector(x: 9, y: 624))
Shape: rgb(0,0,0) Path (Vector(x: 792, y: 623) > Vector(x: 792, y: 644) > Vector(x: 791, y: 643) > Vector(x: 791, y: 624))
Shape: rgb(0,0,0) Path (Vector(x: 792, y: 644) > Vector(x: 8, y: 644) > Vector(x: 9, y: 643) > Vector(x: 791, y: 643))
Shape: rgb(0,0,0) Path (Vector(x: 8, y: 644) > Vector(x: 8, y: 623) > Vector(x: 9, y: 624) > Vector(x: 9, y: 643))
Text: rgb(0,0,0) normal normal 400 16 verdana solid rgb(255,0,0) underline, overline, line-through
[9, 624]: Testing
[66, 624]:
[72, 624]: texts
Shape: rgb(0,0,0) Path (Vector(x: 8, y: 645) > Vector(x: 792, y: 645) > Vector(x: 791, y: 646) > Vector(x: 9, y: 646))
Shape: rgb(0,0,0) Path (Vector(x: 792, y: 645) > Vector(x: 792, y: 674) > Vector(x: 791, y: 673) > Vector(x: 791, y: 646))
Shape: rgb(0,0,0) Path (Vector(x: 792, y: 674) > Vector(x: 8, y: 674) > Vector(x: 9, y: 673) > Vector(x: 791, y: 673))
Shape: rgb(0,0,0) Path (Vector(x: 8, y: 674) > Vector(x: 8, y: 645) > Vector(x: 9, y: 646) > Vector(x: 9, y: 673))
Text: rgb(0,0,0) normal normal 400 22 verdana solid rgb(255,0,0) underline, overline, line-through
[9, 646]: Testing
[87, 646]:
[95, 646]: texts
Shape: rgb(0,0,0) Path (Vector(x: 8, y: 675) > Vector(x: 792, y: 675) > Vector(x: 791, y: 676) > Vector(x: 9, y: 676))
Shape: rgb(0,0,0) Path (Vector(x: 792, y: 675) > Vector(x: 792, y: 711) > Vector(x: 791, y: 710) > Vector(x: 791, y: 676))
Shape: rgb(0,0,0) Path (Vector(x: 792, y: 711) > Vector(x: 8, y: 711) > Vector(x: 9, y: 710) > Vector(x: 791, y: 710))
Shape: rgb(0,0,0) Path (Vector(x: 8, y: 711) > Vector(x: 8, y: 675) > Vector(x: 9, y: 676) > Vector(x: 9, y: 710))
Text: rgb(0,0,0) normal normal 400 28 verdana solid rgb(255,0,0) underline, overline, line-through
[9, 676]: Testing
[108, 676]:
[118, 676]: texts
Shape: rgb(0,0,0) Path (Vector(x: 8, y: 712) > Vector(x: 792, y: 712) > Vector(x: 791, y: 713) > Vector(x: 9, y: 713))
Shape: rgb(0,0,0) Path (Vector(x: 792, y: 712) > Vector(x: 792, y: 755) > Vector(x: 791, y: 754) > Vector(x: 791, y: 713))
Shape: rgb(0,0,0) Path (Vector(x: 792, y: 755) > Vector(x: 8, y: 755) > Vector(x: 9, y: 754) > Vector(x: 791, y: 754))
Shape: rgb(0,0,0) Path (Vector(x: 8, y: 755) > Vector(x: 8, y: 712) > Vector(x: 9, y: 713) > Vector(x: 9, y: 754))
Text: rgb(0,0,0) normal normal 400 34 verdana solid rgb(255,0,0) underline, overline, line-through
[9, 713]: Testing
[130, 713]:
[142, 713]: texts
Shape: rgb(0,0,0) Path (Vector(x: 8, y: 756) > Vector(x: 792, y: 756) > Vector(x: 791, y: 757) > Vector(x: 9, y: 757))
Shape: rgb(0,0,0) Path (Vector(x: 792, y: 756) > Vector(x: 792, y: 807) > Vector(x: 791, y: 806) > Vector(x: 791, y: 757))
Shape: rgb(0,0,0) Path (Vector(x: 792, y: 807) > Vector(x: 8, y: 807) > Vector(x: 9, y: 806) > Vector(x: 791, y: 806))
Shape: rgb(0,0,0) Path (Vector(x: 8, y: 807) > Vector(x: 8, y: 756) > Vector(x: 9, y: 757) > Vector(x: 9, y: 806))
Text: rgb(0,0,0) normal normal 400 40 verdana solid rgb(255,0,0) underline, overline, line-through
[9, 757]: Testing
[151, 757]:
[165, 757]: texts
Shape: rgb(0,0,0) Path (Vector(x: 8, y: 808) > Vector(x: 792, y: 808) > Vector(x: 791, y: 809) > Vector(x: 9, y: 809))
Shape: rgb(0,0,0) Path (Vector(x: 792, y: 808) > Vector(x: 792, y: 866) > Vector(x: 791, y: 865) > Vector(x: 791, y: 809))
Shape: rgb(0,0,0) Path (Vector(x: 792, y: 866) > Vector(x: 8, y: 866) > Vector(x: 9, y: 865) > Vector(x: 791, y: 865))
Shape: rgb(0,0,0) Path (Vector(x: 8, y: 866) > Vector(x: 8, y: 808) > Vector(x: 9, y: 809) > Vector(x: 9, y: 865))
Text: rgb(0,0,0) normal normal 400 46 verdana solid rgb(255,0,0) underline, overline, line-through
[9, 809]: Testing
[172, 809]:
[188, 809]: texts
Shape: rgb(0,0,0) Path (Vector(x: 8, y: 867) > Vector(x: 792, y: 867) > Vector(x: 791, y: 868) > Vector(x: 9, y: 868))
Shape: rgb(0,0,0) Path (Vector(x: 792, y: 867) > Vector(x: 792, y: 932) > Vector(x: 791, y: 931) > Vector(x: 791, y: 868))
Shape: rgb(0,0,0) Path (Vector(x: 792, y: 932) > Vector(x: 8, y: 932) > Vector(x: 9, y: 931) > Vector(x: 791, y: 931))
Shape: rgb(0,0,0) Path (Vector(x: 8, y: 932) > Vector(x: 8, y: 867) > Vector(x: 9, y: 868) > Vector(x: 9, y: 931))
Text: rgb(0,0,0) normal normal 400 52 verdana solid rgb(255,0,0) underline, overline, line-through
[9, 868]: Testing
[194, 868]:
[212, 868]: texts
Shape: rgb(0,0,0) Path (Vector(x: 8, y: 933) > Vector(x: 792, y: 933) > Vector(x: 791, y: 934) > Vector(x: 9, y: 934))
Shape: rgb(0,0,0) Path (Vector(x: 792, y: 933) > Vector(x: 792, y: 1005) > Vector(x: 791, y: 1004) > Vector(x: 791, y: 934))
Shape: rgb(0,0,0) Path (Vector(x: 792, y: 1005) > Vector(x: 8, y: 1005) > Vector(x: 9, y: 1004) > Vector(x: 791, y: 1004))
Shape: rgb(0,0,0) Path (Vector(x: 8, y: 1005) > Vector(x: 8, y: 933) > Vector(x: 9, y: 934) > Vector(x: 9, y: 1004))
Text: rgb(0,0,0) normal normal 400 58 verdana solid rgb(255,0,0) underline, overline, line-through
[9, 934]: Testing
[215, 934]:
[235, 934]: texts
Shape: rgb(0,0,0) Path (Vector(x: 8, y: 1006) > Vector(x: 792, y: 1006) > Vector(x: 791, y: 1007) > Vector(x: 9, y: 1007))
Shape: rgb(0,0,0) Path (Vector(x: 792, y: 1006) > Vector(x: 792, y: 1086) > Vector(x: 791, y: 1085) > Vector(x: 791, y: 1007))
Shape: rgb(0,0,0) Path (Vector(x: 792, y: 1086) > Vector(x: 8, y: 1086) > Vector(x: 9, y: 1085) > Vector(x: 791, y: 1085))
Shape: rgb(0,0,0) Path (Vector(x: 8, y: 1086) > Vector(x: 8, y: 1006) > Vector(x: 9, y: 1007) > Vector(x: 9, y: 1085))
Text: rgb(0,0,0) normal normal 400 64 verdana solid rgb(255,0,0) underline, overline, line-through
[9, 1007]: Testing
[236, 1007]:
[259, 1007]: texts
Shape: rgb(0,0,0) Path (Vector(x: 8, y: 1087) > Vector(x: 792, y: 1087) > Vector(x: 791, y: 1088) > Vector(x: 9, y: 1088))
Shape: rgb(0,0,0) Path (Vector(x: 792, y: 1087) > Vector(x: 792, y: 1174) > Vector(x: 791, y: 1173) > Vector(x: 791, y: 1088))
Shape: rgb(0,0,0) Path (Vector(x: 792, y: 1174) > Vector(x: 8, y: 1174) > Vector(x: 9, y: 1173) > Vector(x: 791, y: 1173))
Shape: rgb(0,0,0) Path (Vector(x: 8, y: 1174) > Vector(x: 8, y: 1087) > Vector(x: 9, y: 1088) > Vector(x: 9, y: 1173))
Text: rgb(0,0,0) normal normal 400 70 verdana solid rgb(255,0,0) underline, overline, line-through
[9, 1088]: Testing
[258, 1088]:
[282, 1088]: texts
Shape: rgb(0,0,0) Path (Vector(x: 8, y: 1175) > Vector(x: 792, y: 1175) > Vector(x: 791, y: 1176) > Vector(x: 9, y: 1176))
Shape: rgb(0,0,0) Path (Vector(x: 792, y: 1175) > Vector(x: 792, y: 1270) > Vector(x: 791, y: 1269) > Vector(x: 791, y: 1176))
Shape: rgb(0,0,0) Path (Vector(x: 792, y: 1270) > Vector(x: 8, y: 1270) > Vector(x: 9, y: 1269) > Vector(x: 791, y: 1269))
Shape: rgb(0,0,0) Path (Vector(x: 8, y: 1270) > Vector(x: 8, y: 1175) > Vector(x: 9, y: 1176) > Vector(x: 9, y: 1269))
Text: rgb(0,0,0) normal normal 400 76 verdana solid rgb(255,0,0) underline, overline, line-through
[9, 1177]: Testing
[279, 1177]:
[306, 1177]: texts
Shape: rgb(0,0,0) Path (Vector(x: 8, y: 1271) > Vector(x: 792, y: 1271) > Vector(x: 791, y: 1272) > Vector(x: 9, y: 1272))
Shape: rgb(0,0,0) Path (Vector(x: 792, y: 1271) > Vector(x: 792, y: 1292) > Vector(x: 791, y: 1291) > Vector(x: 791, y: 1272))
Shape: rgb(0,0,0) Path (Vector(x: 792, y: 1292) > Vector(x: 8, y: 1292) > Vector(x: 9, y: 1291) > Vector(x: 791, y: 1291))
Shape: rgb(0,0,0) Path (Vector(x: 8, y: 1292) > Vector(x: 8, y: 1271) > Vector(x: 9, y: 1272) > Vector(x: 9, y: 1291))
Text: rgb(0,0,0) normal normal 400 16 tahoma solid rgb(255,0,0) underline, overline, line-through
[9, 1272]: Testing
[61, 1272]:
[66, 1272]: texts
Shape: rgb(0,0,0) Path (Vector(x: 8, y: 1293) > Vector(x: 792, y: 1293) > Vector(x: 791, y: 1294) > Vector(x: 9, y: 1294))
Shape: rgb(0,0,0) Path (Vector(x: 792, y: 1293) > Vector(x: 792, y: 1321) > Vector(x: 791, y: 1320) > Vector(x: 791, y: 1294))
Shape: rgb(0,0,0) Path (Vector(x: 792, y: 1321) > Vector(x: 8, y: 1321) > Vector(x: 9, y: 1320) > Vector(x: 791, y: 1320))
Shape: rgb(0,0,0) Path (Vector(x: 8, y: 1321) > Vector(x: 8, y: 1293) > Vector(x: 9, y: 1294) > Vector(x: 9, y: 1320))
Text: rgb(0,0,0) normal normal 400 22 tahoma solid rgb(255,0,0) underline, overline, line-through
[9, 1294]: Testing
[80, 1294]:
[87, 1294]: texts
Shape: rgb(0,0,0) Path (Vector(x: 8, y: 1322) > Vector(x: 792, y: 1322) > Vector(x: 791, y: 1323) > Vector(x: 9, y: 1323))
Shape: rgb(0,0,0) Path (Vector(x: 792, y: 1322) > Vector(x: 792, y: 1358) > Vector(x: 791, y: 1357) > Vector(x: 791, y: 1323))
Shape: rgb(0,0,0) Path (Vector(x: 792, y: 1358) > Vector(x: 8, y: 1358) > Vector(x: 9, y: 1357) > Vector(x: 791, y: 1357))
Shape: rgb(0,0,0) Path (Vector(x: 8, y: 1358) > Vector(x: 8, y: 1322) > Vector(x: 9, y: 1323) > Vector(x: 9, y: 1357))
Text: rgb(0,0,0) normal normal 400 28 tahoma solid rgb(255,0,0) underline, overline, line-through
[9, 1324]: Testing
[100, 1324]:
[108, 1324]: texts
Shape: rgb(0,0,0) Path (Vector(x: 8, y: 1359) > Vector(x: 792, y: 1359) > Vector(x: 791, y: 1360) > Vector(x: 9, y: 1360))
Shape: rgb(0,0,0) Path (Vector(x: 792, y: 1359) > Vector(x: 792, y: 1402) > Vector(x: 791, y: 1401) > Vector(x: 791, y: 1360))
Shape: rgb(0,0,0) Path (Vector(x: 792, y: 1402) > Vector(x: 8, y: 1402) > Vector(x: 9, y: 1401) > Vector(x: 791, y: 1401))
Shape: rgb(0,0,0) Path (Vector(x: 8, y: 1402) > Vector(x: 8, y: 1359) > Vector(x: 9, y: 1360) > Vector(x: 9, y: 1401))
Text: rgb(0,0,0) normal normal 400 34 tahoma solid rgb(255,0,0) underline, overline, line-through
[9, 1360]: Testing
[119, 1360]:
[130, 1360]: texts
Shape: rgb(0,0,0) Path (Vector(x: 8, y: 1403) > Vector(x: 792, y: 1403) > Vector(x: 791, y: 1404) > Vector(x: 9, y: 1404))
Shape: rgb(0,0,0) Path (Vector(x: 792, y: 1403) > Vector(x: 792, y: 1454) > Vector(x: 791, y: 1453) > Vector(x: 791, y: 1404))
Shape: rgb(0,0,0) Path (Vector(x: 792, y: 1454) > Vector(x: 8, y: 1454) > Vector(x: 9, y: 1453) > Vector(x: 791, y: 1453))
Shape: rgb(0,0,0) Path (Vector(x: 8, y: 1454) > Vector(x: 8, y: 1403) > Vector(x: 9, y: 1404) > Vector(x: 9, y: 1453))
Text: rgb(0,0,0) normal normal 400 40 tahoma solid rgb(255,0,0) underline, overline, line-through
[9, 1404]: Testing
[138, 1404]:
[151, 1404]: texts
Shape: rgb(0,0,0) Path (Vector(x: 8, y: 1455) > Vector(x: 792, y: 1455) > Vector(x: 791, y: 1456) > Vector(x: 9, y: 1456))
Shape: rgb(0,0,0) Path (Vector(x: 792, y: 1455) > Vector(x: 792, y: 1512) > Vector(x: 791, y: 1511) > Vector(x: 791, y: 1456))
Shape: rgb(0,0,0) Path (Vector(x: 792, y: 1512) > Vector(x: 8, y: 1512) > Vector(x: 9, y: 1511) > Vector(x: 791, y: 1511))
Shape: rgb(0,0,0) Path (Vector(x: 8, y: 1512) > Vector(x: 8, y: 1455) > Vector(x: 9, y: 1456) > Vector(x: 9, y: 1511))
Text: rgb(0,0,0) normal normal 400 46 tahoma solid rgb(255,0,0) underline, overline, line-through
[9, 1456]: Testing
[158, 1456]:
[172, 1456]: texts
Shape: rgb(0,0,0) Path (Vector(x: 8, y: 1513) > Vector(x: 792, y: 1513) > Vector(x: 791, y: 1514) > Vector(x: 9, y: 1514))
Shape: rgb(0,0,0) Path (Vector(x: 792, y: 1513) > Vector(x: 792, y: 1578) > Vector(x: 791, y: 1577) > Vector(x: 791, y: 1514))
Shape: rgb(0,0,0) Path (Vector(x: 792, y: 1578) > Vector(x: 8, y: 1578) > Vector(x: 9, y: 1577) > Vector(x: 791, y: 1577))
Shape: rgb(0,0,0) Path (Vector(x: 8, y: 1578) > Vector(x: 8, y: 1513) > Vector(x: 9, y: 1514) > Vector(x: 9, y: 1577))
Text: rgb(0,0,0) normal normal 400 52 tahoma solid rgb(255,0,0) underline, overline, line-through
[9, 1514]: Testing
[177, 1514]:
[193, 1514]: texts
Shape: rgb(0,0,0) Path (Vector(x: 8, y: 1579) > Vector(x: 792, y: 1579) > Vector(x: 791, y: 1580) > Vector(x: 9, y: 1580))
Shape: rgb(0,0,0) Path (Vector(x: 792, y: 1579) > Vector(x: 792, y: 1651) > Vector(x: 791, y: 1650) > Vector(x: 791, y: 1580))
Shape: rgb(0,0,0) Path (Vector(x: 792, y: 1651) > Vector(x: 8, y: 1651) > Vector(x: 9, y: 1650) > Vector(x: 791, y: 1650))
Shape: rgb(0,0,0) Path (Vector(x: 8, y: 1651) > Vector(x: 8, y: 1579) > Vector(x: 9, y: 1580) > Vector(x: 9, y: 1650))
Text: rgb(0,0,0) normal normal 400 58 tahoma solid rgb(255,0,0) underline, overline, line-through
[9, 1580]: Testing
[196, 1580]:
[214, 1580]: texts
Shape: rgb(0,0,0) Path (Vector(x: 8, y: 1652) > Vector(x: 792, y: 1652) > Vector(x: 791, y: 1653) > Vector(x: 9, y: 1653))
Shape: rgb(0,0,0) Path (Vector(x: 792, y: 1652) > Vector(x: 792, y: 1731) > Vector(x: 791, y: 1730) > Vector(x: 791, y: 1653))
Shape: rgb(0,0,0) Path (Vector(x: 792, y: 1731) > Vector(x: 8, y: 1731) > Vector(x: 9, y: 1730) > Vector(x: 791, y: 1730))
Shape: rgb(0,0,0) Path (Vector(x: 8, y: 1731) > Vector(x: 8, y: 1652) > Vector(x: 9, y: 1653) > Vector(x: 9, y: 1730))
Text: rgb(0,0,0) normal normal 400 64 tahoma solid rgb(255,0,0) underline, overline, line-through
[9, 1653]: Testing
[216, 1653]:
[236, 1653]: texts
Shape: rgb(0,0,0) Path (Vector(x: 8, y: 1732) > Vector(x: 792, y: 1732) > Vector(x: 791, y: 1733) > Vector(x: 9, y: 1733))
Shape: rgb(0,0,0) Path (Vector(x: 792, y: 1732) > Vector(x: 792, y: 1819) > Vector(x: 791, y: 1818) > Vector(x: 791, y: 1733))
Shape: rgb(0,0,0) Path (Vector(x: 792, y: 1819) > Vector(x: 8, y: 1819) > Vector(x: 9, y: 1818) > Vector(x: 791, y: 1818))
Shape: rgb(0,0,0) Path (Vector(x: 8, y: 1819) > Vector(x: 8, y: 1732) > Vector(x: 9, y: 1733) > Vector(x: 9, y: 1818))
Text: rgb(0,0,0) normal normal 400 70 tahoma solid rgb(255,0,0) underline, overline, line-through
[9, 1733]: Testing
[235, 1733]:
[257, 1733]: texts
Shape: rgb(0,0,0) Path (Vector(x: 8, y: 1820) > Vector(x: 792, y: 1820) > Vector(x: 791, y: 1821) > Vector(x: 9, y: 1821))
Shape: rgb(0,0,0) Path (Vector(x: 792, y: 1820) > Vector(x: 792, y: 1913) > Vector(x: 791, y: 1912) > Vector(x: 791, y: 1821))
Shape: rgb(0,0,0) Path (Vector(x: 792, y: 1913) > Vector(x: 8, y: 1913) > Vector(x: 9, y: 1912) > Vector(x: 791, y: 1912))
Shape: rgb(0,0,0) Path (Vector(x: 8, y: 1913) > Vector(x: 8, y: 1820) > Vector(x: 9, y: 1821) > Vector(x: 9, y: 1912))
Text: rgb(0,0,0) normal normal 400 76 tahoma solid rgb(255,0,0) underline, overline, line-through
[9, 1821]: Testing
[254, 1821]:
[278, 1821]: texts
Shape: rgb(0,0,0) Path (Vector(x: 8, y: 1914) > Vector(x: 792, y: 1914) > Vector(x: 791, y: 1915) > Vector(x: 9, y: 1915))
Shape: rgb(0,0,0) Path (Vector(x: 792, y: 1914) > Vector(x: 792, y: 1934) > Vector(x: 791, y: 1933) > Vector(x: 791, y: 1915))
Shape: rgb(0,0,0) Path (Vector(x: 792, y: 1934) > Vector(x: 8, y: 1934) > Vector(x: 9, y: 1933) > Vector(x: 791, y: 1933))
Shape: rgb(0,0,0) Path (Vector(x: 8, y: 1934) > Vector(x: 8, y: 1914) > Vector(x: 9, y: 1915) > Vector(x: 9, y: 1933))
Text: rgb(0,0,0) normal normal 400 16 courier new solid rgb(255,0,0) underline, overline, line-through
[9, 1915]: Testing
[76, 1915]:
[86, 1915]: texts
Shape: rgb(0,0,0) Path (Vector(x: 8, y: 1935) > Vector(x: 792, y: 1935) > Vector(x: 791, y: 1936) > Vector(x: 9, y: 1936))
Shape: rgb(0,0,0) Path (Vector(x: 792, y: 1935) > Vector(x: 792, y: 1962) > Vector(x: 791, y: 1961) > Vector(x: 791, y: 1936))
Shape: rgb(0,0,0) Path (Vector(x: 792, y: 1962) > Vector(x: 8, y: 1962) > Vector(x: 9, y: 1961) > Vector(x: 791, y: 1961))
Shape: rgb(0,0,0) Path (Vector(x: 8, y: 1962) > Vector(x: 8, y: 1935) > Vector(x: 9, y: 1936) > Vector(x: 9, y: 1961))
Text: rgb(0,0,0) normal normal 400 22 courier new solid rgb(255,0,0) underline, overline, line-through
[9, 1936]: Testing
[102, 1936]:
[115, 1936]: texts
Shape: rgb(0,0,0) Path (Vector(x: 8, y: 1963) > Vector(x: 792, y: 1963) > Vector(x: 791, y: 1964) > Vector(x: 9, y: 1964))
Shape: rgb(0,0,0) Path (Vector(x: 792, y: 1963) > Vector(x: 792, y: 1997) > Vector(x: 791, y: 1996) > Vector(x: 791, y: 1964))
Shape: rgb(0,0,0) Path (Vector(x: 792, y: 1997) > Vector(x: 8, y: 1997) > Vector(x: 9, y: 1996) > Vector(x: 791, y: 1996))
Shape: rgb(0,0,0) Path (Vector(x: 8, y: 1997) > Vector(x: 8, y: 1963) > Vector(x: 9, y: 1964) > Vector(x: 9, y: 1996))
Text: rgb(0,0,0) normal normal 400 28 courier new solid rgb(255,0,0) underline, overline, line-through
[9, 1965]: Testing
[127, 1965]:
[144, 1965]: texts
Shape: rgb(0,0,0) Path (Vector(x: 8, y: 1998) > Vector(x: 792, y: 1998) > Vector(x: 791, y: 1999) > Vector(x: 9, y: 1999))
Shape: rgb(0,0,0) Path (Vector(x: 792, y: 1998) > Vector(x: 792, y: 2039) > Vector(x: 791, y: 2038) > Vector(x: 791, y: 1999))
Shape: rgb(0,0,0) Path (Vector(x: 792, y: 2039) > Vector(x: 8, y: 2039) > Vector(x: 9, y: 2038) > Vector(x: 791, y: 2038))
Shape: rgb(0,0,0) Path (Vector(x: 8, y: 2039) > Vector(x: 8, y: 1998) > Vector(x: 9, y: 1999) > Vector(x: 9, y: 2038))
Text: rgb(0,0,0) normal normal 400 34 courier new solid rgb(255,0,0) underline, overline, line-through
[9, 1999]: Testing
[152, 1999]:
[172, 1999]: texts
Shape: rgb(0,0,0) Path (Vector(x: 8, y: 2040) > Vector(x: 792, y: 2040) > Vector(x: 791, y: 2041) > Vector(x: 9, y: 2041))
Shape: rgb(0,0,0) Path (Vector(x: 792, y: 2040) > Vector(x: 792, y: 2087) > Vector(x: 791, y: 2086) > Vector(x: 791, y: 2041))
Shape: rgb(0,0,0) Path (Vector(x: 792, y: 2087) > Vector(x: 8, y: 2087) > Vector(x: 9, y: 2086) > Vector(x: 791, y: 2086))
Shape: rgb(0,0,0) Path (Vector(x: 8, y: 2087) > Vector(x: 8, y: 2040) > Vector(x: 9, y: 2041) > Vector(x: 9, y: 2086))
Text: rgb(0,0,0) normal normal 400 40 courier new solid rgb(255,0,0) underline, overline, line-through
[9, 2041]: Testing
[177, 2041]:
[201, 2041]: texts
Shape: rgb(0,0,0) Path (Vector(x: 8, y: 2088) > Vector(x: 792, y: 2088) > Vector(x: 791, y: 2089) > Vector(x: 9, y: 2089))
Shape: rgb(0,0,0) Path (Vector(x: 792, y: 2088) > Vector(x: 792, y: 2142) > Vector(x: 791, y: 2141) > Vector(x: 791, y: 2089))
Shape: rgb(0,0,0) Path (Vector(x: 792, y: 2142) > Vector(x: 8, y: 2142) > Vector(x: 9, y: 2141) > Vector(x: 791, y: 2141))
Shape: rgb(0,0,0) Path (Vector(x: 8, y: 2142) > Vector(x: 8, y: 2088) > Vector(x: 9, y: 2089) > Vector(x: 9, y: 2141))
Text: rgb(0,0,0) normal normal 400 46 courier new solid rgb(255,0,0) underline, overline, line-through
[9, 2089]: Testing
[202, 2089]:
[230, 2089]: texts
Shape: rgb(0,0,0) Path (Vector(x: 8, y: 2143) > Vector(x: 792, y: 2143) > Vector(x: 791, y: 2144) > Vector(x: 9, y: 2144))
Shape: rgb(0,0,0) Path (Vector(x: 792, y: 2143) > Vector(x: 792, y: 2204) > Vector(x: 791, y: 2203) > Vector(x: 791, y: 2144))
Shape: rgb(0,0,0) Path (Vector(x: 792, y: 2204) > Vector(x: 8, y: 2204) > Vector(x: 9, y: 2203) > Vector(x: 791, y: 2203))
Shape: rgb(0,0,0) Path (Vector(x: 8, y: 2204) > Vector(x: 8, y: 2143) > Vector(x: 9, y: 2144) > Vector(x: 9, y: 2203))
Text: rgb(0,0,0) normal normal 400 52 courier new solid rgb(255,0,0) underline, overline, line-through
[9, 2145]: Testing
[228, 2145]:
[259, 2145]: texts
Shape: rgb(0,0,0) Path (Vector(x: 8, y: 2205) > Vector(x: 792, y: 2205) > Vector(x: 791, y: 2206) > Vector(x: 9, y: 2206))
Shape: rgb(0,0,0) Path (Vector(x: 792, y: 2205) > Vector(x: 792, y: 2273) > Vector(x: 791, y: 2272) > Vector(x: 791, y: 2206))
Shape: rgb(0,0,0) Path (Vector(x: 792, y: 2273) > Vector(x: 8, y: 2273) > Vector(x: 9, y: 2272) > Vector(x: 791, y: 2272))
Shape: rgb(0,0,0) Path (Vector(x: 8, y: 2273) > Vector(x: 8, y: 2205) > Vector(x: 9, y: 2206) > Vector(x: 9, y: 2272))
Text: rgb(0,0,0) normal normal 400 58 courier new solid rgb(255,0,0) underline, overline, line-through
[9, 2206]: Testing
[253, 2206]:
[288, 2206]: texts
Shape: rgb(0,0,0) Path (Vector(x: 8, y: 2274) > Vector(x: 792, y: 2274) > Vector(x: 791, y: 2275) > Vector(x: 9, y: 2275))
Shape: rgb(0,0,0) Path (Vector(x: 792, y: 2274) > Vector(x: 792, y: 2349) > Vector(x: 791, y: 2348) > Vector(x: 791, y: 2275))
Shape: rgb(0,0,0) Path (Vector(x: 792, y: 2349) > Vector(x: 8, y: 2349) > Vector(x: 9, y: 2348) > Vector(x: 791, y: 2348))
Shape: rgb(0,0,0) Path (Vector(x: 8, y: 2349) > Vector(x: 8, y: 2274) > Vector(x: 9, y: 2275) > Vector(x: 9, y: 2348))
Text: rgb(0,0,0) normal normal 400 64 courier new solid rgb(255,0,0) underline, overline, line-through
[9, 2275]: Testing
[278, 2275]:
[316, 2275]: texts
Shape: rgb(0,0,0) Path (Vector(x: 8, y: 2350) > Vector(x: 792, y: 2350) > Vector(x: 791, y: 2351) > Vector(x: 9, y: 2351))
Shape: rgb(0,0,0) Path (Vector(x: 792, y: 2350) > Vector(x: 792, y: 2431) > Vector(x: 791, y: 2430) > Vector(x: 791, y: 2351))
Shape: rgb(0,0,0) Path (Vector(x: 792, y: 2431) > Vector(x: 8, y: 2431) > Vector(x: 9, y: 2430) > Vector(x: 791, y: 2430))
Shape: rgb(0,0,0) Path (Vector(x: 8, y: 2431) > Vector(x: 8, y: 2350) > Vector(x: 9, y: 2351) > Vector(x: 9, y: 2430))
Text: rgb(0,0,0) normal normal 400 70 courier new solid rgb(255,0,0) underline, overline, line-through
[9, 2351]: Testing
[303, 2351]:
[345, 2351]: texts
Shape: rgb(0,0,0) Path (Vector(x: 8, y: 2432) > Vector(x: 792, y: 2432) > Vector(x: 791, y: 2433) > Vector(x: 9, y: 2433))
Shape: rgb(0,0,0) Path (Vector(x: 792, y: 2432) > Vector(x: 792, y: 2520) > Vector(x: 791, y: 2519) > Vector(x: 791, y: 2433))
Shape: rgb(0,0,0) Path (Vector(x: 792, y: 2520) > Vector(x: 8, y: 2520) > Vector(x: 9, y: 2519) > Vector(x: 791, y: 2519))
Shape: rgb(0,0,0) Path (Vector(x: 8, y: 2520) > Vector(x: 8, y: 2432) > Vector(x: 9, y: 2433) > Vector(x: 9, y: 2519))
Text: rgb(0,0,0) normal normal 400 76 courier new solid rgb(255,0,0) underline, overline, line-through
[9, 2433]: Testing
[328, 2433]:
[374, 2433]: texts

View File

@ -1,88 +0,0 @@
Window: [800, 600]
Rectangle: [0, 0, 800, 600] rgba(0,0,0,0)
Opacity: 1
Text: rgb(0,0,0) normal normal 400 16 Arial
[8, 8]: Some
[54, 8]: text
Text: rgb(0,0,0) normal normal 400 16 Arial
[292, 8]: followed
[355, 8]: by
[376, 8]: more
[417, 8]: text
[447, 8]: without
[502, 8]: shadow.
Text: rgb(0,0,0) normal normal 400 16 Arial
[704, 8]: and
[736, 8]: some
[8, 26]: more
[49, 26]: text
[79, 26]: without
[134, 26]: shadow
Text: rgb(255,255,255) normal normal 400 24 Georgia Shadows: (rgb(0,0,0) 1px 1px 2px, rgb(0,0,255) 0px 0px 24px, rgb(0,0,255) 0px 0px 4.8px)
[8, 178]: Sed
[53, 178]: ut
[80, 178]: perspiciatis
[208, 178]: unde
[268, 178]: omnis
[339, 178]: iste
[382, 178]: natus
[446, 178]: error
[506, 178]: sit
[538, 178]: voluptatem
[8, 206]: accusantium
[148, 206]: doloremque
[282, 206]: laudantium,
[418, 206]: totam
[486, 206]: rem
[534, 206]: aperiam,
[634, 206]: eaque
[702, 206]: ipsa
[8, 233]: quae
[65, 233]: ab
[96, 233]: illo
[136, 233]: inventore.
Text: rgb(0,0,0) normal normal 400 16 Arial Shadows: (rgb(0,0,0) 0px -2px 0px)
[8, 284]: Sed
[41, 284]: ut
[59, 284]: perspiciatis
[143, 284]: unde
[183, 284]: omnis
[230, 284]: iste
[260, 284]: natus
[303, 284]: error
[342, 284]: sit
[362, 284]: voluptatem
[445, 284]: accusantium
[539, 284]: doloremque
[628, 284]: laudantium,
[715, 284]: totam
[760, 284]: rem
[8, 302]: aperiam,
[75, 302]: eaque
[124, 302]: ipsa
[158, 302]: quae
[198, 302]: ab
[220, 302]: illo
[244, 302]: inventore.
Text: rgb(0,0,0) normal normal 400 16 Arial Shadows: (rgb(136,136,136) 1px 1px 3px)
[84, 8]: followed
[148, 8]: by
[169, 8]: text
[199, 8]: with
[232, 8]: shadow
Text: rgb(0,0,0) normal normal 700 16 Arial Shadows: (rgb(0,0,0) 1px 1px 2px, rgb(0,0,255) 0px 0px 16px, rgb(0,0,255) 0px 0px 3.2px)
[566, 8]: Multi
[607, 8]: text
[640, 8]: shadow
Text: rgba(0,0,0,0) normal normal 400 48 Arial Shadows: (rgb(0,0,255) 0px 0px 5px, rgb(255,0,0) 2px 2px 0px)
[8, 45]: testing
[163, 45]: with
[262, 45]: transparent
Text: rgba(0,255,0,0.5) normal normal 700 48 Arial Shadows: (rgb(0,0,255) 0px 0px 5px, rgb(255,0,0) 2px 2px 0px) solid rgba(0,255,0,0.5) underline
[518, 45]: testing
[675, 45]:
[688, 45]: with
[784, 45]:
[8, 100]: low
[88, 100]:
[101, 100]: opacity

View File

@ -126,9 +126,12 @@
<li style="word-spacing:5px;">word-spacing:5px; (as each letter is rendered individually, the bounds will always be correct)</li>
<li style="line-height:35px;">line-height:35px; <br />(same goes for line-height)</li>
<li style="letter-spacing:5px;">letter-spacing:5px;</li>
<li style="letter-spacing:0.9px;">letter-spacing:0.9px;</li>
<li style="text-align:right;width:300px;">text-align:right;width:300px;</li>
<li style="font-variant:small-caps;">font-variant:small-caps; </li>
</ul>
<div style="font-family: 'Inconsolata', Monaco, Consolas, 'Andale Mono', monospace">npm install --save html2canvas</div>
</body>
</html>

View File

@ -1,266 +0,0 @@
Window: [800, 1046]
Rectangle: [0, 0, 800, 1046] rgba(0,0,0,0)
Opacity: 1
Text: rgb(0,0,0) normal normal 700 36 Arial
[8, 20]: <h1>
[102, 20]: text
[166, 20]: -
[178, 20]: decoration
Text: rgb(0,0,0) normal normal 700 24 Arial
[8, 722]: <h2>
[71, 722]: text
[113, 722]: -
[121, 722]: transform
Text: rgb(0,0,0) normal normal 400 16 Arial
[48, 768]: text
[74, 768]: -
[79, 768]: transform:none;
Text: rgb(0,0,0) normal normal 400 16 Arial
[48, 786]: Text
[77, 786]: -
[83, 786]: Transform:
[164, 786]: Capitalize;
[243, 786]: (Including
[317, 786]: Foreign
[376, 786]: Characters
[458, 786]: Such
[499, 786]: As
[522, 786]: Öaäå)
Text: rgb(0,0,0) normal normal 400 16 Arial
[48, 804]: TEXT
[88, 804]: -
[93, 804]: TRANSFORM:UPPERCASE;
Text: rgb(0,0,0) normal normal 400 16 Arial
[48, 822]: text
[74, 822]: -
[79, 822]: transform:lowercase;
Text: rgb(0,0,0) normal normal 700 16 Arial
[8, 855]: <h3>
[50, 855]: misc
[91, 855]: text
[124, 855]: alignments
Text: rgb(0,0,0) normal normal 400 16 Arial
[48, 888]: word
[83, 888]: -
[88, 888]: spacing:5px;
[187, 888]: (as
[219, 888]: each
[263, 888]: letter
[308, 888]: is
[329, 888]: rendered
[403, 888]: individually,
[494, 888]: the
[525, 888]: bounds
[587, 888]: will
[619, 888]: always
[677, 888]: be
[704, 888]: correct)
Text: rgb(0,0,0) normal normal 400 16 Arial
[48, 914]: line
[73, 914]: -
[78, 914]: height:35px;
Text: rgb(0,0,0) normal normal 400 16 Arial
[48, 949]: (same
[97, 949]: goes
[136, 949]: for
[159, 949]: line
[184, 949]: -
[189, 949]: height)
Text: rgb(0,0,0) normal normal 400 16 Arial
[48, 975]: l
[56, 975]: e
[70, 975]: t
[80, 975]: t
[89, 975]: e
[103, 975]: r
[114, 975]: -
[124, 975]: s
[137, 975]: p
[151, 975]: a
[165, 975]: c
[178, 975]: i
[186, 975]: n
[200, 975]: g
[214, 975]: :
[224, 975]: 5
[237, 975]: p
[251, 975]: x
[264, 975]: ;
Text: rgb(0,0,0) normal normal 400 16 Arial
[153, 993]: text
[179, 993]: -
[184, 993]: align:right;width:300px;
Text: rgb(0,0,0) normal small-caps 400 16 Arial
[48, 1011]: font
[84, 1011]: -
[89, 1011]: variant:small
[194, 1011]: -
[200, 1011]: caps;
Text: rgb(0,0,0) normal normal 700 24 Arial
[8, 99]: Arial
Text: rgb(0,0,0) normal normal 400 14 Arial
[48, 140]: text
[70, 140]: -
[75, 140]: decoration:none;
Text: rgb(0,0,0) normal normal 400 14 Arial solid rgb(0,0,0) underline
[48, 148]: text
[70, 148]: -
[75, 148]: decoration:underline;
Text: rgb(0,0,0) normal normal 400 14 Arial solid rgb(0,0,0) overline
[48, 156]: text
[70, 156]: -
[75, 156]: decoration:overline;
Text: rgb(0,0,0) normal normal 400 14 Arial solid rgb(0,0,0) line-through
[48, 164]: text
[70, 164]: -
[75, 164]: decoration:line
[166, 164]: -
[171, 164]: through;
Text: rgb(0,0,0) normal normal 400 18 Arial
[48, 192]: text
[77, 192]: -
[83, 192]: decoration:none;
Text: rgb(0,0,0) normal normal 400 18 Arial solid rgb(0,0,0) underline
[48, 208]: text
[77, 208]: -
[83, 208]: decoration:underline;
Text: rgb(0,0,0) normal normal 400 18 Arial solid rgb(0,0,0) overline
[48, 224]: text
[77, 224]: -
[83, 224]: decoration:overline;
Text: rgb(0,0,0) normal normal 400 18 Arial solid rgb(0,0,0) line-through
[48, 240]: text
[77, 240]: -
[83, 240]: decoration:line
[200, 240]: -
[206, 240]: through;
Text: rgb(0,0,0) normal normal 400 24 Arial
[48, 280]: text
[87, 280]: -
[95, 280]: decoration:none;
Text: rgb(0,0,0) normal normal 400 24 Arial solid rgb(0,0,0) underline
[48, 304]: text
[87, 304]: -
[95, 304]: decoration:underline;
Text: rgb(0,0,0) normal normal 400 24 Arial solid rgb(0,0,0) overline
[48, 328]: text
[87, 328]: -
[95, 328]: decoration:overline;
Text: rgb(0,0,0) normal normal 400 24 Arial solid rgb(0,0,0) line-through
[48, 352]: text
[87, 352]: -
[95, 352]: decoration:line
[251, 352]: -
[259, 352]: through;
Text: rgb(0,0,0) normal normal 700 24 Verdana
[347, 97]: Verdana
Text: rgb(0,0,0) normal normal 400 14 Verdana
[387, 140]: text
[414, 140]: -
[420, 140]: decoration:none;
Text: rgb(0,0,0) normal normal 400 14 Verdana solid rgb(0,0,0) underline
[387, 148]: text
[414, 148]: -
[420, 148]: decoration:underline;
Text: rgb(0,0,0) normal normal 400 14 Verdana solid rgb(0,0,0) overline
[387, 156]: text
[414, 156]: -
[420, 156]: decoration:overline;
Text: rgb(0,0,0) normal normal 400 14 Verdana solid rgb(0,0,0) line-through
[387, 164]: text
[414, 164]: -
[420, 164]: decoration:line
[526, 164]: -
[532, 164]: through;
Text: rgb(0,0,0) normal normal 400 18 Verdana
[387, 191]: text
[422, 191]: -
[430, 191]: decoration:none;
Text: rgb(0,0,0) normal normal 400 18 Verdana solid rgb(0,0,0) underline
[387, 207]: text
[422, 207]: -
[430, 207]: decoration:underline;
Text: rgb(0,0,0) normal normal 400 18 Verdana solid rgb(0,0,0) overline
[387, 223]: text
[422, 223]: -
[430, 223]: decoration:overline;
Text: rgb(0,0,0) normal normal 400 18 Verdana solid rgb(0,0,0) line-through
[387, 239]: text
[422, 239]: -
[430, 239]: decoration:line
[565, 239]: -
[573, 239]: through;
Text: rgb(0,0,0) normal normal 400 24 Verdana
[387, 279]: text
[434, 279]: -
[445, 279]: decoration:none;
Text: rgb(0,0,0) normal normal 400 24 Verdana solid rgb(0,0,0) underline
[387, 303]: text
[434, 303]: -
[445, 303]: decoration:underline;
Text: rgb(0,0,0) normal normal 400 24 Verdana solid rgb(0,0,0) overline
[387, 327]: text
[434, 327]: -
[445, 327]: decoration:overline;
Text: rgb(0,0,0) normal normal 400 24 Verdana solid rgb(0,0,0) line-through
[387, 351]: text
[434, 351]: -
[445, 351]: decoration:line
[624, 351]: -
[636, 351]: through;
Text: rgb(0,0,0) normal normal 700 24 Tahoma
[8, 420]: Tahoma
Text: rgb(0,0,0) normal normal 400 14 Tahoma
[48, 462]: text
[72, 462]: -
[77, 462]: decoration:none;
Text: rgb(0,0,0) normal normal 400 14 Tahoma solid rgb(0,0,0) underline
[48, 470]: text
[72, 470]: -
[77, 470]: decoration:underline;
Text: rgb(0,0,0) normal normal 400 14 Tahoma solid rgb(0,0,0) overline
[48, 478]: text
[72, 478]: -
[77, 478]: decoration:overline;
Text: rgb(0,0,0) normal normal 400 14 Tahoma solid rgb(0,0,0) line-through
[48, 486]: text
[72, 486]: -
[77, 486]: decoration:line
[168, 486]: -
[173, 486]: through;
Text: rgb(0,0,0) normal normal 400 18 Tahoma
[48, 513]: text
[78, 513]: -
[85, 513]: decoration:none;
Text: rgb(0,0,0) normal normal 400 18 Tahoma solid rgb(0,0,0) underline
[48, 529]: text
[78, 529]: -
[85, 529]: decoration:underline;
Text: rgb(0,0,0) normal normal 400 18 Tahoma solid rgb(0,0,0) overline
[48, 545]: text
[78, 545]: -
[85, 545]: decoration:overline;
Text: rgb(0,0,0) normal normal 400 18 Tahoma solid rgb(0,0,0) line-through
[48, 561]: text
[78, 561]: -
[85, 561]: decoration:line
[202, 561]: -
[209, 561]: through;
Text: rgb(0,0,0) normal normal 400 24 Tahoma
[48, 602]: text
[88, 602]: -
[97, 602]: decoration:none;
Text: rgb(0,0,0) normal normal 400 24 Tahoma solid rgb(0,0,0) underline
[48, 626]: text
[88, 626]: -
[97, 626]: decoration:underline;
Text: rgb(0,0,0) normal normal 400 24 Tahoma solid rgb(0,0,0) overline
[48, 650]: text
[88, 650]: -
[97, 650]: decoration:overline;
Text: rgb(0,0,0) normal normal 400 24 Tahoma solid rgb(0,0,0) line-through
[48, 674]: text
[88, 674]: -
[97, 674]: decoration:line
[254, 674]: -
[263, 674]: through;

View File

@ -1,179 +0,0 @@
Window: [800, 1834]
Rectangle: [0, 0, 800, 1834] rgba(0,0,0,0)
Opacity: 1
Text: rgb(0,0,0) normal normal 400 16 arial solid rgb(0,0,0) underline
[8, 19]: Testing
[59, 19]:
[63, 19]: texts
Text: rgb(0,0,0) normal normal 400 22 arial solid rgb(0,0,0) underline
[8, 57]: Testing
[78, 57]:
[84, 57]: texts
Text: rgb(0,0,0) normal normal 400 28 arial solid rgb(0,0,0) underline
[8, 94]: Testing
[97, 94]:
[104, 94]: texts
Text: rgb(0,0,0) normal normal 400 34 arial solid rgb(0,0,0) underline
[8, 132]: Testing
[116, 132]:
[125, 132]: texts
Text: rgb(0,0,0) normal normal 400 40 arial solid rgb(0,0,0) underline
[8, 170]: Testing
[135, 170]:
[146, 170]: texts
Text: rgb(0,0,0) normal normal 400 46 arial solid rgb(0,0,0) underline
[8, 207]: Testing
[154, 207]:
[166, 207]: texts
Text: rgb(0,0,0) normal normal 400 52 arial solid rgb(0,0,0) underline
[8, 245]: Testing
[173, 245]:
[187, 245]: texts
Text: rgb(0,0,0) normal normal 400 58 arial solid rgb(0,0,0) underline
[8, 283]: Testing
[192, 283]:
[208, 283]: texts
Text: rgb(0,0,0) normal normal 400 64 arial solid rgb(0,0,0) underline
[8, 320]: Testing
[211, 320]:
[228, 320]: texts
Text: rgb(0,0,0) normal normal 400 70 arial solid rgb(0,0,0) underline
[8, 358]: Testing
[230, 358]:
[249, 358]: texts
Text: rgb(0,0,0) normal normal 400 76 arial solid rgb(0,0,0) underline
[8, 396]: Testing
[249, 396]:
[270, 396]: texts
Text: rgb(0,0,0) normal normal 400 16 verdana solid rgb(0,0,0) underline
[8, 469]: Testing
[65, 469]:
[70, 469]: texts
Text: rgb(0,0,0) normal normal 400 22 verdana solid rgb(0,0,0) underline
[8, 506]: Testing
[86, 506]:
[94, 506]: texts
Text: rgb(0,0,0) normal normal 400 28 verdana solid rgb(0,0,0) underline
[8, 544]: Testing
[107, 544]:
[117, 544]: texts
Text: rgb(0,0,0) normal normal 400 34 verdana solid rgb(0,0,0) underline
[8, 581]: Testing
[129, 581]:
[141, 581]: texts
Text: rgb(0,0,0) normal normal 400 40 verdana solid rgb(0,0,0) underline
[8, 619]: Testing
[150, 619]:
[164, 619]: texts
Text: rgb(0,0,0) normal normal 400 46 verdana solid rgb(0,0,0) underline
[8, 656]: Testing
[171, 656]:
[188, 656]: texts
Text: rgb(0,0,0) normal normal 400 52 verdana solid rgb(0,0,0) underline
[8, 693]: Testing
[192, 693]:
[211, 693]: texts
Text: rgb(0,0,0) normal normal 400 58 verdana solid rgb(0,0,0) underline
[8, 731]: Testing
[214, 731]:
[234, 731]: texts
Text: rgb(0,0,0) normal normal 400 64 verdana solid rgb(0,0,0) underline
[8, 768]: Testing
[235, 768]:
[258, 768]: texts
Text: rgb(0,0,0) normal normal 400 70 verdana solid rgb(0,0,0) underline
[8, 805]: Testing
[256, 805]:
[281, 805]: texts
Text: rgb(0,0,0) normal normal 400 76 verdana solid rgb(0,0,0) underline
[8, 843]: Testing
[278, 843]:
[304, 843]: texts
Text: rgb(0,0,0) normal normal 400 16 tahoma solid rgb(0,0,0) underline
[8, 920]: Testing
[60, 920]:
[65, 920]: texts
Text: rgb(0,0,0) normal normal 400 22 tahoma solid rgb(0,0,0) underline
[8, 958]: Testing
[79, 958]:
[86, 958]: texts
Text: rgb(0,0,0) normal normal 400 28 tahoma solid rgb(0,0,0) underline
[8, 995]: Testing
[98, 995]:
[107, 995]: texts
Text: rgb(0,0,0) normal normal 400 34 tahoma solid rgb(0,0,0) underline
[8, 1032]: Testing
[118, 1032]:
[128, 1032]: texts
Text: rgb(0,0,0) normal normal 400 40 tahoma solid rgb(0,0,0) underline
[8, 1070]: Testing
[137, 1070]:
[150, 1070]: texts
Text: rgb(0,0,0) normal normal 400 46 tahoma solid rgb(0,0,0) underline
[8, 1107]: Testing
[156, 1107]:
[171, 1107]: texts
Text: rgb(0,0,0) normal normal 400 52 tahoma solid rgb(0,0,0) underline
[8, 1144]: Testing
[176, 1144]:
[192, 1144]: texts
Text: rgb(0,0,0) normal normal 400 58 tahoma solid rgb(0,0,0) underline
[8, 1182]: Testing
[195, 1182]:
[214, 1182]: texts
Text: rgb(0,0,0) normal normal 400 64 tahoma solid rgb(0,0,0) underline
[8, 1219]: Testing
[215, 1219]:
[235, 1219]: texts
Text: rgb(0,0,0) normal normal 400 70 tahoma solid rgb(0,0,0) underline
[8, 1257]: Testing
[234, 1257]:
[256, 1257]: texts
Text: rgb(0,0,0) normal normal 400 76 tahoma solid rgb(0,0,0) underline
[8, 1294]: Testing
[254, 1294]:
[277, 1294]: texts
Text: rgb(0,0,0) normal normal 400 16 courier new solid rgb(0,0,0) underline
[8, 1372]: Testing
[75, 1372]:
[85, 1372]: texts
Text: rgb(0,0,0) normal normal 400 22 courier new solid rgb(0,0,0) underline
[8, 1409]: Testing
[100, 1409]:
[114, 1409]: texts
Text: rgb(0,0,0) normal normal 400 28 courier new solid rgb(0,0,0) underline
[8, 1447]: Testing
[126, 1447]:
[142, 1447]: texts
Text: rgb(0,0,0) normal normal 400 34 courier new solid rgb(0,0,0) underline
[8, 1484]: Testing
[151, 1484]:
[171, 1484]: texts
Text: rgb(0,0,0) normal normal 400 40 courier new solid rgb(0,0,0) underline
[8, 1522]: Testing
[176, 1522]:
[200, 1522]: texts
Text: rgb(0,0,0) normal normal 400 46 courier new solid rgb(0,0,0) underline
[8, 1560]: Testing
[201, 1560]:
[229, 1560]: texts
Text: rgb(0,0,0) normal normal 400 52 courier new solid rgb(0,0,0) underline
[8, 1597]: Testing
[226, 1597]:
[258, 1597]: texts
Text: rgb(0,0,0) normal normal 400 58 courier new solid rgb(0,0,0) underline
[8, 1635]: Testing
[252, 1635]:
[286, 1635]: texts
Text: rgb(0,0,0) normal normal 400 64 courier new solid rgb(0,0,0) underline
[8, 1673]: Testing
[277, 1673]:
[315, 1673]: texts
Text: rgb(0,0,0) normal normal 400 70 courier new solid rgb(0,0,0) underline
[8, 1710]: Testing
[302, 1710]:
[344, 1710]: texts
Text: rgb(0,0,0) normal normal 400 76 courier new solid rgb(0,0,0) underline
[8, 1748]: Testing
[327, 1748]:
[373, 1748]: texts

View File

@ -1,67 +0,0 @@
Window: [800, 647]
Rectangle: [0, 0, 800, 647] rgba(0,0,0,0)
Opacity: 1
Text: rgb(0,0,0) normal normal 400 22 arial solid rgb(0,0,0) underline
[8, 6]: Testing
[78, 6]:
[84, 6]: texts
Text: rgb(0,0,0) normal normal 400 28 arial solid rgb(0,0,0) underline
[8, 29]: Testing
[97, 29]:
[104, 29]: texts
Text: rgb(0,0,0) normal normal 400 40 arial solid rgb(0,0,0) underline
[8, 58]: Testing
[135, 58]:
[146, 58]: texts
Text: rgb(0,0,0) normal normal 400 64 arial solid rgb(0,0,0) underline
[8, 97]: Testing
[211, 97]:
[228, 97]: texts
Text: rgb(0,0,0) normal normal 400 22 verdana solid rgb(0,0,0) underline
[8, 164]: Testing
[86, 164]:
[94, 164]: texts
Text: rgb(0,0,0) normal normal 400 28 verdana solid rgb(0,0,0) underline
[8, 186]: Testing
[107, 186]:
[117, 186]: texts
Text: rgb(0,0,0) normal normal 400 40 verdana solid rgb(0,0,0) underline
[8, 214]: Testing
[150, 214]:
[164, 214]: texts
Text: rgb(0,0,0) normal normal 400 64 verdana solid rgb(0,0,0) underline
[8, 252]: Testing
[235, 252]:
[258, 252]: texts
Text: rgb(0,0,0) normal normal 400 22 tahoma solid rgb(0,0,0) underline
[8, 322]: Testing
[79, 322]:
[86, 322]: texts
Text: rgb(0,0,0) normal normal 400 28 tahoma solid rgb(0,0,0) underline
[8, 344]: Testing
[98, 344]:
[107, 344]: texts
Text: rgb(0,0,0) normal normal 400 40 tahoma solid rgb(0,0,0) underline
[8, 372]: Testing
[137, 372]:
[150, 372]: texts
Text: rgb(0,0,0) normal normal 400 64 tahoma solid rgb(0,0,0) underline
[8, 410]: Testing
[215, 410]:
[235, 410]: texts
Text: rgb(0,0,0) normal normal 400 22 courier new solid rgb(0,0,0) underline
[8, 480]: Testing
[100, 480]:
[114, 480]: texts
Text: rgb(0,0,0) normal normal 400 28 courier new solid rgb(0,0,0) underline
[8, 503]: Testing
[126, 503]:
[142, 503]: texts
Text: rgb(0,0,0) normal normal 400 40 courier new solid rgb(0,0,0) underline
[8, 531]: Testing
[176, 531]:
[200, 531]: texts
Text: rgb(0,0,0) normal normal 400 64 courier new solid rgb(0,0,0) underline
[8, 571]: Testing
[277, 571]:
[315, 571]: texts

View File

@ -1,42 +0,0 @@
Window: [800, 600]
Rectangle: [0, 0, 800, 600] rgba(0,0,0,0)
Opacity: 1
Clip: Path (Vector(x: 8, y: 108) > Vector(x: 708, y: 108) > Vector(x: 708, y: 156) > Vector(x: 8, y: 156))
Fill: rgb(205,92,92)
Text: rgb(0,0,0) normal normal 400 16 Arial
[8, 123]: First
[44, 123]: level
[81, 123]: content
Text: rgb(0,0,0) normal normal 400 16 Arial
[620, 123]: ,
[630, 123]: ending
[682, 123]: first
Clip: Path (Vector(x: 8, y: 156) > Vector(x: 116, y: 156) > Vector(x: 116, y: 174) > Vector(x: 8, y: 174))
Fill: rgb(188,143,143)
Text: rgb(0,0,0) normal normal 400 16 Arial
[8, 156]: something
[86, 156]: else
Transform: (379, 132) [0.99, 0.13, -0.13, 0.99, 0, 0]
Clip: Path (Vector(x: 138, y: 108) > Vector(x: 621, y: 108) > Vector(x: 621, y: 156) > Vector(x: 138, y: 156))
Fill: rgb(143,188,143)
Shape: rgb(255,0,0) Path (Vector(x: 138, y: 108) > Vector(x: 621, y: 108) > Vector(x: 606, y: 123) > Vector(x: 153, y: 123))
Shape: rgb(255,0,0) Path (Vector(x: 621, y: 108) > Vector(x: 621, y: 156) > Vector(x: 606, y: 141) > Vector(x: 606, y: 123))
Shape: rgb(255,0,0) Path (Vector(x: 621, y: 156) > Vector(x: 138, y: 156) > Vector(x: 153, y: 141) > Vector(x: 606, y: 141))
Shape: rgb(255,0,0) Path (Vector(x: 138, y: 156) > Vector(x: 138, y: 108) > Vector(x: 153, y: 123) > Vector(x: 153, y: 141))
Text: rgb(0,0,0) normal normal 400 16 Arial
[153, 123]: with
[186, 123]: second
[242, 123]: level
[279, 123]: content
Text: rgb(0,0,0) normal normal 400 16 Arial
[493, 123]: ,
[501, 123]: ending
[554, 123]: second
Transform: (414, 132) [0.33, -0.94, 0.94, 0.33, 0, 0]
Clip: Path (Vector(x: 336, y: 123) > Vector(x: 493, y: 123) > Vector(x: 493, y: 141) > Vector(x: 336, y: 141))
Fill: rgb(95,158,160)
Text: rgb(0,0,0) normal normal 400 16 Arial
[336, 123]: and
[367, 123]: third
[403, 123]: level
[440, 123]: content

View File

@ -1,12 +0,0 @@
Window: [800, 600]
Rectangle: [0, 0, 800, 600] rgba(0,0,0,0)
Opacity: 1
Transform: (208, 110) [0.71, -0.71, 0.71, 0.71, 0, 0]
Clip: Path (Vector(x: 108, y: 8) > Vector(x: 308, y: 8) > Vector(x: 308, y: 208) > Vector(x: 108, y: 208))
Draw image: Image ("/tests/assets/image.jpg") (source: [0, 0, 75, 75]) (destination: [0, 0, 75, 75])
Transform: (667, 110) [0, 1, -1, 0, 0, 0]
Clip: Path (Vector(x: 642, y: 8) > Vector(x: 692, y: 8) > Vector(x: 692, y: 208) > Vector(x: 642, y: 208))
Draw image: Image ("/tests/assets/image2.jpg") (source: [0, 0, 75, 75]) (destination: [0, 0, 75, 75])
Transform: (158, 360) [0.71, 0.71, -0.71, 0.71, 0, 0]
Clip: Path (Vector(x: 108, y: 258) > Vector(x: 208, y: 258) > Vector(x: 208, y: 458) > Vector(x: 108, y: 458))
Draw image: Image ("/tests/assets/image.jpg") (source: [0, 0, 75, 75]) (destination: [0, 0, 75, 75])

View File

@ -1,37 +0,0 @@
Window: [800, 600]
Rectangle: [0, 0, 800, 600] rgba(0,0,0,0)
Opacity: 1
Clip: Path (Vector(x: 8, y: 108) > Vector(x: 758, y: 108) > Vector(x: 758, y: 206) > Vector(x: 8, y: 206))
Fill: rgb(205,92,92)
Text: rgb(0,0,0) normal normal 400 16 Arial
[18, 148]: First
[54, 148]: level
[91, 148]: content
Text: rgb(0,0,0) normal normal 400 16 Arial
[660, 148]: ,
[670, 148]: ending
[722, 148]: first
Transform: (404, 157) [1, 0, 0, 1, 125, 0]
Clip: Path (Vector(x: 148, y: 118) > Vector(x: 661, y: 118) > Vector(x: 661, y: 196) > Vector(x: 148, y: 196))
Fill: rgb(143,188,143)
Shape: rgb(255,0,0) Path (Vector(x: 148, y: 118) > Vector(x: 661, y: 118) > Vector(x: 651, y: 128) > Vector(x: 158, y: 128))
Shape: rgb(255,0,0) Path (Vector(x: 661, y: 118) > Vector(x: 661, y: 196) > Vector(x: 651, y: 186) > Vector(x: 651, y: 128))
Shape: rgb(255,0,0) Path (Vector(x: 661, y: 196) > Vector(x: 148, y: 196) > Vector(x: 158, y: 186) > Vector(x: 651, y: 186))
Shape: rgb(255,0,0) Path (Vector(x: 148, y: 196) > Vector(x: 148, y: 118) > Vector(x: 158, y: 128) > Vector(x: 158, y: 186))
Text: rgb(0,0,0) normal normal 400 16 Arial
[168, 148]: with
[201, 148]: second
[257, 148]: level
[294, 148]: content
Text: rgb(0,0,0) normal normal 400 16 Arial
[527, 148]: ,
[537, 148]: ending
[589, 148]: second
Transform: (451, 188) [1, 0, 0, 1, 100, -25]
Clip: Path (Vector(x: 351, y: 138) > Vector(x: 528, y: 138) > Vector(x: 528, y: 176) > Vector(x: 351, y: 176))
Fill: rgb(95,158,160)
Text: rgb(0,0,0) normal normal 400 16 Arial
[361, 148]: and
[392, 148]: third
[428, 148]: level
[465, 148]: content

Some files were not shown because too many files have changed in this diff Show More