Showing preview only (772K chars total). Download the full file or copy to clipboard to get everything.
Repository: alextyner/wasm-canvas
Branch: master
Commit: 38aa03df3c66
Files: 112
Total size: 734.2 KB
Directory structure:
gitextract_wywq0zby/
├── .gitignore
├── .travis.yml
├── LICENSE
├── Makefile
├── README.md
├── docs/
│ └── documentation/
│ ├── annotated.html
│ ├── annotated_dup.js
│ ├── canvas_8c.html
│ ├── canvas_8c.js
│ ├── canvas_8c__incl.md5
│ ├── canvas_8h.html
│ ├── canvas_8h.js
│ ├── canvas_8h__dep__incl.md5
│ ├── canvas_8h__incl.md5
│ ├── canvas_8h_source.html
│ ├── classes.html
│ ├── doxygen.css
│ ├── dynsections.js
│ ├── files.html
│ ├── files.js
│ ├── functions.html
│ ├── functions_vars.html
│ ├── globals.html
│ ├── globals_func.html
│ ├── graph_legend.html
│ ├── graph_legend.md5
│ ├── index.html
│ ├── jquery.js
│ ├── navtree.css
│ ├── navtree.js
│ ├── navtreedata.js
│ ├── navtreeindex0.js
│ ├── resize.js
│ ├── search/
│ │ ├── all_0.html
│ │ ├── all_0.js
│ │ ├── all_1.html
│ │ ├── all_1.js
│ │ ├── all_2.html
│ │ ├── all_2.js
│ │ ├── all_3.html
│ │ ├── all_3.js
│ │ ├── all_4.html
│ │ ├── all_4.js
│ │ ├── all_5.html
│ │ ├── all_5.js
│ │ ├── all_6.html
│ │ ├── all_6.js
│ │ ├── classes_0.html
│ │ ├── classes_0.js
│ │ ├── classes_1.html
│ │ ├── classes_1.js
│ │ ├── files_0.html
│ │ ├── files_0.js
│ │ ├── files_1.html
│ │ ├── files_1.js
│ │ ├── functions_0.html
│ │ ├── functions_0.js
│ │ ├── functions_1.html
│ │ ├── functions_1.js
│ │ ├── functions_2.html
│ │ ├── functions_2.js
│ │ ├── nomatches.html
│ │ ├── search.css
│ │ ├── search.js
│ │ ├── searchdata.js
│ │ ├── variables_0.html
│ │ ├── variables_0.js
│ │ ├── variables_1.html
│ │ ├── variables_1.js
│ │ ├── variables_2.html
│ │ ├── variables_2.js
│ │ ├── variables_3.html
│ │ └── variables_3.js
│ ├── structCanvasRenderingContext2D-members.html
│ ├── structCanvasRenderingContext2D.html
│ ├── structCanvasRenderingContext2D.js
│ ├── structCanvasRenderingContext2D__coll__graph.md5
│ ├── structHTMLCanvasElement-members.html
│ ├── structHTMLCanvasElement.html
│ ├── structHTMLCanvasElement.js
│ ├── structHTMLCanvasElement__coll__graph.md5
│ ├── structHTMLWindow-members.html
│ ├── structHTMLWindow.html
│ ├── structHTMLWindow.js
│ ├── tabs.css
│ ├── window_8c.html
│ ├── window_8c.js
│ ├── window_8c__incl.md5
│ ├── window_8h.html
│ ├── window_8h.js
│ ├── window_8h__dep__incl.md5
│ ├── window_8h__incl.md5
│ └── window_8h_source.html
├── include/
│ ├── canvas.c
│ ├── canvas.h
│ ├── window.c
│ └── window.h
├── src/
│ ├── Doxyfile
│ ├── canvas.c
│ ├── canvas.h
│ ├── window.c
│ └── window.h
└── test/
├── Makefile
├── build/
│ ├── index.html
│ ├── index.js
│ └── index.wasm
├── lib/
│ ├── canvas.c
│ ├── canvas.h
│ ├── window.c
│ └── window.h
└── src/
├── driver.c
└── web/
└── index_template.html
================================================
FILE CONTENTS
================================================
================================================
FILE: .gitignore
================================================
.vscode
# Prerequisites
*.d
# Object files
*.o
*.ko
*.obj
*.elf
# Linker output
*.ilk
*.map
*.exp
# Precompiled Headers
*.gch
*.pch
# Libraries
*.lib
*.a
*.la
*.lo
# Shared objects (inc. Windows DLLs)
*.dll
*.so
*.so.*
*.dylib
# Executables
*.exe
*.out
*.app
*.i*86
*.x86_64
*.hex
# Debug files
*.dSYM/
*.su
*.idb
*.pdb
# Kernel Module Compile Results
*.mod*
*.cmd
.tmp_versions/
modules.order
Module.symvers
Mkfile.old
dkms.conf
================================================
FILE: .travis.yml
================================================
notifications:
email: false
language: c
sudo: required
services:
- docker
before_install:
- docker run -dit --name emscripten -v $(pwd):/src trzeci/emscripten:sdk-incoming-64bit bash
script:
- docker exec -it emscripten make test
================================================
FILE: LICENSE
================================================
MIT License
Copyright (c) 2019 alextyner
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
================================================
FILE: Makefile
================================================
# this target prepares source/header files for distribution and then demos the example project
.PHONY: all
all: dist demo
.PHONY: dist
dist:
cp -f src/canvas.c include/
cp -f src/canvas.h include/
cp -f src/window.c include/
cp -f src/window.h include/
.PHONY: docs
docs: docs/index.html
docs/index.html: dist src/canvas.h src/window.h
cd src && doxygen Doxyfile
# below are targets which delegate to the test project's Makefile
.PHONY: clean
clean:
$(MAKE) -C test clean
.PHONY: populate-test-libs
populate-test-libs:
cp -f src/canvas.c test/lib/
cp -f src/canvas.h test/lib/
cp -f src/window.c test/lib/
cp -f src/window.h test/lib/
.PHONY: demo
demo: populate-test-libs
$(MAKE) -C test demo
.PHONY: test
test: populate-test-libs
$(MAKE) -C test build/index.html
================================================
FILE: README.md
================================================
[](https://travis-ci.com/alextyner/wasm-canvas)
# wasm-canvas
wasm-canvas is a **C99-compliant** layer of abstraction for interacting with the **HTML Canvas API**.
This library is intended for use in projects compiled with [Emscripten](https://emscripten.org/) targeting [WebAssembly](https://webassembly.org/).
## Purpose
### Familiarity
If you've worked with the Canvas API from JavaScript, the syntax for drawing is simple and friendly, as JavaScript tends to be.
Although JavaScript excels in readability, it often lacks in optimizability. Web applications with high-performance requirements may turn to WebAssembly compiled from C.
For applications with visual components, interacting with the Canvas API from C feels unfriendly. This library provides an interface for doing so which more closely resembles the syntax used in JavaScript.
### "Object-Oriented"
The library is written in C, not an object-oriented programming language. However, the design is patterned less like idiomatic C and more like a JavaScript programmer might expect.
Some C idioms still shine through. With no garbage collector or constructors, `create...` and `free...` functions are provided to allocate, set up, and free the object-like structs. The structs are populated primarily by function pointers to make calls as similar to JavaScript as possible. Nearly all member functions require a pointer to their parent struct as the first parameter as there is no implicit `this` present in C.
### Why not C++?
There are a lot of reasons.
## Using the Library
### Include the Headers
Currently, this is not a header-only library. Be sure that for each header included at compile time you introduce the corresponding source file at link time. See *Hello World* below for an example
For the Canvas API and drawing context functionality:
```C
#include "canvas.h"
```
For access to the DOM Window object:
```C
#include "window.h"
```
### Creating a New Canvas
Use the `createCanvas()` function to insert a new canvas element into the HTML.
```C
HTMLCanvasElement *myCanvas = createCanvas("testCanvas");
```
A new `<canvas>` element has dimensions 300Wx150H by default.
### Using an Existing Canvas
If your HTML already has a canvas element you'd like to bind to...
```HTML
<canvas id="someCanvas"></canvas>
```
... use `createCanvas()` with the existing element's id.
```C
HTMLCanvasElement *myCanvas = createCanvas("someCanvas");
```
### Drawing
Most, but not all of the functions available with the 2D rendering context in JavaScript are available.
Some functionality varies from JavaScript. Setting a field of the rendering context like `font`, for example, can be accomplished with a setter `setFont()` function. There is a corresponding getter `getFont()` function to read from the field.
For a full list of drawing functions available, see the [CanvasRenderingContext2D Struct Reference](https://alextyner.github.io/wasm-canvas/documentation/structCanvasRenderingContext2D.html).
### Window()
`#include "window.h"`
The DOM Window object, accessible via the global `window` in JavaScript, provides some useful functionality when used in conjunction with a canvas.
For example, a canvas can be expanded in size to fill the current window.
```C
myCanvas->setHeight(myCanvas, Window()->getInnerHeight());
myCanvas->setWidth(myCanvas, Window()->getInnerWidth());
```
Note that window functions do not require a pointer to the struct as the first parameter. It is assumed that there is only one window, and you are referring to that one.
### Cleaning Up
Some memory is dynamically allocated for each `HTMLCanvasElement` created. Memory is only allocated for the `HTMLWindow` if it is used at least once in your program.
Any function return values that needed to be dynamically allocated will also be freed here.
Free the memory for each canvas using `freeCanvas()`.
```C
freeCanvas(myCanvas);
```
And, if you've used the `Window()` function at least once, free it using `freeWindow()`.
```C
freeWindow(Window());
```
## Documentation
#### wasm-canvas
[View the Doxygen](https://alextyner.github.io/wasm-canvas/documentation/)
#### Emscripten
[Installation Instructions](https://emscripten.org/docs/getting_started/downloads.html)
[Emscripten API](https://emscripten.org/docs/api_reference/)
## Examples
### Hello World
This is how you might draw something simple, like the text "Hello World" on a new canvas.
Although not required, I recommend giving Emscripten at least a basic HTML template to clearly see your canvas. If you choose not to provide a template, the default template does include a canvas element that you can bind to (see *Using the Library* above).
**Directory Listing**
- build/
- canvas.c [wasm-canvas]
- canvas.h [wasm-canvas]
- template.html (optional)
- hello.c
file: **template.html**
```HTML
<!DOCTYPE html>
<html>
<body>
{{{ SCRIPT }}}
</body>
</html>
```
file: **hello.c**
```C
#include "canvas.h"
int main(void) {
HTMLCanvasElement *canvas = createCanvas("myCanvas");
CanvasRenderingContext2D *ctx = canvas->getContext(canvas, "2d");
ctx->setFont(ctx, "48px serif");
ctx->fillText(ctx, "Hello World", 0, 150, -1);
freeCanvas(canvas);
return 0;
}
```
**Compiling & Linking**
```bash
emcc -Wall hello.c canvas.c -o hello.o
emcc --shell-file template.html hello.o -o build/index.html
```
Or, more verbosely:
```bash
emcc -Wall canvas.c -o canvas.o
emcc -Wall -I canvas.h hello.c -o hello.o
emcc --shell-file template.html hello.o canvas.o -o build/index.html
```
Or, less verbosely:
```bash
emcc --shell-file template.html hello.c canvas.c -o build/index.html
```
================================================
FILE: docs/documentation/annotated.html
================================================
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.13"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>wasm-canvas: Class List</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
$(document).ready(initResizable);
</script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
$(document).ready(function() { init_search(); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">wasm-canvas
</div>
</td>
<td> <div id="MSearchBox" class="MSearchBoxInactive">
<span class="left">
<img id="MSearchSelect" src="search/mag_sel.png"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
alt=""/>
<input type="text" id="MSearchField" value="Search" accesskey="S"
onfocus="searchBox.OnSearchFieldFocus(true)"
onblur="searchBox.OnSearchFieldFocus(false)"
onkeyup="searchBox.OnSearchFieldChange(event)"/>
</span><span class="right">
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
</span>
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.13 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
<div id="nav-tree">
<div id="nav-tree-contents">
<div id="nav-sync" class="sync"></div>
</div>
</div>
<div id="splitbar" style="-moz-user-select:none;"
class="ui-resizable-handle">
</div>
</div>
<script type="text/javascript">
$(document).ready(function(){initNavTree('annotated.html','');});
</script>
<div id="doc-content">
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div class="header">
<div class="headertitle">
<div class="title">Class List</div> </div>
</div><!--header-->
<div class="contents">
<div class="textblock">Here are the classes, structs, unions and interfaces with brief descriptions:</div><div class="directory">
<table class="directory">
<tr id="row_0_" class="even"><td class="entry"><span style="width:16px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="structCanvasRenderingContext2D.html" target="_self">CanvasRenderingContext2D</a></td><td class="desc"></td></tr>
<tr id="row_1_"><td class="entry"><span style="width:16px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="structHTMLCanvasElement.html" target="_self">HTMLCanvasElement</a></td><td class="desc"></td></tr>
<tr id="row_2_" class="even"><td class="entry"><span style="width:16px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="structHTMLWindow.html" target="_self">HTMLWindow</a></td><td class="desc"></td></tr>
</table>
</div><!-- directory -->
</div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="footer">Generated by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.13 </li>
</ul>
</div>
</body>
</html>
================================================
FILE: docs/documentation/annotated_dup.js
================================================
var annotated_dup =
[
[ "CanvasRenderingContext2D", "structCanvasRenderingContext2D.html", "structCanvasRenderingContext2D" ],
[ "HTMLCanvasElement", "structHTMLCanvasElement.html", "structHTMLCanvasElement" ],
[ "HTMLWindow", "structHTMLWindow.html", "structHTMLWindow" ]
];
================================================
FILE: docs/documentation/canvas_8c.html
================================================
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.13"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>wasm-canvas: canvas.c File Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
$(document).ready(initResizable);
</script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
$(document).ready(function() { init_search(); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">wasm-canvas
</div>
</td>
<td> <div id="MSearchBox" class="MSearchBoxInactive">
<span class="left">
<img id="MSearchSelect" src="search/mag_sel.png"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
alt=""/>
<input type="text" id="MSearchField" value="Search" accesskey="S"
onfocus="searchBox.OnSearchFieldFocus(true)"
onblur="searchBox.OnSearchFieldFocus(false)"
onkeyup="searchBox.OnSearchFieldChange(event)"/>
</span><span class="right">
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
</span>
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.13 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
<div id="nav-tree">
<div id="nav-tree-contents">
<div id="nav-sync" class="sync"></div>
</div>
</div>
<div id="splitbar" style="-moz-user-select:none;"
class="ui-resizable-handle">
</div>
</div>
<script type="text/javascript">
$(document).ready(function(){initNavTree('canvas_8c.html','');});
</script>
<div id="doc-content">
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div class="header">
<div class="summary">
<a href="#func-members">Functions</a> </div>
<div class="headertitle">
<div class="title">canvas.c File Reference</div> </div>
</div><!--header-->
<div class="contents">
<div class="textblock"><code>#include "<a class="el" href="canvas_8h_source.html">canvas.h</a>"</code><br />
</div><div class="textblock"><div class="dynheader">
Include dependency graph for canvas.c:</div>
<div class="dyncontent">
<div class="center"><img src="canvas_8c__incl.png" border="0" usemap="#canvas_8c" alt=""/></div>
<map name="canvas_8c" id="canvas_8c">
<area shape="rect" id="node2" href="canvas_8h.html" title="HTMLCanvasElement and CanvasRenderingContext2D C-DOM-JS-interaction. " alt="" coords="122,80,197,107"/>
</map>
</div>
</div><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a>
Functions</h2></td></tr>
<tr class="memitem:a69ca7012750d2dac1fd7e35005fdb3d5"><td class="memItemLeft" align="right" valign="top"><a class="el" href="structHTMLCanvasElement.html">HTMLCanvasElement</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="canvas_8c.html#a69ca7012750d2dac1fd7e35005fdb3d5">createCanvas</a> (char *id)</td></tr>
<tr class="separator:a69ca7012750d2dac1fd7e35005fdb3d5"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:af5836d2d5968ae657d880aebca783a81"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="canvas_8c.html#af5836d2d5968ae657d880aebca783a81">freeCanvas</a> (<a class="el" href="structHTMLCanvasElement.html">HTMLCanvasElement</a> *canvas)</td></tr>
<tr class="separator:af5836d2d5968ae657d880aebca783a81"><td class="memSeparator" colspan="2"> </td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"><p>Facilitates interaction with HTML5 Canvas elements in a similar manner to JavaScript via the DOM, but from C to be compiled with Emscripten.</p>
<dl class="section author"><dt>Author</dt><dd>Alex Tyner </dd></dl>
</div><h2 class="groupheader">Function Documentation</h2>
<a id="a69ca7012750d2dac1fd7e35005fdb3d5"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a69ca7012750d2dac1fd7e35005fdb3d5">◆ </a></span>createCanvas()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="structHTMLCanvasElement.html">HTMLCanvasElement</a>* createCanvas </td>
<td>(</td>
<td class="paramtype">char * </td>
<td class="paramname"><em>name</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Creates a struct containing state and OO-like behavior of an HTML canvas structured similarly to how it would be exposed in JavaScript. This struct should be instantiated using the <a class="el" href="canvas_8h.html#ab735af370fd81da5d6f52069283176ad">createCanvas()</a> function, and, when you're done using it, should be freed using the <a class="el" href="canvas_8h.html#af5836d2d5968ae657d880aebca783a81">freeCanvas()</a> function.</p>
<p>After freeing the canvas struct, the DOM element will still be present and active in HTML. It is possible to acquire an existing HTML canvas or reacquire a previously freed canvas by calling <a class="el" href="canvas_8h.html#ab735af370fd81da5d6f52069283176ad">createCanvas()</a> with its matching element id.</p>
<p>A typical use of this function might look like the following: </p><pre class="fragment">HTMLCanvas *canvas = createCanvas("myCanvas");
canvas->setHeight(canvas, 1080);
canvas->setWidth(canvas, 1920);
CanvasRenderingContext2D *ctx = canvas->getContext(canvas, "2d"); // only 2d is supported currently
ctx->fillRect(ctx, 50, 75, 100, 200);
freeCanvas(canvas);
// I've decided I want that canvas again
HTMLCanvas *sameOldCanvas = createCanvas("myCanvas");
int width = sameOldCanvas->getWidth(sameOldCanvas);
freeCanvas(sameOldCanvas);</pre>
</div>
</div>
<a id="af5836d2d5968ae657d880aebca783a81"></a>
<h2 class="memtitle"><span class="permalink"><a href="#af5836d2d5968ae657d880aebca783a81">◆ </a></span>freeCanvas()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void freeCanvas </td>
<td>(</td>
<td class="paramtype"><a class="el" href="structHTMLCanvasElement.html">HTMLCanvasElement</a> * </td>
<td class="paramname"><em>canvas</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Frees the dynamically allocated <a class="el" href="structHTMLCanvasElement.html">HTMLCanvasElement</a> and any dynamically allocated state as necessary. The DOM canvas element will still exist in HTML after freeing the struct. </p>
</div>
</div>
</div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="canvas_8c.html">canvas.c</a></li>
<li class="footer">Generated by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.13 </li>
</ul>
</div>
</body>
</html>
================================================
FILE: docs/documentation/canvas_8c.js
================================================
var canvas_8c =
[
[ "createCanvas", "canvas_8c.html#a69ca7012750d2dac1fd7e35005fdb3d5", null ],
[ "freeCanvas", "canvas_8c.html#af5836d2d5968ae657d880aebca783a81", null ]
];
================================================
FILE: docs/documentation/canvas_8c__incl.md5
================================================
7f33409a509a14f48c500b0e0d42c912
================================================
FILE: docs/documentation/canvas_8h.html
================================================
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.13"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>wasm-canvas: canvas.h File Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
$(document).ready(initResizable);
</script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
$(document).ready(function() { init_search(); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">wasm-canvas
</div>
</td>
<td> <div id="MSearchBox" class="MSearchBoxInactive">
<span class="left">
<img id="MSearchSelect" src="search/mag_sel.png"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
alt=""/>
<input type="text" id="MSearchField" value="Search" accesskey="S"
onfocus="searchBox.OnSearchFieldFocus(true)"
onblur="searchBox.OnSearchFieldFocus(false)"
onkeyup="searchBox.OnSearchFieldChange(event)"/>
</span><span class="right">
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
</span>
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.13 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
<div id="nav-tree">
<div id="nav-tree-contents">
<div id="nav-sync" class="sync"></div>
</div>
</div>
<div id="splitbar" style="-moz-user-select:none;"
class="ui-resizable-handle">
</div>
</div>
<script type="text/javascript">
$(document).ready(function(){initNavTree('canvas_8h.html','');});
</script>
<div id="doc-content">
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div class="header">
<div class="summary">
<a href="#nested-classes">Classes</a> |
<a href="#typedef-members">Typedefs</a> |
<a href="#func-members">Functions</a> </div>
<div class="headertitle">
<div class="title">canvas.h File Reference</div> </div>
</div><!--header-->
<div class="contents">
<p><a class="el" href="structHTMLCanvasElement.html">HTMLCanvasElement</a> and <a class="el" href="structCanvasRenderingContext2D.html">CanvasRenderingContext2D</a> C-DOM-JS-interaction.
<a href="#details">More...</a></p>
<div class="textblock"><code>#include <emscripten.h></code><br />
<code>#include <string.h></code><br />
<code>#include <stdlib.h></code><br />
</div><div class="textblock"><div class="dynheader">
Include dependency graph for canvas.h:</div>
<div class="dyncontent">
<div class="center"><img src="canvas_8h__incl.png" border="0" usemap="#canvas_8h" alt=""/></div>
</div>
</div><div class="textblock"><div class="dynheader">
This graph shows which files directly or indirectly include this file:</div>
<div class="dyncontent">
<div class="center"><img src="canvas_8h__dep__incl.png" border="0" usemap="#canvas_8hdep" alt=""/></div>
<map name="canvas_8hdep" id="canvas_8hdep">
<area shape="rect" id="node2" href="canvas_8c.html" title="canvas.c" alt="" coords="5,80,80,107"/>
</map>
</div>
</div>
<p><a href="canvas_8h_source.html">Go to the source code of this file.</a></p>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="nested-classes"></a>
Classes</h2></td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structCanvasRenderingContext2D.html">CanvasRenderingContext2D</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structHTMLCanvasElement.html">HTMLCanvasElement</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="typedef-members"></a>
Typedefs</h2></td></tr>
<tr class="memitem:accf2b590b376ab51224780021ad01278"><td class="memItemLeft" align="right" valign="top"><a id="accf2b590b376ab51224780021ad01278"></a>
typedef struct <a class="el" href="structHTMLCanvasElement.html">HTMLCanvasElement</a> </td><td class="memItemRight" valign="bottom"><b>HTMLCanvasElement</b></td></tr>
<tr class="separator:accf2b590b376ab51224780021ad01278"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:ace48b708170a923f0327dd4638733a98"><td class="memItemLeft" align="right" valign="top"><a id="ace48b708170a923f0327dd4638733a98"></a>
typedef struct <a class="el" href="structCanvasRenderingContext2D.html">CanvasRenderingContext2D</a> </td><td class="memItemRight" valign="bottom"><b>CanvasRenderingContext2D</b></td></tr>
<tr class="separator:ace48b708170a923f0327dd4638733a98"><td class="memSeparator" colspan="2"> </td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a>
Functions</h2></td></tr>
<tr class="memitem:ab735af370fd81da5d6f52069283176ad"><td class="memItemLeft" align="right" valign="top"><a class="el" href="structHTMLCanvasElement.html">HTMLCanvasElement</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="canvas_8h.html#ab735af370fd81da5d6f52069283176ad">createCanvas</a> (char *name)</td></tr>
<tr class="separator:ab735af370fd81da5d6f52069283176ad"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:af5836d2d5968ae657d880aebca783a81"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="canvas_8h.html#af5836d2d5968ae657d880aebca783a81">freeCanvas</a> (<a class="el" href="structHTMLCanvasElement.html">HTMLCanvasElement</a> *canvas)</td></tr>
<tr class="separator:af5836d2d5968ae657d880aebca783a81"><td class="memSeparator" colspan="2"> </td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"><p><a class="el" href="structHTMLCanvasElement.html">HTMLCanvasElement</a> and <a class="el" href="structCanvasRenderingContext2D.html">CanvasRenderingContext2D</a> C-DOM-JS-interaction. </p>
<p>Facilitates interaction with HTML5 Canvas elements in a similar manner to JavaScript via the DOM, but from C to be compiled with Emscripten. </p><dl class="section author"><dt>Author</dt><dd>Alex Tyner </dd></dl>
</div><h2 class="groupheader">Function Documentation</h2>
<a id="ab735af370fd81da5d6f52069283176ad"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ab735af370fd81da5d6f52069283176ad">◆ </a></span>createCanvas()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="structHTMLCanvasElement.html">HTMLCanvasElement</a>* createCanvas </td>
<td>(</td>
<td class="paramtype">char * </td>
<td class="paramname"><em>name</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Creates a struct containing state and OO-like behavior of an HTML canvas structured similarly to how it would be exposed in JavaScript. This struct should be instantiated using the <a class="el" href="canvas_8h.html#ab735af370fd81da5d6f52069283176ad">createCanvas()</a> function, and, when you're done using it, should be freed using the <a class="el" href="canvas_8h.html#af5836d2d5968ae657d880aebca783a81">freeCanvas()</a> function.</p>
<p>After freeing the canvas struct, the DOM element will still be present and active in HTML. It is possible to acquire an existing HTML canvas or reacquire a previously freed canvas by calling <a class="el" href="canvas_8h.html#ab735af370fd81da5d6f52069283176ad">createCanvas()</a> with its matching element id.</p>
<p>A typical use of this function might look like the following: </p><pre class="fragment">HTMLCanvas *canvas = createCanvas("myCanvas");
canvas->setHeight(canvas, 1080);
canvas->setWidth(canvas, 1920);
CanvasRenderingContext2D *ctx = canvas->getContext(canvas, "2d"); // only 2d is supported currently
ctx->fillRect(ctx, 50, 75, 100, 200);
freeCanvas(canvas);
// I've decided I want that canvas again
HTMLCanvas *sameOldCanvas = createCanvas("myCanvas");
int width = sameOldCanvas->getWidth(sameOldCanvas);
freeCanvas(sameOldCanvas);</pre>
</div>
</div>
<a id="af5836d2d5968ae657d880aebca783a81"></a>
<h2 class="memtitle"><span class="permalink"><a href="#af5836d2d5968ae657d880aebca783a81">◆ </a></span>freeCanvas()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void freeCanvas </td>
<td>(</td>
<td class="paramtype"><a class="el" href="structHTMLCanvasElement.html">HTMLCanvasElement</a> * </td>
<td class="paramname"><em>canvas</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Frees the dynamically allocated <a class="el" href="structHTMLCanvasElement.html">HTMLCanvasElement</a> and any dynamically allocated state as necessary. The DOM canvas element will still exist in HTML after freeing the struct. </p>
</div>
</div>
</div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="canvas_8h.html">canvas.h</a></li>
<li class="footer">Generated by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.13 </li>
</ul>
</div>
</body>
</html>
================================================
FILE: docs/documentation/canvas_8h.js
================================================
var canvas_8h =
[
[ "CanvasRenderingContext2D", "structCanvasRenderingContext2D.html", "structCanvasRenderingContext2D" ],
[ "HTMLCanvasElement", "structHTMLCanvasElement.html", "structHTMLCanvasElement" ],
[ "CanvasRenderingContext2D", "canvas_8h.html#ace48b708170a923f0327dd4638733a98", null ],
[ "HTMLCanvasElement", "canvas_8h.html#accf2b590b376ab51224780021ad01278", null ],
[ "createCanvas", "canvas_8h.html#ab735af370fd81da5d6f52069283176ad", null ],
[ "freeCanvas", "canvas_8h.html#af5836d2d5968ae657d880aebca783a81", null ]
];
================================================
FILE: docs/documentation/canvas_8h__dep__incl.md5
================================================
9fec2122c1c9f713ea0a17ef3ccca9fc
================================================
FILE: docs/documentation/canvas_8h__incl.md5
================================================
2f7835a013fac345c8e8d887f34da735
================================================
FILE: docs/documentation/canvas_8h_source.html
================================================
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.13"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>wasm-canvas: canvas.h Source File</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
$(document).ready(initResizable);
</script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
$(document).ready(function() { init_search(); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">wasm-canvas
</div>
</td>
<td> <div id="MSearchBox" class="MSearchBoxInactive">
<span class="left">
<img id="MSearchSelect" src="search/mag_sel.png"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
alt=""/>
<input type="text" id="MSearchField" value="Search" accesskey="S"
onfocus="searchBox.OnSearchFieldFocus(true)"
onblur="searchBox.OnSearchFieldFocus(false)"
onkeyup="searchBox.OnSearchFieldChange(event)"/>
</span><span class="right">
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
</span>
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.13 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
<div id="nav-tree">
<div id="nav-tree-contents">
<div id="nav-sync" class="sync"></div>
</div>
</div>
<div id="splitbar" style="-moz-user-select:none;"
class="ui-resizable-handle">
</div>
</div>
<script type="text/javascript">
$(document).ready(function(){initNavTree('canvas_8h_source.html','');});
</script>
<div id="doc-content">
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div class="header">
<div class="headertitle">
<div class="title">canvas.h</div> </div>
</div><!--header-->
<div class="contents">
<a href="canvas_8h.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> </div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="preprocessor">#ifndef CANVAS_H</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="preprocessor">#define CANVAS_H</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> </div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="preprocessor">#include <emscripten.h></span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="preprocessor">#include <string.h></span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="preprocessor">#include <stdlib.h></span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> </div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="keyword">typedef</span> <span class="keyword">struct </span><a class="code" href="structHTMLCanvasElement.html">HTMLCanvasElement</a> <a class="code" href="structHTMLCanvasElement.html">HTMLCanvasElement</a>;</div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="keyword">typedef</span> <span class="keyword">struct </span><a class="code" href="structCanvasRenderingContext2D.html">CanvasRenderingContext2D</a> <a class="code" href="structCanvasRenderingContext2D.html">CanvasRenderingContext2D</a>;</div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> </div><div class="line"><a name="l00054"></a><span class="lineno"><a class="line" href="structCanvasRenderingContext2D.html"> 54</a></span> <span class="keyword">struct </span><a class="code" href="structCanvasRenderingContext2D.html">CanvasRenderingContext2D</a></div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span> {</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>  <span class="keyword">struct</span></div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>  {</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>  <a class="code" href="structHTMLCanvasElement.html">HTMLCanvasElement</a> *canvas;</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>  <span class="keywordtype">char</span> contextType[19];</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>  <span class="keywordtype">char</span> *font;</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>  <span class="keywordtype">char</span> *textAlign;</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>  <span class="keywordtype">char</span> *fillStyle;</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>  <span class="keywordtype">char</span> *strokeStyle;</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>  <span class="keywordtype">char</span> *lineCap;</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>  <span class="keywordtype">char</span> *lineJoin;</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>  <span class="keywordtype">char</span> *globalCompositeOperation;</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>  } <span class="keyword">private</span>;</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>  void (*clearRect)(<a class="code" href="structCanvasRenderingContext2D.html">CanvasRenderingContext2D</a> *<span class="keyword">this</span>, <span class="keywordtype">double</span> x, <span class="keywordtype">double</span> y, <span class="keywordtype">double</span> width, <span class="keywordtype">double</span> height);</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>  void (*fillRect)(<a class="code" href="structCanvasRenderingContext2D.html">CanvasRenderingContext2D</a> *<span class="keyword">this</span>, <span class="keywordtype">double</span> x, <span class="keywordtype">double</span> y, <span class="keywordtype">double</span> width, <span class="keywordtype">double</span> height);</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>  void (*strokeRect)(<a class="code" href="structCanvasRenderingContext2D.html">CanvasRenderingContext2D</a> *<span class="keyword">this</span>, <span class="keywordtype">double</span> x, <span class="keywordtype">double</span> y, <span class="keywordtype">double</span> width, <span class="keywordtype">double</span> height);</div><div class="line"><a name="l00077"></a><span class="lineno"><a class="line" href="structCanvasRenderingContext2D.html#a7dae74c3217f796012b484b0d3892338"> 77</a></span>  void (*<a class="code" href="structCanvasRenderingContext2D.html#a7dae74c3217f796012b484b0d3892338">fillText</a>)(<a class="code" href="structCanvasRenderingContext2D.html">CanvasRenderingContext2D</a> *<span class="keyword">this</span>, <span class="keywordtype">char</span> *text, <span class="keywordtype">double</span> x, <span class="keywordtype">double</span> y, <span class="keywordtype">double</span> maxWidth);</div><div class="line"><a name="l00079"></a><span class="lineno"><a class="line" href="structCanvasRenderingContext2D.html#a6e65732b6f74b45cb243c4bfbb28c179"> 79</a></span>  void (*<a class="code" href="structCanvasRenderingContext2D.html#a6e65732b6f74b45cb243c4bfbb28c179">strokeText</a>)(<a class="code" href="structCanvasRenderingContext2D.html">CanvasRenderingContext2D</a> *<span class="keyword">this</span>, <span class="keywordtype">char</span> *text, <span class="keywordtype">double</span> x, <span class="keywordtype">double</span> y, <span class="keywordtype">double</span> maxWidth);</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>  <span class="comment">/* TextMetrics *(*measureText)(CanvasRenderingContext2D *this, char *text); */</span> <span class="comment">// that's a whole can of worms</span></div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>  void (*setLineWidth)(<a class="code" href="structCanvasRenderingContext2D.html">CanvasRenderingContext2D</a> *<span class="keyword">this</span>, <span class="keywordtype">double</span> value);</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>  double (*getLineWidth)(<a class="code" href="structCanvasRenderingContext2D.html">CanvasRenderingContext2D</a> *<span class="keyword">this</span>);</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>  void (*setLineCap)(<a class="code" href="structCanvasRenderingContext2D.html">CanvasRenderingContext2D</a> *<span class="keyword">this</span>, <span class="keywordtype">char</span> *type);</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>  <span class="keywordtype">char</span> *(*getLineCap)(<a class="code" href="structCanvasRenderingContext2D.html">CanvasRenderingContext2D</a> *<span class="keyword">this</span>);</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>  void (*setLineJoin)(<a class="code" href="structCanvasRenderingContext2D.html">CanvasRenderingContext2D</a> *<span class="keyword">this</span>, <span class="keywordtype">char</span> *type);</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>  <span class="keywordtype">char</span> *(*getLineJoin)(CanvasRenderingContext2D *<span class="keyword">this</span>);</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>  <span class="keywordtype">char</span> *(*getFont)(CanvasRenderingContext2D *<span class="keyword">this</span>);</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>  void (*setFont)(CanvasRenderingContext2D *<span class="keyword">this</span>, <span class="keywordtype">char</span> *value);</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>  void (*setTextAlign)(CanvasRenderingContext2D *<span class="keyword">this</span>, <span class="keywordtype">char</span> *value);</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>  <span class="keywordtype">char</span> *(*getTextAlign)(CanvasRenderingContext2D *<span class="keyword">this</span>);</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>  void (*setFillStyle)(CanvasRenderingContext2D *<span class="keyword">this</span>, <span class="keywordtype">char</span> *value);</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>  <span class="keywordtype">char</span> *(*getFillStyle)(CanvasRenderingContext2D *<span class="keyword">this</span>);</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>  void (*setStrokeStyle)(CanvasRenderingContext2D *<span class="keyword">this</span>, <span class="keywordtype">char</span> *value);</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>  <span class="keywordtype">char</span> *(*getStrokeStyle)(CanvasRenderingContext2D *<span class="keyword">this</span>);</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>  void (*beginPath)(CanvasRenderingContext2D *<span class="keyword">this</span>);</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>  void (*closePath)(CanvasRenderingContext2D *<span class="keyword">this</span>);</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>  void (*moveTo)(CanvasRenderingContext2D *<span class="keyword">this</span>, <span class="keywordtype">double</span> x, <span class="keywordtype">double</span> y);</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>  void (*lineTo)(CanvasRenderingContext2D *<span class="keyword">this</span>, <span class="keywordtype">double</span> x, <span class="keywordtype">double</span> y);</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>  void (*bezierCurveTo)(CanvasRenderingContext2D *<span class="keyword">this</span>, <span class="keywordtype">double</span> cp1x, <span class="keywordtype">double</span> cp1y, <span class="keywordtype">double</span> cp2x, <span class="keywordtype">double</span> cp2y, <span class="keywordtype">double</span> x, <span class="keywordtype">double</span> y);</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>  void (*quadraticCurveTo)(CanvasRenderingContext2D *<span class="keyword">this</span>, <span class="keywordtype">double</span> cpx, <span class="keywordtype">double</span> cpy, <span class="keywordtype">double</span> x, <span class="keywordtype">double</span> y);</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>  void (*arc)(CanvasRenderingContext2D *<span class="keyword">this</span>, <span class="keywordtype">double</span> x, <span class="keywordtype">double</span> y, <span class="keywordtype">double</span> radius, <span class="keywordtype">double</span> startAngle, <span class="keywordtype">double</span> endAngle);</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>  void (*arcTo)(CanvasRenderingContext2D *<span class="keyword">this</span>, <span class="keywordtype">double</span> x1, <span class="keywordtype">double</span> y1, <span class="keywordtype">double</span> x2, <span class="keywordtype">double</span> y2, <span class="keywordtype">double</span> radius);</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>  void (*ellipse)(CanvasRenderingContext2D *<span class="keyword">this</span>, <span class="keywordtype">double</span> x, <span class="keywordtype">double</span> y, <span class="keywordtype">double</span> radiusX, <span class="keywordtype">double</span> radiusY, <span class="keywordtype">double</span> rotation, <span class="keywordtype">double</span> startAngle, <span class="keywordtype">double</span> endAngle);</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>  void (*rect)(CanvasRenderingContext2D *<span class="keyword">this</span>, <span class="keywordtype">double</span> x, <span class="keywordtype">double</span> y, <span class="keywordtype">double</span> width, <span class="keywordtype">double</span> height);</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>  void (*fill)(CanvasRenderingContext2D *<span class="keyword">this</span>);</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>  void (*stroke)(CanvasRenderingContext2D *<span class="keyword">this</span>);</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>  void (*clip)(CanvasRenderingContext2D *<span class="keyword">this</span>);</div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>  int (*isPointInPath)(CanvasRenderingContext2D *<span class="keyword">this</span>, <span class="keywordtype">double</span> x, <span class="keywordtype">double</span> y);</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>  int (*isPointInStroke)(CanvasRenderingContext2D *<span class="keyword">this</span>, <span class="keywordtype">double</span> x, <span class="keywordtype">double</span> y);</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>  void (*rotate)(CanvasRenderingContext2D *<span class="keyword">this</span>, <span class="keywordtype">double</span> angle);</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>  void (*scale)(CanvasRenderingContext2D *<span class="keyword">this</span>, <span class="keywordtype">double</span> x, <span class="keywordtype">double</span> y);</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>  void (*translate)(CanvasRenderingContext2D *<span class="keyword">this</span>, <span class="keywordtype">double</span> x, <span class="keywordtype">double</span> y);</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>  void (*transform)(CanvasRenderingContext2D *<span class="keyword">this</span>, <span class="keywordtype">double</span> a, <span class="keywordtype">double</span> b, <span class="keywordtype">double</span> c, <span class="keywordtype">double</span> d, <span class="keywordtype">double</span> e, <span class="keywordtype">double</span> f);</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>  void (*setTransform)(CanvasRenderingContext2D *<span class="keyword">this</span>, <span class="keywordtype">double</span> a, <span class="keywordtype">double</span> b, <span class="keywordtype">double</span> c, <span class="keywordtype">double</span> d, <span class="keywordtype">double</span> e, <span class="keywordtype">double</span> f);</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>  void (*resetTransform)(CanvasRenderingContext2D *<span class="keyword">this</span>);</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>  void (*setGlobalAlpha)(CanvasRenderingContext2D *<span class="keyword">this</span>, <span class="keywordtype">double</span> value);</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>  double (*getGlobalAlpha)(CanvasRenderingContext2D *<span class="keyword">this</span>);</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>  void (*setGlobalCompositeOperation)(CanvasRenderingContext2D *<span class="keyword">this</span>, <span class="keywordtype">char</span> *value);</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>  <span class="keywordtype">char</span> *(*getGlobalCompositeOperation)(CanvasRenderingContext2D *<span class="keyword">this</span>);</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>  void (*save)(CanvasRenderingContext2D *<span class="keyword">this</span>);</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>  void (*restore)(CanvasRenderingContext2D *<span class="keyword">this</span>);</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>  <a class="code" href="structHTMLCanvasElement.html">HTMLCanvasElement</a> *(*getCanvas)(CanvasRenderingContext2D *<span class="keyword">this</span>);</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span> };</div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span> </div><div class="line"><a name="l00147"></a><span class="lineno"><a class="line" href="structHTMLCanvasElement.html"> 147</a></span> <span class="keyword">struct </span><a class="code" href="structHTMLCanvasElement.html">HTMLCanvasElement</a></div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span> {</div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span>  <span class="keyword">struct</span></div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span>  {</div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span>  <a class="code" href="structCanvasRenderingContext2D.html">CanvasRenderingContext2D</a> *ctx;</div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span>  <span class="keywordtype">char</span> *id;</div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span>  } <span class="keyword">private</span>;</div><div class="line"><a name="l00158"></a><span class="lineno"><a class="line" href="structHTMLCanvasElement.html#ac04dd675f5069e9d7c314ba62bf737db"> 158</a></span>  int (*getHeight)(<a class="code" href="structHTMLCanvasElement.html">HTMLCanvasElement</a> *<span class="keyword">this</span>);</div><div class="line"><a name="l00163"></a><span class="lineno"><a class="line" href="structHTMLCanvasElement.html#a0bd402f66362c5b196658c8eb44558b3"> 163</a></span>  int (*getWidth)(<a class="code" href="structHTMLCanvasElement.html">HTMLCanvasElement</a> *<span class="keyword">this</span>);</div><div class="line"><a name="l00168"></a><span class="lineno"><a class="line" href="structHTMLCanvasElement.html#a2620a16349bc3a25332b5e4f451b6777"> 168</a></span>  void (*setHeight)(<a class="code" href="structHTMLCanvasElement.html">HTMLCanvasElement</a> *<span class="keyword">this</span>, <span class="keywordtype">int</span> height);</div><div class="line"><a name="l00173"></a><span class="lineno"><a class="line" href="structHTMLCanvasElement.html#a6aa4f4938b677e7a1eadf6da4abc649a"> 173</a></span>  void (*setWidth)(<a class="code" href="structHTMLCanvasElement.html">HTMLCanvasElement</a> *<span class="keyword">this</span>, <span class="keywordtype">int</span> width);</div><div class="line"><a name="l00180"></a><span class="lineno"><a class="line" href="structHTMLCanvasElement.html#a334cd20da0561ba503401b636c819afa"> 180</a></span>  <a class="code" href="structCanvasRenderingContext2D.html">CanvasRenderingContext2D</a> *(*getContext)(<a class="code" href="structHTMLCanvasElement.html">HTMLCanvasElement</a> *<span class="keyword">this</span>, <span class="keywordtype">char</span> *contextType);</div><div class="line"><a name="l00181"></a><span class="lineno"> 181</span> };</div><div class="line"><a name="l00182"></a><span class="lineno"> 182</span> </div><div class="line"><a name="l00206"></a><span class="lineno"> 206</span> <a class="code" href="structHTMLCanvasElement.html">HTMLCanvasElement</a> *<a class="code" href="canvas_8h.html#ab735af370fd81da5d6f52069283176ad">createCanvas</a>(<span class="keywordtype">char</span> *name);</div><div class="line"><a name="l00207"></a><span class="lineno"> 207</span> </div><div class="line"><a name="l00213"></a><span class="lineno"> 213</span> <span class="keywordtype">void</span> <a class="code" href="canvas_8h.html#af5836d2d5968ae657d880aebca783a81">freeCanvas</a>(<a class="code" href="structHTMLCanvasElement.html">HTMLCanvasElement</a> *canvas);</div><div class="line"><a name="l00214"></a><span class="lineno"> 214</span> </div><div class="line"><a name="l00215"></a><span class="lineno"> 215</span> <span class="preprocessor">#endif</span></div><div class="ttc" id="structCanvasRenderingContext2D_html_a7dae74c3217f796012b484b0d3892338"><div class="ttname"><a href="structCanvasRenderingContext2D.html#a7dae74c3217f796012b484b0d3892338">CanvasRenderingContext2D::fillText</a></div><div class="ttdeci">void(* fillText)(CanvasRenderingContext2D *this, char *text, double x, double y, double maxWidth)</div><div class="ttdef"><b>Definition:</b> canvas.h:77</div></div>
<div class="ttc" id="canvas_8h_html_ab735af370fd81da5d6f52069283176ad"><div class="ttname"><a href="canvas_8h.html#ab735af370fd81da5d6f52069283176ad">createCanvas</a></div><div class="ttdeci">HTMLCanvasElement * createCanvas(char *name)</div><div class="ttdef"><b>Definition:</b> canvas.c:49</div></div>
<div class="ttc" id="structCanvasRenderingContext2D_html"><div class="ttname"><a href="structCanvasRenderingContext2D.html">CanvasRenderingContext2D</a></div><div class="ttdef"><b>Definition:</b> canvas.h:54</div></div>
<div class="ttc" id="canvas_8h_html_af5836d2d5968ae657d880aebca783a81"><div class="ttname"><a href="canvas_8h.html#af5836d2d5968ae657d880aebca783a81">freeCanvas</a></div><div class="ttdeci">void freeCanvas(HTMLCanvasElement *canvas)</div><div class="ttdef"><b>Definition:</b> canvas.c:535</div></div>
<div class="ttc" id="structHTMLCanvasElement_html"><div class="ttname"><a href="structHTMLCanvasElement.html">HTMLCanvasElement</a></div><div class="ttdef"><b>Definition:</b> canvas.h:147</div></div>
<div class="ttc" id="structCanvasRenderingContext2D_html_a6e65732b6f74b45cb243c4bfbb28c179"><div class="ttname"><a href="structCanvasRenderingContext2D.html#a6e65732b6f74b45cb243c4bfbb28c179">CanvasRenderingContext2D::strokeText</a></div><div class="ttdeci">void(* strokeText)(CanvasRenderingContext2D *this, char *text, double x, double y, double maxWidth)</div><div class="ttdef"><b>Definition:</b> canvas.h:79</div></div>
</div><!-- fragment --></div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="canvas_8h.html">canvas.h</a></li>
<li class="footer">Generated by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.13 </li>
</ul>
</div>
</body>
</html>
================================================
FILE: docs/documentation/classes.html
================================================
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.13"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>wasm-canvas: Class Index</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
$(document).ready(initResizable);
</script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
$(document).ready(function() { init_search(); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">wasm-canvas
</div>
</td>
<td> <div id="MSearchBox" class="MSearchBoxInactive">
<span class="left">
<img id="MSearchSelect" src="search/mag_sel.png"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
alt=""/>
<input type="text" id="MSearchField" value="Search" accesskey="S"
onfocus="searchBox.OnSearchFieldFocus(true)"
onblur="searchBox.OnSearchFieldFocus(false)"
onkeyup="searchBox.OnSearchFieldChange(event)"/>
</span><span class="right">
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
</span>
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.13 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
<div id="nav-tree">
<div id="nav-tree-contents">
<div id="nav-sync" class="sync"></div>
</div>
</div>
<div id="splitbar" style="-moz-user-select:none;"
class="ui-resizable-handle">
</div>
</div>
<script type="text/javascript">
$(document).ready(function(){initNavTree('classes.html','');});
</script>
<div id="doc-content">
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div class="header">
<div class="headertitle">
<div class="title">Class Index</div> </div>
</div><!--header-->
<div class="contents">
<div class="qindex"><a class="qindex" href="#letter_c">c</a> | <a class="qindex" href="#letter_h">h</a></div>
<table class="classindex">
<tr><td rowspan="2" valign="bottom"><a name="letter_c"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">  c  </div></td></tr></table>
</td><td rowspan="2" valign="bottom"><a name="letter_h"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">  h  </div></td></tr></table>
</td><td valign="top"><a class="el" href="structHTMLWindow.html">HTMLWindow</a>   </td></tr>
<tr><td></td></tr>
<tr><td valign="top"><a class="el" href="structCanvasRenderingContext2D.html">CanvasRenderingContext2D</a>   </td><td valign="top"><a class="el" href="structHTMLCanvasElement.html">HTMLCanvasElement</a>   </td><td></td></tr>
<tr><td></td><td></td><td></td></tr>
</table>
<div class="qindex"><a class="qindex" href="#letter_c">c</a> | <a class="qindex" href="#letter_h">h</a></div>
</div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="footer">Generated by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.13 </li>
</ul>
</div>
</body>
</html>
================================================
FILE: docs/documentation/doxygen.css
================================================
/* The standard CSS for doxygen 1.8.13 */
body, table, div, p, dl {
font: 400 14px/22px Roboto,sans-serif;
}
p.reference, p.definition {
font: 400 14px/22px Roboto,sans-serif;
}
/* @group Heading Levels */
h1.groupheader {
font-size: 150%;
}
.title {
font: 400 14px/28px Roboto,sans-serif;
font-size: 150%;
font-weight: bold;
margin: 10px 2px;
}
h2.groupheader {
border-bottom: 1px solid #879ECB;
color: #354C7B;
font-size: 150%;
font-weight: normal;
margin-top: 1.75em;
padding-top: 8px;
padding-bottom: 4px;
width: 100%;
}
h3.groupheader {
font-size: 100%;
}
h1, h2, h3, h4, h5, h6 {
-webkit-transition: text-shadow 0.5s linear;
-moz-transition: text-shadow 0.5s linear;
-ms-transition: text-shadow 0.5s linear;
-o-transition: text-shadow 0.5s linear;
transition: text-shadow 0.5s linear;
margin-right: 15px;
}
h1.glow, h2.glow, h3.glow, h4.glow, h5.glow, h6.glow {
text-shadow: 0 0 15px cyan;
}
dt {
font-weight: bold;
}
div.multicol {
-moz-column-gap: 1em;
-webkit-column-gap: 1em;
-moz-column-count: 3;
-webkit-column-count: 3;
}
p.startli, p.startdd {
margin-top: 2px;
}
p.starttd {
margin-top: 0px;
}
p.endli {
margin-bottom: 0px;
}
p.enddd {
margin-bottom: 4px;
}
p.endtd {
margin-bottom: 2px;
}
/* @end */
caption {
font-weight: bold;
}
span.legend {
font-size: 70%;
text-align: center;
}
h3.version {
font-size: 90%;
text-align: center;
}
div.qindex, div.navtab{
background-color: #EBEFF6;
border: 1px solid #A3B4D7;
text-align: center;
}
div.qindex, div.navpath {
width: 100%;
line-height: 140%;
}
div.navtab {
margin-right: 15px;
}
/* @group Link Styling */
a {
color: #3D578C;
font-weight: normal;
text-decoration: none;
}
.contents a:visited {
color: #4665A2;
}
a:hover {
text-decoration: underline;
}
a.qindex {
font-weight: bold;
}
a.qindexHL {
font-weight: bold;
background-color: #9CAFD4;
color: #ffffff;
border: 1px double #869DCA;
}
.contents a.qindexHL:visited {
color: #ffffff;
}
a.el {
font-weight: bold;
}
a.elRef {
}
a.code, a.code:visited, a.line, a.line:visited {
color: #4665A2;
}
a.codeRef, a.codeRef:visited, a.lineRef, a.lineRef:visited {
color: #4665A2;
}
/* @end */
dl.el {
margin-left: -1cm;
}
pre.fragment {
border: 1px solid #C4CFE5;
background-color: #FBFCFD;
padding: 4px 6px;
margin: 4px 8px 4px 2px;
overflow: auto;
word-wrap: break-word;
font-size: 9pt;
line-height: 125%;
font-family: monospace, fixed;
font-size: 105%;
}
div.fragment {
padding: 0px;
margin: 4px 8px 4px 2px;
background-color: #FBFCFD;
border: 1px solid #C4CFE5;
}
div.line {
font-family: monospace, fixed;
font-size: 13px;
min-height: 13px;
line-height: 1.0;
text-wrap: unrestricted;
white-space: -moz-pre-wrap; /* Moz */
white-space: -pre-wrap; /* Opera 4-6 */
white-space: -o-pre-wrap; /* Opera 7 */
white-space: pre-wrap; /* CSS3 */
word-wrap: break-word; /* IE 5.5+ */
text-indent: -53px;
padding-left: 53px;
padding-bottom: 0px;
margin: 0px;
-webkit-transition-property: background-color, box-shadow;
-webkit-transition-duration: 0.5s;
-moz-transition-property: background-color, box-shadow;
-moz-transition-duration: 0.5s;
-ms-transition-property: background-color, box-shadow;
-ms-transition-duration: 0.5s;
-o-transition-property: background-color, box-shadow;
-o-transition-duration: 0.5s;
transition-property: background-color, box-shadow;
transition-duration: 0.5s;
}
div.line:after {
content:"\000A";
white-space: pre;
}
div.line.glow {
background-color: cyan;
box-shadow: 0 0 10px cyan;
}
span.lineno {
padding-right: 4px;
text-align: right;
border-right: 2px solid #0F0;
background-color: #E8E8E8;
white-space: pre;
}
span.lineno a {
background-color: #D8D8D8;
}
span.lineno a:hover {
background-color: #C8C8C8;
}
.lineno {
-webkit-touch-callout: none;
-webkit-user-select: none;
-khtml-user-select: none;
-moz-user-select: none;
-ms-user-select: none;
user-select: none;
}
div.ah, span.ah {
background-color: black;
font-weight: bold;
color: #ffffff;
margin-bottom: 3px;
margin-top: 3px;
padding: 0.2em;
border: solid thin #333;
border-radius: 0.5em;
-webkit-border-radius: .5em;
-moz-border-radius: .5em;
box-shadow: 2px 2px 3px #999;
-webkit-box-shadow: 2px 2px 3px #999;
-moz-box-shadow: rgba(0, 0, 0, 0.15) 2px 2px 2px;
background-image: -webkit-gradient(linear, left top, left bottom, from(#eee), to(#000),color-stop(0.3, #444));
background-image: -moz-linear-gradient(center top, #eee 0%, #444 40%, #000 110%);
}
div.classindex ul {
list-style: none;
padding-left: 0;
}
div.classindex span.ai {
display: inline-block;
}
div.groupHeader {
margin-left: 16px;
margin-top: 12px;
font-weight: bold;
}
div.groupText {
margin-left: 16px;
font-style: italic;
}
body {
background-color: white;
color: black;
margin: 0;
}
div.contents {
margin-top: 10px;
margin-left: 12px;
margin-right: 8px;
}
td.indexkey {
background-color: #EBEFF6;
font-weight: bold;
border: 1px solid #C4CFE5;
margin: 2px 0px 2px 0;
padding: 2px 10px;
white-space: nowrap;
vertical-align: top;
}
td.indexvalue {
background-color: #EBEFF6;
border: 1px solid #C4CFE5;
padding: 2px 10px;
margin: 2px 0px;
}
tr.memlist {
background-color: #EEF1F7;
}
p.formulaDsp {
text-align: center;
}
img.formulaDsp {
}
img.formulaInl {
vertical-align: middle;
}
div.center {
text-align: center;
margin-top: 0px;
margin-bottom: 0px;
padding: 0px;
}
div.center img {
border: 0px;
}
address.footer {
text-align: right;
padding-right: 12px;
}
img.footer {
border: 0px;
vertical-align: middle;
}
/* @group Code Colorization */
span.keyword {
color: #008000
}
span.keywordtype {
color: #604020
}
span.keywordflow {
color: #e08000
}
span.comment {
color: #800000
}
span.preprocessor {
color: #806020
}
span.stringliteral {
color: #002080
}
span.charliteral {
color: #008080
}
span.vhdldigit {
color: #ff00ff
}
span.vhdlchar {
color: #000000
}
span.vhdlkeyword {
color: #700070
}
span.vhdllogic {
color: #ff0000
}
blockquote {
background-color: #F7F8FB;
border-left: 2px solid #9CAFD4;
margin: 0 24px 0 4px;
padding: 0 12px 0 16px;
}
/* @end */
/*
.search {
color: #003399;
font-weight: bold;
}
form.search {
margin-bottom: 0px;
margin-top: 0px;
}
input.search {
font-size: 75%;
color: #000080;
font-weight: normal;
background-color: #e8eef2;
}
*/
td.tiny {
font-size: 75%;
}
.dirtab {
padding: 4px;
border-collapse: collapse;
border: 1px solid #A3B4D7;
}
th.dirtab {
background: #EBEFF6;
font-weight: bold;
}
hr {
height: 0px;
border: none;
border-top: 1px solid #4A6AAA;
}
hr.footer {
height: 1px;
}
/* @group Member Descriptions */
table.memberdecls {
border-spacing: 0px;
padding: 0px;
}
.memberdecls td, .fieldtable tr {
-webkit-transition-property: background-color, box-shadow;
-webkit-transition-duration: 0.5s;
-moz-transition-property: background-color, box-shadow;
-moz-transition-duration: 0.5s;
-ms-transition-property: background-color, box-shadow;
-ms-transition-duration: 0.5s;
-o-transition-property: background-color, box-shadow;
-o-transition-duration: 0.5s;
transition-property: background-color, box-shadow;
transition-duration: 0.5s;
}
.memberdecls td.glow, .fieldtable tr.glow {
background-color: cyan;
box-shadow: 0 0 15px cyan;
}
.mdescLeft, .mdescRight,
.memItemLeft, .memItemRight,
.memTemplItemLeft, .memTemplItemRight, .memTemplParams {
background-color: #F9FAFC;
border: none;
margin: 4px;
padding: 1px 0 0 8px;
}
.mdescLeft, .mdescRight {
padding: 0px 8px 4px 8px;
color: #555;
}
.memSeparator {
border-bottom: 1px solid #DEE4F0;
line-height: 1px;
margin: 0px;
padding: 0px;
}
.memItemLeft, .memTemplItemLeft {
white-space: nowrap;
}
.memItemRight {
width: 100%;
}
.memTemplParams {
color: #4665A2;
white-space: nowrap;
font-size: 80%;
}
/* @end */
/* @group Member Details */
/* Styles for detailed member documentation */
.memtitle {
padding: 8px;
border-top: 1px solid #A8B8D9;
border-left: 1px solid #A8B8D9;
border-right: 1px solid #A8B8D9;
border-top-right-radius: 4px;
border-top-left-radius: 4px;
margin-bottom: -1px;
background-image: url('nav_f.png');
background-repeat: repeat-x;
background-color: #E2E8F2;
line-height: 1.25;
font-weight: 300;
float:left;
}
.permalink
{
font-size: 65%;
display: inline-block;
vertical-align: middle;
}
.memtemplate {
font-size: 80%;
color: #4665A2;
font-weight: normal;
margin-left: 9px;
}
.memnav {
background-color: #EBEFF6;
border: 1px solid #A3B4D7;
text-align: center;
margin: 2px;
margin-right: 15px;
padding: 2px;
}
.mempage {
width: 100%;
}
.memitem {
padding: 0;
margin-bottom: 10px;
margin-right: 5px;
-webkit-transition: box-shadow 0.5s linear;
-moz-transition: box-shadow 0.5s linear;
-ms-transition: box-shadow 0.5s linear;
-o-transition: box-shadow 0.5s linear;
transition: box-shadow 0.5s linear;
display: table !important;
width: 100%;
}
.memitem.glow {
box-shadow: 0 0 15px cyan;
}
.memname {
font-weight: 400;
margin-left: 6px;
}
.memname td {
vertical-align: bottom;
}
.memproto, dl.reflist dt {
border-top: 1px solid #A8B8D9;
border-left: 1px solid #A8B8D9;
border-right: 1px solid #A8B8D9;
padding: 6px 0px 6px 0px;
color: #253555;
font-weight: bold;
text-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9);
background-color: #DFE5F1;
/* opera specific markup */
box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15);
border-top-right-radius: 4px;
/* firefox specific markup */
-moz-box-shadow: rgba(0, 0, 0, 0.15) 5px 5px 5px;
-moz-border-radius-topright: 4px;
/* webkit specific markup */
-webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15);
-webkit-border-top-right-radius: 4px;
}
.overload {
font-family: "courier new",courier,monospace;
font-size: 65%;
}
.memdoc, dl.reflist dd {
border-bottom: 1px solid #A8B8D9;
border-left: 1px solid #A8B8D9;
border-right: 1px solid #A8B8D9;
padding: 6px 10px 2px 10px;
background-color: #FBFCFD;
border-top-width: 0;
background-image:url('nav_g.png');
background-repeat:repeat-x;
background-color: #FFFFFF;
/* opera specific markup */
border-bottom-left-radius: 4px;
border-bottom-right-radius: 4px;
box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15);
/* firefox specific markup */
-moz-border-radius-bottomleft: 4px;
-moz-border-radius-bottomright: 4px;
-moz-box-shadow: rgba(0, 0, 0, 0.15) 5px 5px 5px;
/* webkit specific markup */
-webkit-border-bottom-left-radius: 4px;
-webkit-border-bottom-right-radius: 4px;
-webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15);
}
dl.reflist dt {
padding: 5px;
}
dl.reflist dd {
margin: 0px 0px 10px 0px;
padding: 5px;
}
.paramkey {
text-align: right;
}
.paramtype {
white-space: nowrap;
}
.paramname {
color: #602020;
white-space: nowrap;
}
.paramname em {
font-style: normal;
}
.paramname code {
line-height: 14px;
}
.params, .retval, .exception, .tparams {
margin-left: 0px;
padding-left: 0px;
}
.params .paramname, .retval .paramname {
font-weight: bold;
vertical-align: top;
}
.params .paramtype {
font-style: italic;
vertical-align: top;
}
.params .paramdir {
font-family: "courier new",courier,monospace;
vertical-align: top;
}
table.mlabels {
border-spacing: 0px;
}
td.mlabels-left {
width: 100%;
padding: 0px;
}
td.mlabels-right {
vertical-align: bottom;
padding: 0px;
white-space: nowrap;
}
span.mlabels {
margin-left: 8px;
}
span.mlabel {
background-color: #728DC1;
border-top:1px solid #5373B4;
border-left:1px solid #5373B4;
border-right:1px solid #C4CFE5;
border-bottom:1px solid #C4CFE5;
text-shadow: none;
color: white;
margin-right: 4px;
padding: 2px 3px;
border-radius: 3px;
font-size: 7pt;
white-space: nowrap;
vertical-align: middle;
}
/* @end */
/* these are for tree view inside a (index) page */
div.directory {
margin: 10px 0px;
border-top: 1px solid #9CAFD4;
border-bottom: 1px solid #9CAFD4;
width: 100%;
}
.directory table {
border-collapse:collapse;
}
.directory td {
margin: 0px;
padding: 0px;
vertical-align: top;
}
.directory td.entry {
white-space: nowrap;
padding-right: 6px;
padding-top: 3px;
}
.directory td.entry a {
outline:none;
}
.directory td.entry a img {
border: none;
}
.directory td.desc {
width: 100%;
padding-left: 6px;
padding-right: 6px;
padding-top: 3px;
border-left: 1px solid rgba(0,0,0,0.05);
}
.directory tr.even {
padding-left: 6px;
background-color: #F7F8FB;
}
.directory img {
vertical-align: -30%;
}
.directory .levels {
white-space: nowrap;
width: 100%;
text-align: right;
font-size: 9pt;
}
.directory .levels span {
cursor: pointer;
padding-left: 2px;
padding-right: 2px;
color: #3D578C;
}
.arrow {
color: #9CAFD4;
-webkit-user-select: none;
-khtml-user-select: none;
-moz-user-select: none;
-ms-user-select: none;
user-select: none;
cursor: pointer;
font-size: 80%;
display: inline-block;
width: 16px;
height: 22px;
}
.icon {
font-family: Arial, Helvetica;
font-weight: bold;
font-size: 12px;
height: 14px;
width: 16px;
display: inline-block;
background-color: #728DC1;
color: white;
text-align: center;
border-radius: 4px;
margin-left: 2px;
margin-right: 2px;
}
.icona {
width: 24px;
height: 22px;
display: inline-block;
}
.iconfopen {
width: 24px;
height: 18px;
margin-bottom: 4px;
background-image:url('folderopen.png');
background-position: 0px -4px;
background-repeat: repeat-y;
vertical-align:top;
display: inline-block;
}
.iconfclosed {
width: 24px;
height: 18px;
margin-bottom: 4px;
background-image:url('folderclosed.png');
background-position: 0px -4px;
background-repeat: repeat-y;
vertical-align:top;
display: inline-block;
}
.icondoc {
width: 24px;
height: 18px;
margin-bottom: 4px;
background-image:url('doc.png');
background-position: 0px -4px;
background-repeat: repeat-y;
vertical-align:top;
display: inline-block;
}
table.directory {
font: 400 14px Roboto,sans-serif;
}
/* @end */
div.dynheader {
margin-top: 8px;
-webkit-touch-callout: none;
-webkit-user-select: none;
-khtml-user-select: none;
-moz-user-select: none;
-ms-user-select: none;
user-select: none;
}
address {
font-style: normal;
color: #2A3D61;
}
table.doxtable caption {
caption-side: top;
}
table.doxtable {
border-collapse:collapse;
margin-top: 4px;
margin-bottom: 4px;
}
table.doxtable td, table.doxtable th {
border: 1px solid #2D4068;
padding: 3px 7px 2px;
}
table.doxtable th {
background-color: #374F7F;
color: #FFFFFF;
font-size: 110%;
padding-bottom: 4px;
padding-top: 5px;
}
table.fieldtable {
/*width: 100%;*/
margin-bottom: 10px;
border: 1px solid #A8B8D9;
border-spacing: 0px;
-moz-border-radius: 4px;
-webkit-border-radius: 4px;
border-radius: 4px;
-moz-box-shadow: rgba(0, 0, 0, 0.15) 2px 2px 2px;
-webkit-box-shadow: 2px 2px 2px rgba(0, 0, 0, 0.15);
box-shadow: 2px 2px 2px rgba(0, 0, 0, 0.15);
}
.fieldtable td, .fieldtable th {
padding: 3px 7px 2px;
}
.fieldtable td.fieldtype, .fieldtable td.fieldname {
white-space: nowrap;
border-right: 1px solid #A8B8D9;
border-bottom: 1px solid #A8B8D9;
vertical-align: top;
}
.fieldtable td.fieldname {
padding-top: 3px;
}
.fieldtable td.fielddoc {
border-bottom: 1px solid #A8B8D9;
/*width: 100%;*/
}
.fieldtable td.fielddoc p:first-child {
margin-top: 0px;
}
.fieldtable td.fielddoc p:last-child {
margin-bottom: 2px;
}
.fieldtable tr:last-child td {
border-bottom: none;
}
.fieldtable th {
background-image:url('nav_f.png');
background-repeat:repeat-x;
background-color: #E2E8F2;
font-size: 90%;
color: #253555;
padding-bottom: 4px;
padding-top: 5px;
text-align:left;
font-weight: 400;
-moz-border-radius-topleft: 4px;
-moz-border-radius-topright: 4px;
-webkit-border-top-left-radius: 4px;
-webkit-border-top-right-radius: 4px;
border-top-left-radius: 4px;
border-top-right-radius: 4px;
border-bottom: 1px solid #A8B8D9;
}
.tabsearch {
top: 0px;
left: 10px;
height: 36px;
background-image: url('tab_b.png');
z-index: 101;
overflow: hidden;
font-size: 13px;
}
.navpath ul
{
font-size: 11px;
background-image:url('tab_b.png');
background-repeat:repeat-x;
background-position: 0 -5px;
height:30px;
line-height:30px;
color:#8AA0CC;
border:solid 1px #C2CDE4;
overflow:hidden;
margin:0px;
padding:0px;
}
.navpath li
{
list-style-type:none;
float:left;
padding-left:10px;
padding-right:15px;
background-image:url('bc_s.png');
background-repeat:no-repeat;
background-position:right;
color:#364D7C;
}
.navpath li.navelem a
{
height:32px;
display:block;
text-decoration: none;
outline: none;
color: #283A5D;
font-family: 'Lucida Grande',Geneva,Helvetica,Arial,sans-serif;
text-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9);
text-decoration: none;
}
.navpath li.navelem a:hover
{
color:#6884BD;
}
.navpath li.footer
{
list-style-type:none;
float:right;
padding-left:10px;
padding-right:15px;
background-image:none;
background-repeat:no-repeat;
background-position:right;
color:#364D7C;
font-size: 8pt;
}
div.summary
{
float: right;
font-size: 8pt;
padding-right: 5px;
width: 50%;
text-align: right;
}
div.summary a
{
white-space: nowrap;
}
table.classindex
{
margin: 10px;
white-space: nowrap;
margin-left: 3%;
margin-right: 3%;
width: 94%;
border: 0;
border-spacing: 0;
padding: 0;
}
div.ingroups
{
font-size: 8pt;
width: 50%;
text-align: left;
}
div.ingroups a
{
white-space: nowrap;
}
div.header
{
background-image:url('nav_h.png');
background-repeat:repeat-x;
background-color: #F9FAFC;
margin: 0px;
border-bottom: 1px solid #C4CFE5;
}
div.headertitle
{
padding: 5px 5px 5px 10px;
}
dl
{
padding: 0 0 0 10px;
}
/* dl.note, dl.warning, dl.attention, dl.pre, dl.post, dl.invariant, dl.deprecated, dl.todo, dl.test, dl.bug */
dl.section
{
margin-left: 0px;
padding-left: 0px;
}
dl.note
{
margin-left:-7px;
padding-left: 3px;
border-left:4px solid;
border-color: #D0C000;
}
dl.warning, dl.attention
{
margin-left:-7px;
padding-left: 3px;
border-left:4px solid;
border-color: #FF0000;
}
dl.pre, dl.post, dl.invariant
{
margin-left:-7px;
padding-left: 3px;
border-left:4px solid;
border-color: #00D000;
}
dl.deprecated
{
margin-left:-7px;
padding-left: 3px;
border-left:4px solid;
border-color: #505050;
}
dl.todo
{
margin-left:-7px;
padding-left: 3px;
border-left:4px solid;
border-color: #00C0E0;
}
dl.test
{
margin-left:-7px;
padding-left: 3px;
border-left:4px solid;
border-color: #3030E0;
}
dl.bug
{
margin-left:-7px;
padding-left: 3px;
border-left:4px solid;
border-color: #C08050;
}
dl.section dd {
margin-bottom: 6px;
}
#projectlogo
{
text-align: center;
vertical-align: bottom;
border-collapse: separate;
}
#projectlogo img
{
border: 0px none;
}
#projectalign
{
vertical-align: middle;
}
#projectname
{
font: 300% Tahoma, Arial,sans-serif;
margin: 0px;
padding: 2px 0px;
}
#projectbrief
{
font: 120% Tahoma, Arial,sans-serif;
margin: 0px;
padding: 0px;
}
#projectnumber
{
font: 50% Tahoma, Arial,sans-serif;
margin: 0px;
padding: 0px;
}
#titlearea
{
padding: 0px;
margin: 0px;
width: 100%;
border-bottom: 1px solid #5373B4;
}
.image
{
text-align: center;
}
.dotgraph
{
text-align: center;
}
.mscgraph
{
text-align: center;
}
.plantumlgraph
{
text-align: center;
}
.diagraph
{
text-align: center;
}
.caption
{
font-weight: bold;
}
div.zoom
{
border: 1px solid #90A5CE;
}
dl.citelist {
margin-bottom:50px;
}
dl.citelist dt {
color:#334975;
float:left;
font-weight:bold;
margin-right:10px;
padding:5px;
}
dl.citelist dd {
margin:2px 0;
padding:5px 0;
}
div.toc {
padding: 14px 25px;
background-color: #F4F6FA;
border: 1px solid #D8DFEE;
border-radius: 7px 7px 7px 7px;
float: right;
height: auto;
margin: 0 8px 10px 10px;
width: 200px;
}
div.toc li {
background: url("bdwn.png") no-repeat scroll 0 5px transparent;
font: 10px/1.2 Verdana,DejaVu Sans,Geneva,sans-serif;
margin-top: 5px;
padding-left: 10px;
padding-top: 2px;
}
div.toc h3 {
font: bold 12px/1.2 Arial,FreeSans,sans-serif;
color: #4665A2;
border-bottom: 0 none;
margin: 0;
}
div.toc ul {
list-style: none outside none;
border: medium none;
padding: 0px;
}
div.toc li.level1 {
margin-left: 0px;
}
div.toc li.level2 {
margin-left: 15px;
}
div.toc li.level3 {
margin-left: 30px;
}
div.toc li.level4 {
margin-left: 45px;
}
.inherit_header {
font-weight: bold;
color: gray;
cursor: pointer;
-webkit-touch-callout: none;
-webkit-user-select: none;
-khtml-user-select: none;
-moz-user-select: none;
-ms-user-select: none;
user-select: none;
}
.inherit_header td {
padding: 6px 0px 2px 5px;
}
.inherit {
display: none;
}
tr.heading h2 {
margin-top: 12px;
margin-bottom: 4px;
}
/* tooltip related style info */
.ttc {
position: absolute;
display: none;
}
#powerTip {
cursor: default;
white-space: nowrap;
background-color: white;
border: 1px solid gray;
border-radius: 4px 4px 4px 4px;
box-shadow: 1px 1px 7px gray;
display: none;
font-size: smaller;
max-width: 80%;
opacity: 0.9;
padding: 1ex 1em 1em;
position: absolute;
z-index: 2147483647;
}
#powerTip div.ttdoc {
color: grey;
font-style: italic;
}
#powerTip div.ttname a {
font-weight: bold;
}
#powerTip div.ttname {
font-weight: bold;
}
#powerTip div.ttdeci {
color: #006318;
}
#powerTip div {
margin: 0px;
padding: 0px;
font: 12px/16px Roboto,sans-serif;
}
#powerTip:before, #powerTip:after {
content: "";
position: absolute;
margin: 0px;
}
#powerTip.n:after, #powerTip.n:before,
#powerTip.s:after, #powerTip.s:before,
#powerTip.w:after, #powerTip.w:before,
#powerTip.e:after, #powerTip.e:before,
#powerTip.ne:after, #powerTip.ne:before,
#powerTip.se:after, #powerTip.se:before,
#powerTip.nw:after, #powerTip.nw:before,
#powerTip.sw:after, #powerTip.sw:before {
border: solid transparent;
content: " ";
height: 0;
width: 0;
position: absolute;
}
#powerTip.n:after, #powerTip.s:after,
#powerTip.w:after, #powerTip.e:after,
#powerTip.nw:after, #powerTip.ne:after,
#powerTip.sw:after, #powerTip.se:after {
border-color: rgba(255, 255, 255, 0);
}
#powerTip.n:before, #powerTip.s:before,
#powerTip.w:before, #powerTip.e:before,
#powerTip.nw:before, #powerTip.ne:before,
#powerTip.sw:before, #powerTip.se:before {
border-color: rgba(128, 128, 128, 0);
}
#powerTip.n:after, #powerTip.n:before,
#powerTip.ne:after, #powerTip.ne:before,
#powerTip.nw:after, #powerTip.nw:before {
top: 100%;
}
#powerTip.n:after, #powerTip.ne:after, #powerTip.nw:after {
border-top-color: #ffffff;
border-width: 10px;
margin: 0px -10px;
}
#powerTip.n:before {
border-top-color: #808080;
border-width: 11px;
margin: 0px -11px;
}
#powerTip.n:after, #powerTip.n:before {
left: 50%;
}
#powerTip.nw:after, #powerTip.nw:before {
right: 14px;
}
#powerTip.ne:after, #powerTip.ne:before {
left: 14px;
}
#powerTip.s:after, #powerTip.s:before,
#powerTip.se:after, #powerTip.se:before,
#powerTip.sw:after, #powerTip.sw:before {
bottom: 100%;
}
#powerTip.s:after, #powerTip.se:after, #powerTip.sw:after {
border-bottom-color: #ffffff;
border-width: 10px;
margin: 0px -10px;
}
#powerTip.s:before, #powerTip.se:before, #powerTip.sw:before {
border-bottom-color: #808080;
border-width: 11px;
margin: 0px -11px;
}
#powerTip.s:after, #powerTip.s:before {
left: 50%;
}
#powerTip.sw:after, #powerTip.sw:before {
right: 14px;
}
#powerTip.se:after, #powerTip.se:before {
left: 14px;
}
#powerTip.e:after, #powerTip.e:before {
left: 100%;
}
#powerTip.e:after {
border-left-color: #ffffff;
border-width: 10px;
top: 50%;
margin-top: -10px;
}
#powerTip.e:before {
border-left-color: #808080;
border-width: 11px;
top: 50%;
margin-top: -11px;
}
#powerTip.w:after, #powerTip.w:before {
right: 100%;
}
#powerTip.w:after {
border-right-color: #ffffff;
border-width: 10px;
top: 50%;
margin-top: -10px;
}
#powerTip.w:before {
border-right-color: #808080;
border-width: 11px;
top: 50%;
margin-top: -11px;
}
@media print
{
#top { display: none; }
#side-nav { display: none; }
#nav-path { display: none; }
body { overflow:visible; }
h1, h2, h3, h4, h5, h6 { page-break-after: avoid; }
.summary { display: none; }
.memitem { page-break-inside: avoid; }
#doc-content
{
margin-left:0 !important;
height:auto !important;
width:auto !important;
overflow:inherit;
display:inline;
}
}
/* @group Markdown */
/*
table.markdownTable {
border-collapse:collapse;
margin-top: 4px;
margin-bottom: 4px;
}
table.markdownTable td, table.markdownTable th {
border: 1px solid #2D4068;
padding: 3px 7px 2px;
}
table.markdownTableHead tr {
}
table.markdownTableBodyLeft td, table.markdownTable th {
border: 1px solid #2D4068;
padding: 3px 7px 2px;
}
th.markdownTableHeadLeft th.markdownTableHeadRight th.markdownTableHeadCenter th.markdownTableHeadNone {
background-color: #374F7F;
color: #FFFFFF;
font-size: 110%;
padding-bottom: 4px;
padding-top: 5px;
}
th.markdownTableHeadLeft {
text-align: left
}
th.markdownTableHeadRight {
text-align: right
}
th.markdownTableHeadCenter {
text-align: center
}
*/
table.markdownTable {
border-collapse:collapse;
margin-top: 4px;
margin-bottom: 4px;
}
table.markdownTable td, table.markdownTable th {
border: 1px solid #2D4068;
padding: 3px 7px 2px;
}
table.markdownTable tr {
}
th.markdownTableHeadLeft, th.markdownTableHeadRight, th.markdownTableHeadCenter, th.markdownTableHeadNone {
background-color: #374F7F;
color: #FFFFFF;
font-size: 110%;
padding-bottom: 4px;
padding-top: 5px;
}
th.markdownTableHeadLeft, td.markdownTableBodyLeft {
text-align: left
}
th.markdownTableHeadRight, td.markdownTableBodyRight {
text-align: right
}
th.markdownTableHeadCenter, td.markdownTableBodyCenter {
text-align: center
}
/* @end */
================================================
FILE: docs/documentation/dynsections.js
================================================
function toggleVisibility(linkObj)
{
var base = $(linkObj).attr('id');
var summary = $('#'+base+'-summary');
var content = $('#'+base+'-content');
var trigger = $('#'+base+'-trigger');
var src=$(trigger).attr('src');
if (content.is(':visible')===true) {
content.hide();
summary.show();
$(linkObj).addClass('closed').removeClass('opened');
$(trigger).attr('src',src.substring(0,src.length-8)+'closed.png');
} else {
content.show();
summary.hide();
$(linkObj).removeClass('closed').addClass('opened');
$(trigger).attr('src',src.substring(0,src.length-10)+'open.png');
}
return false;
}
function updateStripes()
{
$('table.directory tr').
removeClass('even').filter(':visible:even').addClass('even');
}
function toggleLevel(level)
{
$('table.directory tr').each(function() {
var l = this.id.split('_').length-1;
var i = $('#img'+this.id.substring(3));
var a = $('#arr'+this.id.substring(3));
if (l<level+1) {
i.removeClass('iconfopen iconfclosed').addClass('iconfopen');
a.html('▼');
$(this).show();
} else if (l==level+1) {
i.removeClass('iconfclosed iconfopen').addClass('iconfclosed');
a.html('►');
$(this).show();
} else {
$(this).hide();
}
});
updateStripes();
}
function toggleFolder(id)
{
// the clicked row
var currentRow = $('#row_'+id);
// all rows after the clicked row
var rows = currentRow.nextAll("tr");
var re = new RegExp('^row_'+id+'\\d+_$', "i"); //only one sub
// only match elements AFTER this one (can't hide elements before)
var childRows = rows.filter(function() { return this.id.match(re); });
// first row is visible we are HIDING
if (childRows.filter(':first').is(':visible')===true) {
// replace down arrow by right arrow for current row
var currentRowSpans = currentRow.find("span");
currentRowSpans.filter(".iconfopen").removeClass("iconfopen").addClass("iconfclosed");
currentRowSpans.filter(".arrow").html('►');
rows.filter("[id^=row_"+id+"]").hide(); // hide all children
} else { // we are SHOWING
// replace right arrow by down arrow for current row
var currentRowSpans = currentRow.find("span");
currentRowSpans.filter(".iconfclosed").removeClass("iconfclosed").addClass("iconfopen");
currentRowSpans.filter(".arrow").html('▼');
// replace down arrows by right arrows for child rows
var childRowsSpans = childRows.find("span");
childRowsSpans.filter(".iconfopen").removeClass("iconfopen").addClass("iconfclosed");
childRowsSpans.filter(".arrow").html('►');
childRows.show(); //show all children
}
updateStripes();
}
function toggleInherit(id)
{
var rows = $('tr.inherit.'+id);
var img = $('tr.inherit_header.'+id+' img');
var src = $(img).attr('src');
if (rows.filter(':first').is(':visible')===true) {
rows.css('display','none');
$(img).attr('src',src.substring(0,src.length-8)+'closed.png');
} else {
rows.css('display','table-row'); // using show() causes jump in firefox
$(img).attr('src',src.substring(0,src.length-10)+'open.png');
}
}
================================================
FILE: docs/documentation/files.html
================================================
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.13"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>wasm-canvas: File List</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
$(document).ready(initResizable);
</script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
$(document).ready(function() { init_search(); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">wasm-canvas
</div>
</td>
<td> <div id="MSearchBox" class="MSearchBoxInactive">
<span class="left">
<img id="MSearchSelect" src="search/mag_sel.png"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
alt=""/>
<input type="text" id="MSearchField" value="Search" accesskey="S"
onfocus="searchBox.OnSearchFieldFocus(true)"
onblur="searchBox.OnSearchFieldFocus(false)"
onkeyup="searchBox.OnSearchFieldChange(event)"/>
</span><span class="right">
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
</span>
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.13 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
<div id="nav-tree">
<div id="nav-tree-contents">
<div id="nav-sync" class="sync"></div>
</div>
</div>
<div id="splitbar" style="-moz-user-select:none;"
class="ui-resizable-handle">
</div>
</div>
<script type="text/javascript">
$(document).ready(function(){initNavTree('files.html','');});
</script>
<div id="doc-content">
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div class="header">
<div class="headertitle">
<div class="title">File List</div> </div>
</div><!--header-->
<div class="contents">
<div class="textblock">Here is a list of all documented files with brief descriptions:</div><div class="directory">
<table class="directory">
<tr id="row_0_" class="even"><td class="entry"><span style="width:16px;display:inline-block;"> </span><span class="icondoc"></span><a class="el" href="canvas_8c.html" target="_self">canvas.c</a></td><td class="desc"></td></tr>
<tr id="row_1_"><td class="entry"><span style="width:16px;display:inline-block;"> </span><a href="canvas_8h_source.html"><span class="icondoc"></span></a><a class="el" href="canvas_8h.html" target="_self">canvas.h</a></td><td class="desc"><a class="el" href="structHTMLCanvasElement.html">HTMLCanvasElement</a> and <a class="el" href="structCanvasRenderingContext2D.html">CanvasRenderingContext2D</a> C-DOM-JS-interaction </td></tr>
<tr id="row_2_" class="even"><td class="entry"><span style="width:16px;display:inline-block;"> </span><span class="icondoc"></span><a class="el" href="window_8c.html" target="_self">window.c</a></td><td class="desc"></td></tr>
<tr id="row_3_"><td class="entry"><span style="width:16px;display:inline-block;"> </span><a href="window_8h_source.html"><span class="icondoc"></span></a><a class="el" href="window_8h.html" target="_self">window.h</a></td><td class="desc"><a class="el" href="structHTMLWindow.html">HTMLWindow</a> (Window) C-DOM-JS-interaction </td></tr>
</table>
</div><!-- directory -->
</div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="footer">Generated by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.13 </li>
</ul>
</div>
</body>
</html>
================================================
FILE: docs/documentation/files.js
================================================
var files =
[
[ "canvas.c", "canvas_8c.html", "canvas_8c" ],
[ "canvas.h", "canvas_8h.html", "canvas_8h" ],
[ "window.c", "window_8c.html", "window_8c" ],
[ "window.h", "window_8h.html", "window_8h" ]
];
================================================
FILE: docs/documentation/functions.html
================================================
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.13"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>wasm-canvas: Class Members</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
$(document).ready(initResizable);
</script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
$(document).ready(function() { init_search(); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">wasm-canvas
</div>
</td>
<td> <div id="MSearchBox" class="MSearchBoxInactive">
<span class="left">
<img id="MSearchSelect" src="search/mag_sel.png"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
alt=""/>
<input type="text" id="MSearchField" value="Search" accesskey="S"
onfocus="searchBox.OnSearchFieldFocus(true)"
onblur="searchBox.OnSearchFieldFocus(false)"
onkeyup="searchBox.OnSearchFieldChange(event)"/>
</span><span class="right">
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
</span>
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.13 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
<div id="nav-tree">
<div id="nav-tree-contents">
<div id="nav-sync" class="sync"></div>
</div>
</div>
<div id="splitbar" style="-moz-user-select:none;"
class="ui-resizable-handle">
</div>
</div>
<script type="text/javascript">
$(document).ready(function(){initNavTree('functions.html','');});
</script>
<div id="doc-content">
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div class="contents">
<div class="textblock">Here is a list of all documented class members with links to the class documentation for each member:</div><ul>
<li>fillText
: <a class="el" href="structCanvasRenderingContext2D.html#a7dae74c3217f796012b484b0d3892338">CanvasRenderingContext2D</a>
</li>
<li>getContext
: <a class="el" href="structHTMLCanvasElement.html#a334cd20da0561ba503401b636c819afa">HTMLCanvasElement</a>
</li>
<li>getHeight
: <a class="el" href="structHTMLCanvasElement.html#ac04dd675f5069e9d7c314ba62bf737db">HTMLCanvasElement</a>
</li>
<li>getWidth
: <a class="el" href="structHTMLCanvasElement.html#a0bd402f66362c5b196658c8eb44558b3">HTMLCanvasElement</a>
</li>
<li>private
: <a class="el" href="structCanvasRenderingContext2D.html#aee3d9fa95289751e970d60543697c7bd">CanvasRenderingContext2D</a>
</li>
<li>setHeight
: <a class="el" href="structHTMLCanvasElement.html#a2620a16349bc3a25332b5e4f451b6777">HTMLCanvasElement</a>
</li>
<li>setWidth
: <a class="el" href="structHTMLCanvasElement.html#a6aa4f4938b677e7a1eadf6da4abc649a">HTMLCanvasElement</a>
</li>
<li>strokeText
: <a class="el" href="structCanvasRenderingContext2D.html#a6e65732b6f74b45cb243c4bfbb28c179">CanvasRenderingContext2D</a>
</li>
</ul>
</div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="footer">Generated by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.13 </li>
</ul>
</div>
</body>
</html>
================================================
FILE: docs/documentation/functions_vars.html
================================================
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.13"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>wasm-canvas: Class Members - Variables</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
$(document).ready(initResizable);
</script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
$(document).ready(function() { init_search(); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">wasm-canvas
</div>
</td>
<td> <div id="MSearchBox" class="MSearchBoxInactive">
<span class="left">
<img id="MSearchSelect" src="search/mag_sel.png"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
alt=""/>
<input type="text" id="MSearchField" value="Search" accesskey="S"
onfocus="searchBox.OnSearchFieldFocus(true)"
onblur="searchBox.OnSearchFieldFocus(false)"
onkeyup="searchBox.OnSearchFieldChange(event)"/>
</span><span class="right">
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
</span>
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.13 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
<div id="nav-tree">
<div id="nav-tree-contents">
<div id="nav-sync" class="sync"></div>
</div>
</div>
<div id="splitbar" style="-moz-user-select:none;"
class="ui-resizable-handle">
</div>
</div>
<script type="text/javascript">
$(document).ready(function(){initNavTree('functions_vars.html','');});
</script>
<div id="doc-content">
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div class="contents">
 <ul>
<li>fillText
: <a class="el" href="structCanvasRenderingContext2D.html#a7dae74c3217f796012b484b0d3892338">CanvasRenderingContext2D</a>
</li>
<li>getContext
: <a class="el" href="structHTMLCanvasElement.html#a334cd20da0561ba503401b636c819afa">HTMLCanvasElement</a>
</li>
<li>getHeight
: <a class="el" href="structHTMLCanvasElement.html#ac04dd675f5069e9d7c314ba62bf737db">HTMLCanvasElement</a>
</li>
<li>getWidth
: <a class="el" href="structHTMLCanvasElement.html#a0bd402f66362c5b196658c8eb44558b3">HTMLCanvasElement</a>
</li>
<li>private
: <a class="el" href="structCanvasRenderingContext2D.html#aee3d9fa95289751e970d60543697c7bd">CanvasRenderingContext2D</a>
</li>
<li>setHeight
: <a class="el" href="structHTMLCanvasElement.html#a2620a16349bc3a25332b5e4f451b6777">HTMLCanvasElement</a>
</li>
<li>setWidth
: <a class="el" href="structHTMLCanvasElement.html#a6aa4f4938b677e7a1eadf6da4abc649a">HTMLCanvasElement</a>
</li>
<li>strokeText
: <a class="el" href="structCanvasRenderingContext2D.html#a6e65732b6f74b45cb243c4bfbb28c179">CanvasRenderingContext2D</a>
</li>
</ul>
</div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="footer">Generated by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.13 </li>
</ul>
</div>
</body>
</html>
================================================
FILE: docs/documentation/globals.html
================================================
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.13"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>wasm-canvas: File Members</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
$(document).ready(initResizable);
</script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
$(document).ready(function() { init_search(); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">wasm-canvas
</div>
</td>
<td> <div id="MSearchBox" class="MSearchBoxInactive">
<span class="left">
<img id="MSearchSelect" src="search/mag_sel.png"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
alt=""/>
<input type="text" id="MSearchField" value="Search" accesskey="S"
onfocus="searchBox.OnSearchFieldFocus(true)"
onblur="searchBox.OnSearchFieldFocus(false)"
onkeyup="searchBox.OnSearchFieldChange(event)"/>
</span><span class="right">
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
</span>
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.13 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
<div id="nav-tree">
<div id="nav-tree-contents">
<div id="nav-sync" class="sync"></div>
</div>
</div>
<div id="splitbar" style="-moz-user-select:none;"
class="ui-resizable-handle">
</div>
</div>
<script type="text/javascript">
$(document).ready(function(){initNavTree('globals.html','');});
</script>
<div id="doc-content">
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div class="contents">
<div class="textblock">Here is a list of all documented file members with links to the documentation:</div><ul>
<li>createCanvas()
: <a class="el" href="canvas_8c.html#a69ca7012750d2dac1fd7e35005fdb3d5">canvas.c</a>
, <a class="el" href="canvas_8h.html#ab735af370fd81da5d6f52069283176ad">canvas.h</a>
</li>
<li>freeCanvas()
: <a class="el" href="canvas_8c.html#af5836d2d5968ae657d880aebca783a81">canvas.c</a>
, <a class="el" href="canvas_8h.html#af5836d2d5968ae657d880aebca783a81">canvas.h</a>
</li>
<li>Window()
: <a class="el" href="window_8c.html#a4acbce9439c7ef61a8c56d033fd0028e">window.c</a>
, <a class="el" href="window_8h.html#a4acbce9439c7ef61a8c56d033fd0028e">window.h</a>
</li>
</ul>
</div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="footer">Generated by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.13 </li>
</ul>
</div>
</body>
</html>
================================================
FILE: docs/documentation/globals_func.html
================================================
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.13"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>wasm-canvas: File Members</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
$(document).ready(initResizable);
</script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
$(document).ready(function() { init_search(); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">wasm-canvas
</div>
</td>
<td> <div id="MSearchBox" class="MSearchBoxInactive">
<span class="left">
<img id="MSearchSelect" src="search/mag_sel.png"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
alt=""/>
<input type="text" id="MSearchField" value="Search" accesskey="S"
onfocus="searchBox.OnSearchFieldFocus(true)"
onblur="searchBox.OnSearchFieldFocus(false)"
onkeyup="searchBox.OnSearchFieldChange(event)"/>
</span><span class="right">
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
</span>
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.13 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
<div id="nav-tree">
<div id="nav-tree-contents">
<div id="nav-sync" class="sync"></div>
</div>
</div>
<div id="splitbar" style="-moz-user-select:none;"
class="ui-resizable-handle">
</div>
</div>
<script type="text/javascript">
$(document).ready(function(){initNavTree('globals_func.html','');});
</script>
<div id="doc-content">
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div class="contents">
 <ul>
<li>createCanvas()
: <a class="el" href="canvas_8c.html#a69ca7012750d2dac1fd7e35005fdb3d5">canvas.c</a>
, <a class="el" href="canvas_8h.html#ab735af370fd81da5d6f52069283176ad">canvas.h</a>
</li>
<li>freeCanvas()
: <a class="el" href="canvas_8c.html#af5836d2d5968ae657d880aebca783a81">canvas.c</a>
, <a class="el" href="canvas_8h.html#af5836d2d5968ae657d880aebca783a81">canvas.h</a>
</li>
<li>Window()
: <a class="el" href="window_8c.html#a4acbce9439c7ef61a8c56d033fd0028e">window.c</a>
, <a class="el" href="window_8h.html#a4acbce9439c7ef61a8c56d033fd0028e">window.h</a>
</li>
</ul>
</div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="footer">Generated by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.13 </li>
</ul>
</div>
</body>
</html>
================================================
FILE: docs/documentation/graph_legend.html
================================================
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.13"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>wasm-canvas: Graph Legend</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
$(document).ready(initResizable);
</script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
$(document).ready(function() { init_search(); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">wasm-canvas
</div>
</td>
<td> <div id="MSearchBox" class="MSearchBoxInactive">
<span class="left">
<img id="MSearchSelect" src="search/mag_sel.png"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
alt=""/>
<input type="text" id="MSearchField" value="Search" accesskey="S"
onfocus="searchBox.OnSearchFieldFocus(true)"
onblur="searchBox.OnSearchFieldFocus(false)"
onkeyup="searchBox.OnSearchFieldChange(event)"/>
</span><span class="right">
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
</span>
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.13 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
<div id="nav-tree">
<div id="nav-tree-contents">
<div id="nav-sync" class="sync"></div>
</div>
</div>
<div id="splitbar" style="-moz-user-select:none;"
class="ui-resizable-handle">
</div>
</div>
<script type="text/javascript">
$(document).ready(function(){initNavTree('graph_legend.html','');});
</script>
<div id="doc-content">
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div class="header">
<div class="headertitle">
<div class="title">Graph Legend</div> </div>
</div><!--header-->
<div class="contents">
<p>This page explains how to interpret the graphs that are generated by doxygen.</p>
<p>Consider the following example: </p><div class="fragment"><div class="line">/*! Invisible class because of truncation */</div><div class="line">class Invisible { };</div><div class="line"></div><div class="line">/*! Truncated class, inheritance relation is hidden */</div><div class="line">class Truncated : public Invisible { };</div><div class="line"></div><div class="line">/* Class not documented with doxygen comments */</div><div class="line">class Undocumented { };</div><div class="line"></div><div class="line">/*! Class that is inherited using public inheritance */</div><div class="line">class PublicBase : public Truncated { };</div><div class="line"></div><div class="line">/*! A template class */</div><div class="line">template<class T> class Templ { };</div><div class="line"></div><div class="line">/*! Class that is inherited using protected inheritance */</div><div class="line">class ProtectedBase { };</div><div class="line"></div><div class="line">/*! Class that is inherited using private inheritance */</div><div class="line">class PrivateBase { };</div><div class="line"></div><div class="line">/*! Class that is used by the Inherited class */</div><div class="line">class Used { };</div><div class="line"></div><div class="line">/*! Super class that inherits a number of other classes */</div><div class="line">class Inherited : public PublicBase,</div><div class="line"> protected ProtectedBase,</div><div class="line"> private PrivateBase,</div><div class="line"> public Undocumented,</div><div class="line"> public Templ<int></div><div class="line">{</div><div class="line"> private:</div><div class="line"> Used *m_usedClass;</div><div class="line">};</div></div><!-- fragment --><p> This will result in the following graph:</p>
<center><div class="image">
<img src="graph_legend.png"/>
</div>
</center><p>The boxes in the above graph have the following meaning: </p>
<ul>
<li>
A filled gray box represents the struct or class for which the graph is generated. </li>
<li>
A box with a black border denotes a documented struct or class. </li>
<li>
A box with a gray border denotes an undocumented struct or class. </li>
<li>
A box with a red border denotes a documented struct or class forwhich not all inheritance/containment relations are shown. A graph is truncated if it does not fit within the specified boundaries. </li>
</ul>
<p>The arrows have the following meaning: </p>
<ul>
<li>
A dark blue arrow is used to visualize a public inheritance relation between two classes. </li>
<li>
A dark green arrow is used for protected inheritance. </li>
<li>
A dark red arrow is used for private inheritance. </li>
<li>
A purple dashed arrow is used if a class is contained or used by another class. The arrow is labelled with the variable(s) through which the pointed class or struct is accessible. </li>
<li>
A yellow dashed arrow denotes a relation between a template instance and the template class it was instantiated from. The arrow is labelled with the template parameters of the instance. </li>
</ul>
</div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="footer">Generated by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.13 </li>
</ul>
</div>
</body>
</html>
================================================
FILE: docs/documentation/graph_legend.md5
================================================
387ff8eb65306fa251338d3c9bd7bfff
================================================
FILE: docs/documentation/index.html
================================================
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.13"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>wasm-canvas: Main Page</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
$(document).ready(initResizable);
</script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
$(document).ready(function() { init_search(); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">wasm-canvas
</div>
</td>
<td> <div id="MSearchBox" class="MSearchBoxInactive">
<span class="left">
<img id="MSearchSelect" src="search/mag_sel.png"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
alt=""/>
<input type="text" id="MSearchField" value="Search" accesskey="S"
onfocus="searchBox.OnSearchFieldFocus(true)"
onblur="searchBox.OnSearchFieldFocus(false)"
onkeyup="searchBox.OnSearchFieldChange(event)"/>
</span><span class="right">
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
</span>
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.13 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
<div id="nav-tree">
<div id="nav-tree-contents">
<div id="nav-sync" class="sync"></div>
</div>
</div>
<div id="splitbar" style="-moz-user-select:none;"
class="ui-resizable-handle">
</div>
</div>
<script type="text/javascript">
$(document).ready(function(){initNavTree('index.html','');});
</script>
<div id="doc-content">
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div class="header">
<div class="headertitle">
<div class="title">wasm-canvas Documentation</div> </div>
</div><!--header-->
<div class="contents">
<ul><li><a href="index.html"><span>Main Page</span></a>
</li><li><a href="annotated.html"><span>Classes</span></a>
<ul><li><a href="annotated.html"><span>Class List</span></a>
</li><li><a href="classes.html"><span>Class Index</span></a>
</li><li><a href="functions.html"><span>Class Members</span></a>
</li></ul>
</li><li><a href="files.html"><span>Files</span></a>
<ul><li><a href="files.html"><span>File List</span></a>
</li><li><a href="globals.html"><span>File Members</span></a>
</li></ul>
</li></ul>
</div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="footer">Generated by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.13 </li>
</ul>
</div>
</body>
</html>
================================================
FILE: docs/documentation/jquery.js
================================================
/*!
* jQuery JavaScript Library v1.7.1
* http://jquery.com/
*
* Copyright 2011, John Resig
* Dual licensed under the MIT or GPL Version 2 licenses.
* http://jquery.org/license
*
* Includes Sizzle.js
* http://sizzlejs.com/
* Copyright 2011, The Dojo Foundation
* Released under the MIT, BSD, and GPL Licenses.
*
* Date: Mon Nov 21 21:11:03 2011 -0500
*/
(function(bb,L){var av=bb.document,bu=bb.navigator,bl=bb.location;var b=(function(){var bF=function(b0,b1){return new bF.fn.init(b0,b1,bD)},bU=bb.jQuery,bH=bb.$,bD,bY=/^(?:[^#<]*(<[\w\W]+>)[^>]*$|#([\w\-]*)$)/,bM=/\S/,bI=/^\s+/,bE=/\s+$/,bA=/^<(\w+)\s*\/?>(?:<\/\1>)?$/,bN=/^[\],:{}\s]*$/,bW=/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,bP=/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,bJ=/(?:^|:|,)(?:\s*\[)+/g,by=/(webkit)[ \/]([\w.]+)/,bR=/(opera)(?:.*version)?[ \/]([\w.]+)/,bQ=/(msie) ([\w.]+)/,bS=/(mozilla)(?:.*? rv:([\w.]+))?/,bB=/-([a-z]|[0-9])/ig,bZ=/^-ms-/,bT=function(b0,b1){return(b1+"").toUpperCase()},bX=bu.userAgent,bV,bC,e,bL=Object.prototype.toString,bG=Object.prototype.hasOwnProperty,bz=Array.prototype.push,bK=Array.prototype.slice,bO=String.prototype.trim,bv=Array.prototype.indexOf,bx={};bF.fn=bF.prototype={constructor:bF,init:function(b0,b4,b3){var b2,b5,b1,b6;if(!b0){return this}if(b0.nodeType){this.context=this[0]=b0;this.length=1;return this}if(b0==="body"&&!b4&&av.body){this.context=av;this[0]=av.body;this.selector=b0;this.length=1;return this}if(typeof b0==="string"){if(b0.charAt(0)==="<"&&b0.charAt(b0.length-1)===">"&&b0.length>=3){b2=[null,b0,null]}else{b2=bY.exec(b0)}if(b2&&(b2[1]||!b4)){if(b2[1]){b4=b4 instanceof bF?b4[0]:b4;b6=(b4?b4.ownerDocument||b4:av);b1=bA.exec(b0);if(b1){if(bF.isPlainObject(b4)){b0=[av.createElement(b1[1])];bF.fn.attr.call(b0,b4,true)}else{b0=[b6.createElement(b1[1])]}}else{b1=bF.buildFragment([b2[1]],[b6]);b0=(b1.cacheable?bF.clone(b1.fragment):b1.fragment).childNodes}return bF.merge(this,b0)}else{b5=av.getElementById(b2[2]);if(b5&&b5.parentNode){if(b5.id!==b2[2]){return b3.find(b0)}this.length=1;this[0]=b5}this.context=av;this.selector=b0;return this}}else{if(!b4||b4.jquery){return(b4||b3).find(b0)}else{return this.constructor(b4).find(b0)}}}else{if(bF.isFunction(b0)){return b3.ready(b0)}}if(b0.selector!==L){this.selector=b0.selector;this.context=b0.context}return bF.makeArray(b0,this)},selector:"",jquery:"1.7.1",length:0,size:function(){return this.length},toArray:function(){return bK.call(this,0)},get:function(b0){return b0==null?this.toArray():(b0<0?this[this.length+b0]:this[b0])},pushStack:function(b1,b3,b0){var b2=this.constructor();if(bF.isArray(b1)){bz.apply(b2,b1)}else{bF.merge(b2,b1)}b2.prevObject=this;b2.context=this.context;if(b3==="find"){b2.selector=this.selector+(this.selector?" ":"")+b0}else{if(b3){b2.selector=this.selector+"."+b3+"("+b0+")"}}return b2},each:function(b1,b0){return bF.each(this,b1,b0)},ready:function(b0){bF.bindReady();bC.add(b0);return this},eq:function(b0){b0=+b0;return b0===-1?this.slice(b0):this.slice(b0,b0+1)},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},slice:function(){return this.pushStack(bK.apply(this,arguments),"slice",bK.call(arguments).join(","))},map:function(b0){return this.pushStack(bF.map(this,function(b2,b1){return b0.call(b2,b1,b2)}))},end:function(){return this.prevObject||this.constructor(null)},push:bz,sort:[].sort,splice:[].splice};bF.fn.init.prototype=bF.fn;bF.extend=bF.fn.extend=function(){var b9,b2,b0,b1,b6,b7,b5=arguments[0]||{},b4=1,b3=arguments.length,b8=false;if(typeof b5==="boolean"){b8=b5;b5=arguments[1]||{};b4=2}if(typeof b5!=="object"&&!bF.isFunction(b5)){b5={}}if(b3===b4){b5=this;--b4}for(;b4<b3;b4++){if((b9=arguments[b4])!=null){for(b2 in b9){b0=b5[b2];b1=b9[b2];if(b5===b1){continue}if(b8&&b1&&(bF.isPlainObject(b1)||(b6=bF.isArray(b1)))){if(b6){b6=false;b7=b0&&bF.isArray(b0)?b0:[]}else{b7=b0&&bF.isPlainObject(b0)?b0:{}}b5[b2]=bF.extend(b8,b7,b1)}else{if(b1!==L){b5[b2]=b1}}}}}return b5};bF.extend({noConflict:function(b0){if(bb.$===bF){bb.$=bH}if(b0&&bb.jQuery===bF){bb.jQuery=bU}return bF},isReady:false,readyWait:1,holdReady:function(b0){if(b0){bF.readyWait++}else{bF.ready(true)}},ready:function(b0){if((b0===true&&!--bF.readyWait)||(b0!==true&&!bF.isReady)){if(!av.body){return setTimeout(bF.ready,1)}bF.isReady=true;if(b0!==true&&--bF.readyWait>0){return}bC.fireWith(av,[bF]);if(bF.fn.trigger){bF(av).trigger("ready").off("ready")}}},bindReady:function(){if(bC){return}bC=bF.Callbacks("once memory");if(av.readyState==="complete"){return setTimeout(bF.ready,1)}if(av.addEventListener){av.addEventListener("DOMContentLoaded",e,false);bb.addEventListener("load",bF.ready,false)}else{if(av.attachEvent){av.attachEvent("onreadystatechange",e);bb.attachEvent("onload",bF.ready);var b0=false;try{b0=bb.frameElement==null}catch(b1){}if(av.documentElement.doScroll&&b0){bw()}}}},isFunction:function(b0){return bF.type(b0)==="function"},isArray:Array.isArray||function(b0){return bF.type(b0)==="array"},isWindow:function(b0){return b0&&typeof b0==="object"&&"setInterval" in b0},isNumeric:function(b0){return !isNaN(parseFloat(b0))&&isFinite(b0)},type:function(b0){return b0==null?String(b0):bx[bL.call(b0)]||"object"},isPlainObject:function(b2){if(!b2||bF.type(b2)!=="object"||b2.nodeType||bF.isWindow(b2)){return false}try{if(b2.constructor&&!bG.call(b2,"constructor")&&!bG.call(b2.constructor.prototype,"isPrototypeOf")){return false}}catch(b1){return false}var b0;for(b0 in b2){}return b0===L||bG.call(b2,b0)},isEmptyObject:function(b1){for(var b0 in b1){return false}return true},error:function(b0){throw new Error(b0)},parseJSON:function(b0){if(typeof b0!=="string"||!b0){return null}b0=bF.trim(b0);if(bb.JSON&&bb.JSON.parse){return bb.JSON.parse(b0)}if(bN.test(b0.replace(bW,"@").replace(bP,"]").replace(bJ,""))){return(new Function("return "+b0))()}bF.error("Invalid JSON: "+b0)},parseXML:function(b2){var b0,b1;try{if(bb.DOMParser){b1=new DOMParser();b0=b1.parseFromString(b2,"text/xml")}else{b0=new ActiveXObject("Microsoft.XMLDOM");b0.async="false";b0.loadXML(b2)}}catch(b3){b0=L}if(!b0||!b0.documentElement||b0.getElementsByTagName("parsererror").length){bF.error("Invalid XML: "+b2)}return b0},noop:function(){},globalEval:function(b0){if(b0&&bM.test(b0)){(bb.execScript||function(b1){bb["eval"].call(bb,b1)})(b0)}},camelCase:function(b0){return b0.replace(bZ,"ms-").replace(bB,bT)},nodeName:function(b1,b0){return b1.nodeName&&b1.nodeName.toUpperCase()===b0.toUpperCase()},each:function(b3,b6,b2){var b1,b4=0,b5=b3.length,b0=b5===L||bF.isFunction(b3);if(b2){if(b0){for(b1 in b3){if(b6.apply(b3[b1],b2)===false){break}}}else{for(;b4<b5;){if(b6.apply(b3[b4++],b2)===false){break}}}}else{if(b0){for(b1 in b3){if(b6.call(b3[b1],b1,b3[b1])===false){break}}}else{for(;b4<b5;){if(b6.call(b3[b4],b4,b3[b4++])===false){break}}}}return b3},trim:bO?function(b0){return b0==null?"":bO.call(b0)}:function(b0){return b0==null?"":b0.toString().replace(bI,"").replace(bE,"")},makeArray:function(b3,b1){var b0=b1||[];if(b3!=null){var b2=bF.type(b3);if(b3.length==null||b2==="string"||b2==="function"||b2==="regexp"||bF.isWindow(b3)){bz.call(b0,b3)}else{bF.merge(b0,b3)}}return b0},inArray:function(b2,b3,b1){var b0;if(b3){if(bv){return bv.call(b3,b2,b1)}b0=b3.length;b1=b1?b1<0?Math.max(0,b0+b1):b1:0;for(;b1<b0;b1++){if(b1 in b3&&b3[b1]===b2){return b1}}}return -1},merge:function(b4,b2){var b3=b4.length,b1=0;if(typeof b2.length==="number"){for(var b0=b2.length;b1<b0;b1++){b4[b3++]=b2[b1]}}else{while(b2[b1]!==L){b4[b3++]=b2[b1++]}}b4.length=b3;return b4},grep:function(b1,b6,b0){var b2=[],b5;b0=!!b0;for(var b3=0,b4=b1.length;b3<b4;b3++){b5=!!b6(b1[b3],b3);if(b0!==b5){b2.push(b1[b3])}}return b2},map:function(b0,b7,b8){var b5,b6,b4=[],b2=0,b1=b0.length,b3=b0 instanceof bF||b1!==L&&typeof b1==="number"&&((b1>0&&b0[0]&&b0[b1-1])||b1===0||bF.isArray(b0));if(b3){for(;b2<b1;b2++){b5=b7(b0[b2],b2,b8);if(b5!=null){b4[b4.length]=b5}}}else{for(b6 in b0){b5=b7(b0[b6],b6,b8);if(b5!=null){b4[b4.length]=b5}}}return b4.concat.apply([],b4)},guid:1,proxy:function(b4,b3){if(typeof b3==="string"){var b2=b4[b3];b3=b4;b4=b2}if(!bF.isFunction(b4)){return L}var b0=bK.call(arguments,2),b1=function(){return b4.apply(b3,b0.concat(bK.call(arguments)))};b1.guid=b4.guid=b4.guid||b1.guid||bF.guid++;return b1},access:function(b0,b8,b6,b2,b5,b7){var b1=b0.length;if(typeof b8==="object"){for(var b3 in b8){bF.access(b0,b3,b8[b3],b2,b5,b6)}return b0}if(b6!==L){b2=!b7&&b2&&bF.isFunction(b6);for(var b4=0;b4<b1;b4++){b5(b0[b4],b8,b2?b6.call(b0[b4],b4,b5(b0[b4],b8)):b6,b7)}return b0}return b1?b5(b0[0],b8):L},now:function(){return(new Date()).getTime()},uaMatch:function(b1){b1=b1.toLowerCase();var b0=by.exec(b1)||bR.exec(b1)||bQ.exec(b1)||b1.indexOf("compatible")<0&&bS.exec(b1)||[];return{browser:b0[1]||"",version:b0[2]||"0"}},sub:function(){function b0(b3,b4){return new b0.fn.init(b3,b4)}bF.extend(true,b0,this);b0.superclass=this;b0.fn=b0.prototype=this();b0.fn.constructor=b0;b0.sub=this.sub;b0.fn.init=function b2(b3,b4){if(b4&&b4 instanceof bF&&!(b4 instanceof b0)){b4=b0(b4)}return bF.fn.init.call(this,b3,b4,b1)};b0.fn.init.prototype=b0.fn;var b1=b0(av);return b0},browser:{}});bF.each("Boolean Number String Function Array Date RegExp Object".split(" "),function(b1,b0){bx["[object "+b0+"]"]=b0.toLowerCase()});bV=bF.uaMatch(bX);if(bV.browser){bF.browser[bV.browser]=true;bF.browser.version=bV.version}if(bF.browser.webkit){bF.browser.safari=true}if(bM.test("\xA0")){bI=/^[\s\xA0]+/;bE=/[\s\xA0]+$/}bD=bF(av);if(av.addEventListener){e=function(){av.removeEventListener("DOMContentLoaded",e,false);bF.ready()}}else{if(av.attachEvent){e=function(){if(av.readyState==="complete"){av.detachEvent("onreadystatechange",e);bF.ready()}}}}function bw(){if(bF.isReady){return}try{av.documentElement.doScroll("left")}catch(b0){setTimeout(bw,1);return}bF.ready()}return bF})();var a2={};function X(e){var bv=a2[e]={},bw,bx;e=e.split(/\s+/);for(bw=0,bx=e.length;bw<bx;bw++){bv[e[bw]]=true}return bv}b.Callbacks=function(bw){bw=bw?(a2[bw]||X(bw)):{};var bB=[],bC=[],bx,by,bv,bz,bA,bE=function(bF){var bG,bJ,bI,bH,bK;for(bG=0,bJ=bF.length;bG<bJ;bG++){bI=bF[bG];bH=b.type(bI);if(bH==="array"){bE(bI)}else{if(bH==="function"){if(!bw.unique||!bD.has(bI)){bB.push(bI)}}}}},e=function(bG,bF){bF=bF||[];bx=!bw.memory||[bG,bF];by=true;bA=bv||0;bv=0;bz=bB.length;for(;bB&&bA<bz;bA++){if(bB[bA].apply(bG,bF)===false&&bw.stopOnFalse){bx=true;break}}by=false;if(bB){if(!bw.once){if(bC&&bC.length){bx=bC.shift();bD.fireWith(bx[0],bx[1])}}else{if(bx===true){bD.disable()}else{bB=[]}}}},bD={add:function(){if(bB){var bF=bB.length;bE(arguments);if(by){bz=bB.length}else{if(bx&&bx!==true){bv=bF;e(bx[0],bx[1])}}}return this},remove:function(){if(bB){var bF=arguments,bH=0,bI=bF.length;for(;bH<bI;bH++){for(var bG=0;bG<bB.length;bG++){if(bF[bH]===bB[bG]){if(by){if(bG<=bz){bz--;if(bG<=bA){bA--}}}bB.splice(bG--,1);if(bw.unique){break}}}}}return this},has:function(bG){if(bB){var bF=0,bH=bB.length;for(;bF<bH;bF++){if(bG===bB[bF]){return true}}}return false},empty:function(){bB=[];return this},disable:function(){bB=bC=bx=L;return this},disabled:function(){return !bB},lock:function(){bC=L;if(!bx||bx===true){bD.disable()}return this},locked:function(){return !bC},fireWith:function(bG,bF){if(bC){if(by){if(!bw.once){bC.push([bG,bF])}}else{if(!(bw.once&&bx)){e(bG,bF)}}}return this},fire:function(){bD.fireWith(this,arguments);return this},fired:function(){return !!bx}};return bD};var aJ=[].slice;b.extend({Deferred:function(by){var bx=b.Callbacks("once memory"),bw=b.Callbacks("once memory"),bv=b.Callbacks("memory"),e="pending",bA={resolve:bx,reject:bw,notify:bv},bC={done:bx.add,fail:bw.add,progress:bv.add,state:function(){return e},isResolved:bx.fired,isRejected:bw.fired,then:function(bE,bD,bF){bB.done(bE).fail(bD).progress(bF);return this},always:function(){bB.done.apply(bB,arguments).fail.apply(bB,arguments);return this},pipe:function(bF,bE,bD){return b.Deferred(function(bG){b.each({done:[bF,"resolve"],fail:[bE,"reject"],progress:[bD,"notify"]},function(bI,bL){var bH=bL[0],bK=bL[1],bJ;if(b.isFunction(bH)){bB[bI](function(){bJ=bH.apply(this,arguments);if(bJ&&b.isFunction(bJ.promise)){bJ.promise().then(bG.resolve,bG.reject,bG.notify)}else{bG[bK+"With"](this===bB?bG:this,[bJ])}})}else{bB[bI](bG[bK])}})}).promise()},promise:function(bE){if(bE==null){bE=bC}else{for(var bD in bC){bE[bD]=bC[bD]}}return bE}},bB=bC.promise({}),bz;for(bz in bA){bB[bz]=bA[bz].fire;bB[bz+"With"]=bA[bz].fireWith}bB.done(function(){e="resolved"},bw.disable,bv.lock).fail(function(){e="rejected"},bx.disable,bv.lock);if(by){by.call(bB,bB)}return bB},when:function(bA){var bx=aJ.call(arguments,0),bv=0,e=bx.length,bB=new Array(e),bw=e,by=e,bC=e<=1&&bA&&b.isFunction(bA.promise)?bA:b.Deferred(),bE=bC.promise();function bD(bF){return function(bG){bx[bF]=arguments.length>1?aJ.call(arguments,0):bG;if(!(--bw)){bC.resolveWith(bC,bx)}}}function bz(bF){return function(bG){bB[bF]=arguments.length>1?aJ.call(arguments,0):bG;bC.notifyWith(bE,bB)}}if(e>1){for(;bv<e;bv++){if(bx[bv]&&bx[bv].promise&&b.isFunction(bx[bv].promise)){bx[bv].promise().then(bD(bv),bC.reject,bz(bv))}else{--bw}}if(!bw){bC.resolveWith(bC,bx)}}else{if(bC!==bA){bC.resolveWith(bC,e?[bA]:[])}}return bE}});b.support=(function(){var bJ,bI,bF,bG,bx,bE,bA,bD,bz,bK,bB,by,bw,bv=av.createElement("div"),bH=av.documentElement;bv.setAttribute("className","t");bv.innerHTML=" <link/><table></table><a href='/a' style='top:1px;float:left;opacity:.55;'>a</a><input type='checkbox'/>";bI=bv.getElementsByTagName("*");bF=bv.getElementsByTagName("a")[0];if(!bI||!bI.length||!bF){return{}}bG=av.createElement("select");bx=bG.appendChild(av.createElement("option"));bE=bv.getElementsByTagName("input")[0];bJ={leadingWhitespace:(bv.firstChild.nodeType===3),tbody:!bv.getElementsByTagName("tbody").length,htmlSerialize:!!bv.getElementsByTagName("link").length,style:/top/.test(bF.getAttribute("style")),hrefNormalized:(bF.getAttribute("href")==="/a"),opacity:/^0.55/.test(bF.style.opacity),cssFloat:!!bF.style.cssFloat,checkOn:(bE.value==="on"),optSelected:bx.selected,getSetAttribute:bv.className!=="t",enctype:!!av.createElement("form").enctype,html5Clone:av.createElement("nav").cloneNode(true).outerHTML!=="<:nav></:nav>",submitBubbles:true,changeBubbles:true,focusinBubbles:false,deleteExpando:true,noCloneEvent:true,inlineBlockNeedsLayout:false,shrinkWrapBlocks:false,reliableMarginRight:true};bE.checked=true;bJ.noCloneChecked=bE.cloneNode(true).checked;bG.disabled=true;bJ.optDisabled=!bx.disabled;try{delete bv.test}catch(bC){bJ.deleteExpando=false}if(!bv.addEventListener&&bv.attachEvent&&bv.fireEvent){bv.attachEvent("onclick",function(){bJ.noCloneEvent=false});bv.cloneNode(true).fireEvent("onclick")}bE=av.createElement("input");bE.value="t";bE.setAttribute("type","radio");bJ.radioValue=bE.value==="t";bE.setAttribute("checked","checked");bv.appendChild(bE);bD=av.createDocumentFragment();bD.appendChild(bv.lastChild);bJ.checkClone=bD.cloneNode(true).cloneNode(true).lastChild.checked;bJ.appendChecked=bE.checked;bD.removeChild(bE);bD.appendChild(bv);bv.innerHTML="";if(bb.getComputedStyle){bA=av.createElement("div");bA.style.width="0";bA.style.marginRight="0";bv.style.width="2px";bv.appendChild(bA);bJ.reliableMarginRight=(parseInt((bb.getComputedStyle(bA,null)||{marginRight:0}).marginRight,10)||0)===0}if(bv.attachEvent){for(by in {submit:1,change:1,focusin:1}){bB="on"+by;bw=(bB in bv);if(!bw){bv.setAttribute(bB,"return;");bw=(typeof bv[bB]==="function")}bJ[by+"Bubbles"]=bw}}bD.removeChild(bv);bD=bG=bx=bA=bv=bE=null;b(function(){var bM,bU,bV,bT,bN,bO,bL,bS,bR,e,bP,bQ=av.getElementsByTagName("body")[0];if(!bQ){return}bL=1;bS="position:absolute;top:0;left:0;width:1px;height:1px;margin:0;";bR="visibility:hidden;border:0;";e="style='"+bS+"border:5px solid #000;padding:0;'";bP="<div "+e+"><div></div></div><table "+e+" cellpadding='0' cellspacing='0'><tr><td></td></tr></table>";bM=av.createElement("div");bM.style.cssText=bR+"width:0;height:0;position:static;top:0;margin-top:"+bL+"px";bQ.insertBefore(bM,bQ.firstChild);bv=av.createElement("div");bM.appendChild(bv);bv.innerHTML="<table><tr><td style='padding:0;border:0;display:none'></td><td>t</td></tr></table>";bz=bv.getElementsByTagName("td");bw=(bz[0].offsetHeight===0);bz[0].style.display="";bz[1].style.display="none";bJ.reliableHiddenOffsets=bw&&(bz[0].offsetHeight===0);bv.innerHTML="";bv.style.width=bv.style.paddingLeft="1px";b.boxModel=bJ.boxModel=bv.offsetWidth===2;if(typeof bv.style.zoom!=="undefined"){bv.style.display="inline";bv.style.zoom=1;bJ.inlineBlockNeedsLayout=(bv.offsetWidth===2);bv.style.display="";bv.innerHTML="<div style='width:4px;'></div>";bJ.shrinkWrapBlocks=(bv.offsetWidth!==2)}bv.style.cssText=bS+bR;bv.innerHTML=bP;bU=bv.firstChild;bV=bU.firstChild;bN=bU.nextSibling.firstChild.firstChild;bO={doesNotAddBorder:(bV.offsetTop!==5),doesAddBorderForTableAndCells:(bN.offsetTop===5)};bV.style.position="fixed";bV.style.top="20px";bO.fixedPosition=(bV.offsetTop===20||bV.offsetTop===15);bV.style.position=bV.style.top="";bU.style.overflow="hidden";bU.style.position="relative";bO.subtractsBorderForOverflowNotVisible=(bV.offsetTop===-5);bO.doesNotIncludeMarginInBodyOffset=(bQ.offsetTop!==bL);bQ.removeChild(bM);bv=bM=null;b.extend(bJ,bO)});return bJ})();var aS=/^(?:\{.*\}|\[.*\])$/,aA=/([A-Z])/g;b.extend({cache:{},uuid:0,expando:"jQuery"+(b.fn.jquery+Math.random()).replace(/\D/g,""),noData:{embed:true,object:"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000",applet:true},hasData:function(e){e=e.nodeType?b.cache[e[b.expando]]:e[b.expando];return !!e&&!S(e)},data:function(bx,bv,bz,by){if(!b.acceptData(bx)){return}var bG,bA,bD,bE=b.expando,bC=typeof bv==="string",bF=bx.nodeType,e=bF?b.cache:bx,bw=bF?bx[bE]:bx[bE]&&bE,bB=bv==="events";if((!bw||!e[bw]||(!bB&&!by&&!e[bw].data))&&bC&&bz===L){return}if(!bw){if(bF){bx[bE]=bw=++b.uuid}else{bw=bE}}if(!e[bw]){e[bw]={};if(!bF){e[bw].toJSON=b.noop}}if(typeof bv==="object"||typeof bv==="function"){if(by){e[bw]=b.extend(e[bw],bv)}else{e[bw].data=b.extend(e[bw].data,bv)}}bG=bA=e[bw];if(!by){if(!bA.data){bA.data={}}bA=bA.data}if(bz!==L){bA[b.camelCase(bv)]=bz}if(bB&&!bA[bv]){return bG.events}if(bC){bD=bA[bv];if(bD==null){bD=bA[b.camelCase(bv)]}}else{bD=bA}return bD},removeData:function(bx,bv,by){if(!b.acceptData(bx)){return}var bB,bA,bz,bC=b.expando,bD=bx.nodeType,e=bD?b.cache:bx,bw=bD?bx[bC]:bC;if(!e[bw]){return}if(bv){bB=by?e[bw]:e[bw].data;if(bB){if(!b.isArray(bv)){if(bv in bB){bv=[bv]}else{bv=b.camelCase(bv);if(bv in bB){bv=[bv]}else{bv=bv.split(" ")}}}for(bA=0,bz=bv.length;bA<bz;bA++){delete bB[bv[bA]]}if(!(by?S:b.isEmptyObject)(bB)){return}}}if(!by){delete e[bw].data;if(!S(e[bw])){return}}if(b.support.deleteExpando||!e.setInterval){delete e[bw]}else{e[bw]=null}if(bD){if(b.support.deleteExpando){delete bx[bC]}else{if(bx.removeAttribute){bx.removeAttribute(bC)}else{bx[bC]=null}}}},_data:function(bv,e,bw){return b.data(bv,e,bw,true)},acceptData:function(bv){if(bv.nodeName){var e=b.noData[bv.nodeName.toLowerCase()];if(e){return !(e===true||bv.getAttribute("classid")!==e)}}return true}});b.fn.extend({data:function(by,bA){var bB,e,bw,bz=null;if(typeof by==="undefined"){if(this.length){bz=b.data(this[0]);if(this[0].nodeType===1&&!b._data(this[0],"parsedAttrs")){e=this[0].attributes;for(var bx=0,bv=e.length;bx<bv;bx++){bw=e[bx].name;if(bw.indexOf("data-")===0){bw=b.camelCase(bw.substring(5));a5(this[0],bw,bz[bw])}}b._data(this[0],"parsedAttrs",true)}}return bz}else{if(typeof by==="object"){return this.each(function(){b.data(this,by)})}}bB=by.split(".");bB[1]=bB[1]?"."+bB[1]:"";if(bA===L){bz=this.triggerHandler("getData"+bB[1]+"!",[bB[0]]);if(bz===L&&this.length){bz=b.data(this[0],by);bz=a5(this[0],by,bz)}return bz===L&&bB[1]?this.data(bB[0]):bz}else{return this.each(function(){var bC=b(this),bD=[bB[0],bA];bC.triggerHandler("setData"+bB[1]+"!",bD);b.data(this,by,bA);bC.triggerHandler("changeData"+bB[1]+"!",bD)})}},removeData:function(e){return this.each(function(){b.removeData(this,e)})}});function a5(bx,bw,by){if(by===L&&bx.nodeType===1){var bv="data-"+bw.replace(aA,"-$1").toLowerCase();by=bx.getAttribute(bv);if(typeof by==="string"){try{by=by==="true"?true:by==="false"?false:by==="null"?null:b.isNumeric(by)?parseFloat(by):aS.test(by)?b.parseJSON(by):by}catch(bz){}b.data(bx,bw,by)}else{by=L}}return by}function S(bv){for(var e in bv){if(e==="data"&&b.isEmptyObject(bv[e])){continue}if(e!=="toJSON"){return false}}return true}function bi(by,bx,bA){var bw=bx+"defer",bv=bx+"queue",e=bx+"mark",bz=b._data(by,bw);if(bz&&(bA==="queue"||!b._data(by,bv))&&(bA==="mark"||!b._data(by,e))){setTimeout(function(){if(!b._data(by,bv)&&!b._data(by,e)){b.removeData(by,bw,true);bz.fire()}},0)}}b.extend({_mark:function(bv,e){if(bv){e=(e||"fx")+"mark";b._data(bv,e,(b._data(bv,e)||0)+1)}},_unmark:function(by,bx,bv){if(by!==true){bv=bx;bx=by;by=false}if(bx){bv=bv||"fx";var e=bv+"mark",bw=by?0:((b._data(bx,e)||1)-1);if(bw){b._data(bx,e,bw)}else{b.removeData(bx,e,true);bi(bx,bv,"mark")}}},queue:function(bv,e,bx){var bw;if(bv){e=(e||"fx")+"queue";bw=b._data(bv,e);if(bx){if(!bw||b.isArray(bx)){bw=b._data(bv,e,b.makeArray(bx))}else{bw.push(bx)}}return bw||[]}},dequeue:function(by,bx){bx=bx||"fx";var bv=b.queue(by,bx),bw=bv.shift(),e={};if(bw==="inprogress"){bw=bv.shift()}if(bw){if(bx==="fx"){bv.unshift("inprogress")}b._data(by,bx+".run",e);bw.call(by,function(){b.dequeue(by,bx)},e)}if(!bv.length){b.removeData(by,bx+"queue "+bx+".run",true);bi(by,bx,"queue")}}});b.fn.extend({queue:function(e,bv){if(typeof e!=="string"){bv=e;e="fx"}if(bv===L){return b.queue(this[0],e)}return this.each(function(){var bw=b.queue(this,e,bv);if(e==="fx"&&bw[0]!=="inprogress"){b.dequeue(this,e)}})},dequeue:function(e){return this.each(function(){b.dequeue(this,e)})},delay:function(bv,e){bv=b.fx?b.fx.speeds[bv]||bv:bv;e=e||"fx";return this.queue(e,function(bx,bw){var by=setTimeout(bx,bv);bw.stop=function(){clearTimeout(by)}})},clearQueue:function(e){return this.queue(e||"fx",[])},promise:function(bD,bw){if(typeof bD!=="string"){bw=bD;bD=L}bD=bD||"fx";var e=b.Deferred(),bv=this,by=bv.length,bB=1,bz=bD+"defer",bA=bD+"queue",bC=bD+"mark",bx;function bE(){if(!(--bB)){e.resolveWith(bv,[bv])}}while(by--){if((bx=b.data(bv[by],bz,L,true)||(b.data(bv[by],bA,L,true)||b.data(bv[by],bC,L,true))&&b.data(bv[by],bz,b.Callbacks("once memory"),true))){bB++;bx.add(bE)}}bE();return e.promise()}});var aP=/[\n\t\r]/g,af=/\s+/,aU=/\r/g,g=/^(?:button|input)$/i,D=/^(?:button|input|object|select|textarea)$/i,l=/^a(?:rea)?$/i,ao=/^(?:autofocus|autoplay|async|checked|controls|defer|disabled|hidden|loop|multiple|open|readonly|required|scoped|selected)$/i,F=b.support.getSetAttribute,be,aY,aF;b.fn.extend({attr:function(e,bv){return b.access(this,e,bv,true,b.attr)},removeAttr:function(e){return this.each(function(){b.removeAttr(this,e)})},prop:function(e,bv){return b.access(this,e,bv,true,b.prop)},removeProp:function(e){e=b.propFix[e]||e;return this.each(function(){try{this[e]=L;delete this[e]}catch(bv){}})},addClass:function(by){var bA,bw,bv,bx,bz,bB,e;if(b.isFunction(by)){return this.each(function(bC){b(this).addClass(by.call(this,bC,this.className))})}if(by&&typeof by==="string"){bA=by.split(af);for(bw=0,bv=this.length;bw<bv;bw++){bx=this[bw];if(bx.nodeType===1){if(!bx.className&&bA.length===1){bx.className=by}else{bz=" "+bx.className+" ";for(bB=0,e=bA.length;bB<e;bB++){if(!~bz.indexOf(" "+bA[bB]+" ")){bz+=bA[bB]+" "}}bx.className=b.trim(bz)}}}}return this},removeClass:function(bz){var bA,bw,bv,by,bx,bB,e;if(b.isFunction(bz)){return this.each(function(bC){b(this).removeClass(bz.call(this,bC,this.className))})}if((bz&&typeof bz==="string")||bz===L){bA=(bz||"").split(af);for(bw=0,bv=this.length;bw<bv;bw++){by=this[bw];if(by.nodeType===1&&by.className){if(bz){bx=(" "+by.className+" ").replace(aP," ");for(bB=0,e=bA.length;bB<e;bB++){bx=bx.replace(" "+bA[bB]+" "," ")}by.className=b.trim(bx)}else{by.className=""}}}}return this},toggleClass:function(bx,bv){var bw=typeof bx,e=typeof bv==="boolean";if(b.isFunction(bx)){return this.each(function(by){b(this).toggleClass(bx.call(this,by,this.className,bv),bv)})}return this.each(function(){if(bw==="string"){var bA,bz=0,by=b(this),bB=bv,bC=bx.split(af);while((bA=bC[bz++])){bB=e?bB:!by.hasClass(bA);by[bB?"addClass":"removeClass"](bA)}}else{if(bw==="undefined"||bw==="boolean"){if(this.className){b._data(this,"__className__",this.className)}this.className=this.className||bx===false?"":b._data(this,"__className__")||""}}})},hasClass:function(e){var bx=" "+e+" ",bw=0,bv=this.length;for(;bw<bv;bw++){if(this[bw].nodeType===1&&(" "+this[bw].className+" ").replace(aP," ").indexOf(bx)>-1){return true}}return false},val:function(bx){var e,bv,by,bw=this[0];if(!arguments.length){if(bw){e=b.valHooks[bw.nodeName.toLowerCase()]||b.valHooks[bw.type];if(e&&"get" in e&&(bv=e.get(bw,"value"))!==L){return bv}bv=bw.value;return typeof bv==="string"?bv.replace(aU,""):bv==null?"":bv}return}by=b.isFunction(bx);return this.each(function(bA){var bz=b(this),bB;if(this.nodeType!==1){return}if(by){bB=bx.call(this,bA,bz.val())}else{bB=bx}if(bB==null){bB=""}else{if(typeof bB==="number"){bB+=""}else{if(b.isArray(bB)){bB=b.map(bB,function(bC){return bC==null?"":bC+""})}}}e=b.valHooks[this.nodeName.toLowerCase()]||b.valHooks[this.type];if(!e||!("set" in e)||e.set(this,bB,"value")===L){this.value=bB}})}});b.extend({valHooks:{option:{get:function(e){var bv=e.attributes.value;return !bv||bv.specified?e.value:e.text}},select:{get:function(e){var bA,bv,bz,bx,by=e.selectedIndex,bB=[],bC=e.options,bw=e.type==="select-one";if(by<0){return null}bv=bw?by:0;bz=bw?by+1:bC.length;for(;bv<bz;bv++){bx=bC[bv];if(bx.selected&&(b.support.optDisabled?!bx.disabled:bx.getAttribute("disabled")===null)&&(!bx.parentNode.disabled||!b.nodeName(bx.parentNode,"optgroup"))){bA=b(bx).val();if(bw){return bA}bB.push(bA)}}if(bw&&!bB.length&&bC.length){return b(bC[by]).val()}return bB},set:function(bv,bw){var e=b.makeArray(bw);b(bv).find("option").each(function(){this.selected=b.inArray(b(this).val(),e)>=0});if(!e.length){bv.selectedIndex=-1}return e}}},attrFn:{val:true,css:true,html:true,text:true,data:true,width:true,height:true,offset:true},attr:function(bA,bx,bB,bz){var bw,e,by,bv=bA.nodeType;if(!bA||bv===3||bv===8||bv===2){return}if(bz&&bx in b.attrFn){return b(bA)[bx](bB)}if(typeof bA.getAttribute==="undefined"){return b.prop(bA,bx,bB)}by=bv!==1||!b.isXMLDoc(bA);if(by){bx=bx.toLowerCase();e=b.attrHooks[bx]||(ao.test(bx)?aY:be)}if(bB!==L){if(bB===null){b.removeAttr(bA,bx);return}else{if(e&&"set" in e&&by&&(bw=e.set(bA,bB,bx))!==L){return bw}else{bA.setAttribute(bx,""+bB);return bB}}}else{if(e&&"get" in e&&by&&(bw=e.get(bA,bx))!==null){return bw}else{bw=bA.getAttribute(bx);return bw===null?L:bw}}},removeAttr:function(bx,bz){var by,bA,bv,e,bw=0;if(bz&&bx.nodeType===1){bA=bz.toLowerCase().split(af);e=bA.length;for(;bw<e;bw++){bv=bA[bw];if(bv){by=b.propFix[bv]||bv;b.attr(bx,bv,"");bx.removeAttribute(F?bv:by);if(ao.test(bv)&&by in bx){bx[by]=false}}}}},attrHooks:{type:{set:function(e,bv){if(g.test(e.nodeName)&&e.parentNode){b.error("type property can't be changed")}else{if(!b.support.radioValue&&bv==="radio"&&b.nodeName(e,"input")){var bw=e.value;e.setAttribute("type",bv);if(bw){e.value=bw}return bv}}}},value:{get:function(bv,e){if(be&&b.nodeName(bv,"button")){return be.get(bv,e)}return e in bv?bv.value:null},set:function(bv,bw,e){if(be&&b.nodeName(bv,"button")){return be.set(bv,bw,e)}bv.value=bw}}},propFix:{tabindex:"tabIndex",readonly:"readOnly","for":"htmlFor","class":"className",maxlength:"maxLength",cellspacing:"cellSpacing",cellpadding:"cellPadding",rowspan:"rowSpan",colspan:"colSpan",usemap:"useMap",frameborder:"frameBorder",contenteditable:"contentEditable"},prop:function(bz,bx,bA){var bw,e,by,bv=bz.nodeType;if(!bz||bv===3||bv===8||bv===2){return}by=bv!==1||!b.isXMLDoc(bz);if(by){bx=b.propFix[bx]||bx;e=b.propHooks[bx]}if(bA!==L){if(e&&"set" in e&&(bw=e.set(bz,bA,bx))!==L){return bw}else{return(bz[bx]=bA)}}else{if(e&&"get" in e&&(bw=e.get(bz,bx))!==null){return bw}else{return bz[bx]}}},propHooks:{tabIndex:{get:function(bv){var e=bv.getAttributeNode("tabindex");return e&&e.specified?parseInt(e.value,10):D.test(bv.nodeName)||l.test(bv.nodeName)&&bv.href?0:L}}}});b.attrHooks.tabindex=b.propHooks.tabIndex;aY={get:function(bv,e){var bx,bw=b.prop(bv,e);return bw===true||typeof bw!=="boolean"&&(bx=bv.getAttributeNode(e))&&bx.nodeValue!==false?e.toLowerCase():L},set:function(bv,bx,e){var bw;if(bx===false){b.removeAttr(bv,e)}else{bw=b.propFix[e]||e;if(bw in bv){bv[bw]=true}bv.setAttribute(e,e.toLowerCase())}return e}};if(!F){aF={name:true,id:true};be=b.valHooks.button={get:function(bw,bv){var e;e=bw.getAttributeNode(bv);return e&&(aF[bv]?e.nodeValue!=="":e.specified)?e.nodeValue:L},set:function(bw,bx,bv){var e=bw.getAttributeNode(bv);if(!e){e=av.createAttribute(bv);bw.setAttributeNode(e)}return(e.nodeValue=bx+"")}};b.attrHooks.tabindex.set=be.set;b.each(["width","height"],function(bv,e){b.attrHooks[e]=b.extend(b.attrHooks[e],{set:function(bw,bx){if(bx===""){bw.setAttribute(e,"auto");return bx}}})});b.attrHooks.contenteditable={get:be.get,set:function(bv,bw,e){if(bw===""){bw="false"}be.set(bv,bw,e)}}}if(!b.support.hrefNormalized){b.each(["href","src","width","height"],function(bv,e){b.attrHooks[e]=b.extend(b.attrHooks[e],{get:function(bx){var bw=bx.getAttribute(e,2);return bw===null?L:bw}})})}if(!b.support.style){b.attrHooks.style={get:function(e){return e.style.cssText.toLowerCase()||L},set:function(e,bv){return(e.style.cssText=""+bv)}}}if(!b.support.optSelected){b.propHooks.selected=b.extend(b.propHooks.selected,{get:function(bv){var e=bv.parentNode;if(e){e.selectedIndex;if(e.parentNode){e.parentNode.selectedIndex}}return null}})}if(!b.support.enctype){b.propFix.enctype="encoding"}if(!b.support.checkOn){b.each(["radio","checkbox"],function(){b.valHooks[this]={get:function(e){return e.getAttribute("value")===null?"on":e.value}}})}b.each(["radio","checkbox"],function(){b.valHooks[this]=b.extend(b.valHooks[this],{set:function(e,bv){if(b.isArray(bv)){return(e.checked=b.inArray(b(e).val(),bv)>=0)}}})});var bd=/^(?:textarea|input|select)$/i,n=/^([^\.]*)?(?:\.(.+))?$/,J=/\bhover(\.\S+)?\b/,aO=/^key/,bf=/^(?:mouse|contextmenu)|click/,T=/^(?:focusinfocus|focusoutblur)$/,U=/^(\w*)(?:#([\w\-]+))?(?:\.([\w\-]+))?$/,Y=function(e){var bv=U.exec(e);if(bv){bv[1]=(bv[1]||"").toLowerCase();bv[3]=bv[3]&&new RegExp("(?:^|\\s)"+bv[3]+"(?:\\s|$)")}return bv},j=function(bw,e){var bv=bw.attributes||{};return((!e[1]||bw.nodeName.toLowerCase()===e[1])&&(!e[2]||(bv.id||{}).value===e[2])&&(!e[3]||e[3].test((bv["class"]||{}).value)))},bt=function(e){return b.event.special.hover?e:e.replace(J,"mouseenter$1 mouseleave$1")};b.event={add:function(bx,bC,bJ,bA,by){var bD,bB,bK,bI,bH,bF,e,bG,bv,bz,bw,bE;if(bx.nodeType===3||bx.nodeType===8||!bC||!bJ||!(bD=b._data(bx))){return}if(bJ.handler){bv=bJ;bJ=bv.handler}if(!bJ.guid){bJ.guid=b.guid++}bK=bD.events;if(!bK){bD.events=bK={}}bB=bD.handle;if(!bB){bD.handle=bB=function(bL){return typeof b!=="undefined"&&(!bL||b.event.triggered!==bL.type)?b.event.dispatch.apply(bB.elem,arguments):L};bB.elem=bx}bC=b.trim(bt(bC)).split(" ");for(bI=0;bI<bC.length;bI++){bH=n.exec(bC[bI])||[];bF=bH[1];e=(bH[2]||"").split(".").sort();bE=b.event.special[bF]||{};bF=(by?bE.delegateType:bE.bindType)||bF;bE=b.event.special[bF]||{};bG=b.extend({type:bF,origType:bH[1],data:bA,handler:bJ,guid:bJ.guid,selector:by,quick:Y(by),namespace:e.join(".")},bv);bw=bK[bF];if(!bw){bw=bK[bF]=[];bw.delegateCount=0;if(!bE.setup||bE.setup.call(bx,bA,e,bB)===false){if(bx.addEventListener){bx.addEventListener(bF,bB,false)}else{if(bx.attachEvent){bx.attachEvent("on"+bF,bB)}}}}if(bE.add){bE.add.call(bx,bG);if(!bG.handler.guid){bG.handler.guid=bJ.guid}}if(by){bw.splice(bw.delegateCount++,0,bG)}else{bw.push(bG)}b.event.global[bF]=true}bx=null},global:{},remove:function(bJ,bE,bv,bH,bB){var bI=b.hasData(bJ)&&b._data(bJ),bF,bx,bz,bL,bC,bA,bG,bw,by,bK,bD,e;if(!bI||!(bw=bI.events)){return}bE=b.trim(bt(bE||"")).split(" ");for(bF=0;bF<bE.length;bF++){bx=n.exec(bE[bF])||[];bz=bL=bx[1];bC=bx[2];if(!bz){for(bz in bw){b.event.remove(bJ,bz+bE[bF],bv,bH,true)}continue}by=b.event.special[bz]||{};bz=(bH?by.delegateType:by.bindType)||bz;bD=bw[bz]||[];bA=bD.length;bC=bC?new RegExp("(^|\\.)"+bC.split(".").sort().join("\\.(?:.*\\.)?")+"(\\.|$)"):null;for(bG=0;bG<bD.length;bG++){e=bD[bG];if((bB||bL===e.origType)&&(!bv||bv.guid===e.guid)&&(!bC||bC.test(e.namespace))&&(!bH||bH===e.selector||bH==="**"&&e.selector)){bD.splice(bG--,1);if(e.selector){bD.delegateCount--}if(by.remove){by.remove.call(bJ,e)}}}if(bD.length===0&&bA!==bD.length){if(!by.teardown||by.teardown.call(bJ,bC)===false){b.removeEvent(bJ,bz,bI.handle)}delete bw[bz]}}if(b.isEmptyObject(bw)){bK=bI.handle;if(bK){bK.elem=null}b.removeData(bJ,["events","handle"],true)}},customEvent:{getData:true,setData:true,changeData:true},trigger:function(bv,bD,bA,bJ){if(bA&&(bA.nodeType===3||bA.nodeType===8)){return}var bG=bv.type||bv,bx=[],e,bw,bC,bH,bz,by,bF,bE,bB,bI;if(T.test(bG+b.event.triggered)){return}if(bG.indexOf("!")>=0){bG=bG.slice(0,-1);bw=true}if(bG.indexOf(".")>=0){bx=bG.split(".");bG=bx.shift();bx.sort()}if((!bA||b.event.customEvent[bG])&&!b.event.global[bG]){return}bv=typeof bv==="object"?bv[b.expando]?bv:new b.Event(bG,bv):new b.Event(bG);bv.type=bG;bv.isTrigger=true;bv.exclusive=bw;bv.namespace=bx.join(".");bv.namespace_re=bv.namespace?new RegExp("(^|\\.)"+bx.join("\\.(?:.*\\.)?")+"(\\.|$)"):null;by=bG.indexOf(":")<0?"on"+bG:"";if(!bA){e=b.cache;for(bC in e){if(e[bC].events&&e[bC].events[bG]){b.event.trigger(bv,bD,e[bC].handle.elem,true)}}return}bv.result=L;if(!bv.target){bv.target=bA}bD=bD!=null?b.makeArray(bD):[];bD.unshift(bv);bF=b.event.special[bG]||{};if(bF.trigger&&bF.trigger.apply(bA,bD)===false){return}bB=[[bA,bF.bindType||bG]];if(!bJ&&!bF.noBubble&&!b.isWindow(bA)){bI=bF.delegateType||bG;bH=T.test(bI+bG)?bA:bA.parentNode;bz=null;for(;bH;bH=bH.parentNode){bB.push([bH,bI]);bz=bH}if(bz&&bz===bA.ownerDocument){bB.push([bz.defaultView||bz.parentWindow||bb,bI])}}for(bC=0;bC<bB.length&&!bv.isPropagationStopped();bC++){bH=bB[bC][0];bv.type=bB[bC][1];bE=(b._data(bH,"events")||{})[bv.type]&&b._data(bH,"handle");if(bE){bE.apply(bH,bD)}bE=by&&bH[by];if(bE&&b.acceptData(bH)&&bE.apply(bH,bD)===false){bv.preventDefault()}}bv.type=bG;if(!bJ&&!bv.isDefaultPrevented()){if((!bF._default||bF._default.apply(bA.ownerDocument,bD)===false)&&!(bG==="click"&&b.nodeName(bA,"a"))&&b.acceptData(bA)){if(by&&bA[bG]&&((bG!=="focus"&&bG!=="blur")||bv.target.offsetWidth!==0)&&!b.isWindow(bA)){bz=bA[by];if(bz){bA[by]=null}b.event.triggered=bG;bA[bG]();b.event.triggered=L;if(bz){bA[by]=bz}}}}return bv.result},dispatch:function(e){e=b.event.fix(e||bb.event);var bz=((b._data(this,"events")||{})[e.type]||[]),bA=bz.delegateCount,bG=[].slice.call(arguments,0),by=!e.exclusive&&!e.namespace,bH=[],bC,bB,bK,bx,bF,bE,bv,bD,bI,bw,bJ;bG[0]=e;e.delegateTarget=this;if(bA&&!e.target.disabled&&!(e.button&&e.type==="click")){bx=b(this);bx.context=this.ownerDocument||this;for(bK=e.target;bK!=this;bK=bK.parentNode||this){bE={};bD=[];bx[0]=bK;for(bC=0;bC<bA;bC++){bI=bz[bC];bw=bI.selector;if(bE[bw]===L){bE[bw]=(bI.quick?j(bK,bI.quick):bx.is(bw))}if(bE[bw]){bD.push(bI)}}if(bD.length){bH.push({elem:bK,matches:bD})}}}if(bz.length>bA){bH.push({elem:this,matches:bz.slice(bA)})}for(bC=0;bC<bH.length&&!e.isPropagationStopped();bC++){bv=bH[bC];e.currentTarget=bv.elem;for(bB=0;bB<bv.matches.length&&!e.isImmediatePropagationStopped();bB++){bI=bv.matches[bB];if(by||(!e.namespace&&!bI.namespace)||e.namespace_re&&e.namespace_re.test(bI.namespace)){e.data=bI.data;e.handleObj=bI;bF=((b.event.special[bI.origType]||{}).handle||bI.handler).apply(bv.elem,bG);if(bF!==L){e.result=bF;if(bF===false){e.preventDefault();e.stopPropagation()}}}}}return e.result},props:"attrChange attrName relatedNode srcElement altKey bubbles cancelable ctrlKey currentTarget eventPhase metaKey relatedTarget shiftKey target timeStamp view which".split(" "),fixHooks:{},keyHooks:{props:"char charCode key keyCode".split(" "),filter:function(bv,e){if(bv.which==null){bv.which=e.charCode!=null?e.charCode:e.keyCode}return bv}},mouseHooks:{props:"button buttons clientX clientY fromElement offsetX offsetY pageX pageY screenX screenY toElement".split(" "),filter:function(bx,bw){var by,bz,e,bv=bw.button,bA=bw.fromElement;if(bx.pageX==null&&bw.clientX!=null){by=bx.target.ownerDocument||av;bz=by.documentElement;e=by.body;bx.pageX=bw.clientX+(bz&&bz.scrollLeft||e&&e.scrollLeft||0)-(bz&&bz.clientLeft||e&&e.clientLeft||0);bx.pageY=bw.clientY+(bz&&bz.scrollTop||e&&e.scrollTop||0)-(bz&&bz.clientTop||e&&e.clientTop||0)}if(!bx.relatedTarget&&bA){bx.relatedTarget=bA===bx.target?bw.toElement:bA}if(!bx.which&&bv!==L){bx.which=(bv&1?1:(bv&2?3:(bv&4?2:0)))}return bx}},fix:function(bw){if(bw[b.expando]){return bw}var bv,bz,e=bw,bx=b.event.fixHooks[bw.type]||{},by=bx.props?this.props.concat(bx.props):this.props;bw=b.Event(e);for(bv=by.length;bv;){bz=by[--bv];bw[bz]=e[bz]}if(!bw.target){bw.target=e.srcElement||av}if(bw.target.nodeType===3){bw.target=bw.target.parentNode}if(bw.metaKey===L){bw.metaKey=bw.ctrlKey}return bx.filter?bx.filter(bw,e):bw},special:{ready:{setup:b.bindReady},load:{noBubble:true},focus:{delegateType:"focusin"},blur:{delegateType:"focusout"},beforeunload:{setup:function(bw,bv,e){if(b.isWindow(this)){this.onbeforeunload=e}},teardown:function(bv,e){if(this.onbeforeunload===e){this.onbeforeunload=null}}}},simulate:function(bw,by,bx,bv){var bz=b.extend(new b.Event(),bx,{type:bw,isSimulated:true,originalEvent:{}});if(bv){b.event.trigger(bz,null,by)}else{b.event.dispatch.call(by,bz)}if(bz.isDefaultPrevented()){bx.preventDefault()}}};b.event.handle=b.event.dispatch;b.removeEvent=av.removeEventListener?function(bv,e,bw){if(bv.removeEventListener){bv.removeEventListener(e,bw,false)}}:function(bv,e,bw){if(bv.detachEvent){bv.detachEvent("on"+e,bw)}};b.Event=function(bv,e){if(!(this instanceof b.Event)){return new b.Event(bv,e)}if(bv&&bv.type){this.originalEvent=bv;this.type=bv.type;this.isDefaultPrevented=(bv.defaultPrevented||bv.returnValue===false||bv.getPreventDefault&&bv.getPreventDefault())?i:bk}else{this.type=bv}if(e){b.extend(this,e)}this.timeStamp=bv&&bv.timeStamp||b.now();this[b.expando]=true};function bk(){return false}function i(){return true}b.Event.prototype={preventDefault:function(){this.isDefaultPrevented=i;var bv=this.originalEvent;if(!bv){return}if(bv.preventDefault){bv.preventDefault()}else{bv.returnValue=false}},stopPropagation:function(){this.isPropagationStopped=i;var bv=this.originalEvent;if(!bv){return}if(bv.stopPropagation){bv.stopPropagation()}bv.cancelBubble=true},stopImmediatePropagation:function(){this.isImmediatePropagationStopped=i;this.stopPropagation()},isDefaultPrevented:bk,isPropagationStopped:bk,isImmediatePropagationStopped:bk};b.each({mouseenter:"mouseover",mouseleave:"mouseout"},function(bv,e){b.event.special[bv]={delegateType:e,bindType:e,handle:function(bz){var bB=this,bA=bz.relatedTarget,by=bz.handleObj,bw=by.selector,bx;if(!bA||(bA!==bB&&!b.contains(bB,bA))){bz.type=by.origType;bx=by.handler.apply(this,arguments);bz.type=e}return bx}}});if(!b.support.submitBubbles){b.event.special.submit={setup:function(){if(b.nodeName(this,"form")){return false}b.event.add(this,"click._submit keypress._submit",function(bx){var bw=bx.target,bv=b.nodeName(bw,"input")||b.nodeName(bw,"button")?bw.form:L;if(bv&&!bv._submit_attached){b.event.add(bv,"submit._submit",function(e){if(this.parentNode&&!e.isTrigger){b.event.simulate("submit",this.parentNode,e,true)}});bv._submit_attached=true}})},teardown:function(){if(b.nodeName(this,"form")){return false}b.event.remove(this,"._submit")}}}if(!b.support.changeBubbles){b.event.special.change={setup:function(){if(bd.test(this.nodeName)){if(this.type==="checkbox"||this.type==="radio"){b.event.add(this,"propertychange._change",function(e){if(e.originalEvent.propertyName==="checked"){this._just_changed=true}});b.event.add(this,"click._change",function(e){if(this._just_changed&&!e.isTrigger){this._just_changed=false;b.event.simulate("change",this,e,true)}})}return false}b.event.add(this,"beforeactivate._change",function(bw){var bv=bw.target;if(bd.test(bv.nodeName)&&!bv._change_attached){b.event.add(bv,"change._change",function(e){if(this.parentNode&&!e.isSimulated&&!e.isTrigger){b.event.simulate("change",this.parentNode,e,true)}});bv._change_attached=true}})},handle:function(bv){var e=bv.target;if(this!==e||bv.isSimulated||bv.isTrigger||(e.type!=="radio"&&e.type!=="checkbox")){return bv.handleObj.handler.apply(this,arguments)}},teardown:function(){b.event.remove(this,"._change");return bd.test(this.nodeName)}}}if(!b.support.focusinBubbles){b.each({focus:"focusin",blur:"focusout"},function(bx,e){var bv=0,bw=function(by){b.event.simulate(e,by.target,b.event.fix(by),true)};b.event.special[e]={setup:function(){if(bv++===0){av.addEventListener(bx,bw,true)}},teardown:function(){if(--bv===0){av.removeEventListener(bx,bw,true)}}}})}b.fn.extend({on:function(bw,e,bz,by,bv){var bA,bx;if(typeof bw==="object"){if(typeof e!=="string"){bz=e;e=L}for(bx in bw){this.on(bx,e,bz,bw[bx],bv)}return this}if(bz==null&&by==null){by=e;bz=e=L}else{if(by==null){if(typeof e==="string"){by=bz;bz=L}else{by=bz;bz=e;e=L}}}if(by===false){by=bk}else{if(!by){return this}}if(bv===1){bA=by;by=function(bB){b().off(bB);return bA.apply(this,arguments)};by.guid=bA.guid||(bA.guid=b.guid++)}return this.each(function(){b.event.add(this,bw,by,bz,e)})},one:function(bv,e,bx,bw){return this.on.call(this,bv,e,bx,bw,1)},off:function(bw,e,by){if(bw&&bw.preventDefault&&bw.handleObj){var bv=bw.handleObj;b(bw.delegateTarget).off(bv.namespace?bv.type+"."+bv.namespace:bv.type,bv.selector,bv.handler);return this}if(typeof bw==="object"){for(var bx in bw){this.off(bx,e,bw[bx])}return this}if(e===false||typeof e==="function"){by=e;e=L}if(by===false){by=bk}return this.each(function(){b.event.remove(this,bw,by,e)})},bind:function(e,bw,bv){return this.on(e,null,bw,bv)},unbind:function(e,bv){return this.off(e,null,bv)},live:function(e,bw,bv){b(this.context).on(e,this.selector,bw,bv);return this},die:function(e,bv){b(this.context).off(e,this.selector||"**",bv);return this},delegate:function(e,bv,bx,bw){return this.on(bv,e,bx,bw)},undelegate:function(e,bv,bw){return arguments.length==1?this.off(e,"**"):this.off(bv,e,bw)},trigger:function(e,bv){return this.each(function(){b.event.trigger(e,bv,this)})},triggerHandler:function(e,bv){if(this[0]){return b.event.trigger(e,bv,this[0],true)}},toggle:function(bx){var bv=arguments,e=bx.guid||b.guid++,bw=0,by=function(bz){var bA=(b._data(this,"lastToggle"+bx.guid)||0)%bw;b._data(this,"lastToggle"+bx.guid,bA+1);bz.preventDefault();return bv[bA].apply(this,arguments)||false};by.guid=e;while(bw<bv.length){bv[bw++].guid=e}return this.click(by)},hover:function(e,bv){return this.mouseenter(e).mouseleave(bv||e)}});b.each(("blur focus focusin focusout load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup error contextmenu").split(" "),function(bv,e){b.fn[e]=function(bx,bw){if(bw==null){bw=bx;bx=null}return arguments.length>0?this.on(e,null,bx,bw):this.trigger(e)};if(b.attrFn){b.attrFn[e]=true}if(aO.test(e)){b.event.fixHooks[e]=b.event.keyHooks}if(bf.test(e)){b.event.fixHooks[e]=b.event.mouseHooks}});
/*!
* Sizzle CSS Selector Engine
* Copyright 2011, The Dojo Foundation
* Released under the MIT, BSD, and GPL Licenses.
* More information: http://sizzlejs.com/
*/
(function(){var bH=/((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^\[\]]*\]|['"][^'"]*['"]|[^\[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g,bC="sizcache"+(Math.random()+"").replace(".",""),bI=0,bL=Object.prototype.toString,bB=false,bA=true,bK=/\\/g,bO=/\r\n/g,bQ=/\W/;[0,0].sort(function(){bA=false;return 0});var by=function(bV,e,bY,bZ){bY=bY||[];e=e||av;var b1=e;if(e.nodeType!==1&&e.nodeType!==9){return[]}if(!bV||typeof bV!=="string"){return bY}var bS,b3,b6,bR,b2,b5,b4,bX,bU=true,bT=by.isXML(e),bW=[],b0=bV;do{bH.exec("");bS=bH.exec(b0);if(bS){b0=bS[3];bW.push(bS[1]);if(bS[2]){bR=bS[3];break}}}while(bS);if(bW.length>1&&bD.exec(bV)){if(bW.length===2&&bE.relative[bW[0]]){b3=bM(bW[0]+bW[1],e,bZ)}else{b3=bE.relative[bW[0]]?[e]:by(bW.shift(),e);while(bW.length){bV=bW.shift();if(bE.relative[bV]){bV+=bW.shift()}b3=bM(bV,b3,bZ)}}}else{if(!bZ&&bW.length>1&&e.nodeType===9&&!bT&&bE.match.ID.test(bW[0])&&!bE.match.ID.test(bW[bW.length-1])){b2=by.find(bW.shift(),e,bT);e=b2.expr?by.filter(b2.expr,b2.set)[0]:b2.set[0]}if(e){b2=bZ?{expr:bW.pop(),set:bF(bZ)}:by.find(bW.pop(),bW.length===1&&(bW[0]==="~"||bW[0]==="+")&&e.parentNode?e.parentNode:e,bT);b3=b2.expr?by.filter(b2.expr,b2.set):b2.set;if(bW.length>0){b6=bF(b3)}else{bU=false}while(bW.length){b5=bW.pop();b4=b5;if(!bE.relative[b5]){b5=""}else{b4=bW.pop()}if(b4==null){b4=e}bE.relative[b5](b6,b4,bT)}}else{b6=bW=[]}}if(!b6){b6=b3}if(!b6){by.error(b5||bV)}if(bL.call(b6)==="[object Array]"){if(!bU){bY.push.apply(bY,b6)}else{if(e&&e.nodeType===1){for(bX=0;b6[bX]!=null;bX++){if(b6[bX]&&(b6[bX]===true||b6[bX].nodeType===1&&by.contains(e,b6[bX]))){bY.push(b3[bX])}}}else{for(bX=0;b6[bX]!=null;bX++){if(b6[bX]&&b6[bX].nodeType===1){bY.push(b3[bX])}}}}}else{bF(b6,bY)}if(bR){by(bR,b1,bY,bZ);by.uniqueSort(bY)}return bY};by.uniqueSort=function(bR){if(bJ){bB=bA;bR.sort(bJ);if(bB){for(var e=1;e<bR.length;e++){if(bR[e]===bR[e-1]){bR.splice(e--,1)}}}}return bR};by.matches=function(e,bR){return by(e,null,null,bR)};by.matchesSelector=function(e,bR){return by(bR,null,null,[e]).length>0};by.find=function(bX,e,bY){var bW,bS,bU,bT,bV,bR;if(!bX){return[]}for(bS=0,bU=bE.order.length;bS<bU;bS++){bV=bE.order[bS];if((bT=bE.leftMatch[bV].exec(bX))){bR=bT[1];bT.splice(1,1);if(bR.substr(bR.length-1)!=="\\"){bT[1]=(bT[1]||"").replace(bK,"");bW=bE.find[bV](bT,e,bY);if(bW!=null){bX=bX.replace(bE.match[bV],"");break}}}}if(!bW){bW=typeof e.getElementsByTagName!=="undefined"?e.getElementsByTagName("*"):[]}return{set:bW,expr:bX}};by.filter=function(b1,b0,b4,bU){var bW,e,bZ,b6,b3,bR,bT,bV,b2,bS=b1,b5=[],bY=b0,bX=b0&&b0[0]&&by.isXML(b0[0]);while(b1&&b0.length){for(bZ in bE.filter){if((bW=bE.leftMatch[bZ].exec(b1))!=null&&bW[2]){bR=bE.filter[bZ];bT=bW[1];e=false;bW.splice(1,1);if(bT.substr(bT.length-1)==="\\"){continue}if(bY===b5){b5=[]}if(bE.preFilter[bZ]){bW=bE.preFilter[bZ](bW,bY,b4,b5,bU,bX);if(!bW){e=b6=true}else{if(bW===true){continue}}}if(bW){for(bV=0;(b3=bY[bV])!=null;bV++){if(b3){b6=bR(b3,bW,bV,bY);b2=bU^b6;if(b4&&b6!=null){if(b2){e=true}else{bY[bV]=false}}else{if(b2){b5.push(b3);e=true}}}}}if(b6!==L){if(!b4){bY=b5}b1=b1.replace(bE.match[bZ],"");if(!e){return[]}break}}}if(b1===bS){if(e==null){by.error(b1)}else{break}}bS=b1}return bY};by.error=function(e){throw new Error("Syntax error, unrecognized expression: "+e)};var bw=by.getText=function(bU){var bS,bT,e=bU.nodeType,bR="";if(e){if(e===1||e===9){if(typeof bU.textContent==="string"){return bU.textContent}else{if(typeof bU.innerText==="string"){return bU.innerText.replace(bO,"")}else{for(bU=bU.firstChild;bU;bU=bU.nextSibling){bR+=bw(bU)}}}}else{if(e===3||e===4){return bU.nodeValue}}}else{for(bS=0;(bT=bU[bS]);bS++){if(bT.nodeType!==8){bR+=bw(bT)}}}return bR};var bE=by.selectors={order:["ID","NAME","TAG"],match:{ID:/#((?:[\w\u00c0-\uFFFF\-]|\\.)+)/,CLASS:/\.((?:[\w\u00c0-\uFFFF\-]|\\.)+)/,NAME:/\[name=['"]*((?:[\w\u00c0-\uFFFF\-]|\\.)+)['"]*\]/,ATTR:/\[\s*((?:[\w\u00c0-\uFFFF\-]|\\.)+)\s*(?:(\S?=)\s*(?:(['"])(.*?)\3|(#?(?:[\w\u00c0-\uFFFF\-]|\\.)*)|)|)\s*\]/,TAG:/^((?:[\w\u00c0-\uFFFF\*\-]|\\.)+)/,CHILD:/:(only|nth|last|first)-child(?:\(\s*(even|odd|(?:[+\-]?\d+|(?:[+\-]?\d*)?n\s*(?:[+\-]\s*\d+)?))\s*\))?/,POS:/:(nth|eq|gt|lt|first|last|even|odd)(?:\((\d*)\))?(?=[^\-]|$)/,PSEUDO:/:((?:[\w\u00c0-\uFFFF\-]|\\.)+)(?:\((['"]?)((?:\([^\)]+\)|[^\(\)]*)+)\2\))?/},leftMatch:{},attrMap:{"class":"className","for":"htmlFor"},attrHandle:{href:function(e){return e.getAttribute("href")},type:function(e){return e.getAttribute("type")}},relative:{"+":function(bW,bR){var bT=typeof bR==="string",bV=bT&&!bQ.test(bR),bX=bT&&!bV;if(bV){bR=bR.toLowerCase()}for(var bS=0,e=bW.length,bU;bS<e;bS++){if((bU=bW[bS])){while((bU=bU.previousSibling)&&bU.nodeType!==1){}bW[bS]=bX||bU&&bU.nodeName.toLowerCase()===bR?bU||false:bU===bR}}if(bX){by.filter(bR,bW,true)}},">":function(bW,bR){var bV,bU=typeof bR==="string",bS=0,e=bW.length;if(bU&&!bQ.test(bR)){bR=bR.toLowerCase();for(;bS<e;bS++){bV=bW[bS];if(bV){var bT=bV.parentNode;bW[bS]=bT.nodeName.toLowerCase()===bR?bT:false}}}else{for(;bS<e;bS++){bV=bW[bS];if(bV){bW[bS]=bU?bV.parentNode:bV.parentNode===bR}}if(bU){by.filter(bR,bW,true)}}},"":function(bT,bR,bV){var bU,bS=bI++,e=bN;if(typeof bR==="string"&&!bQ.test(bR)){bR=bR.toLowerCase();bU=bR;e=bv}e("parentNode",bR,bS,bT,bU,bV)},"~":function(bT,bR,bV){var bU,bS=bI++,e=bN;if(typeof bR==="string"&&!bQ.test(bR)){bR=bR.toLowerCase();bU=bR;e=bv}e("previousSibling",bR,bS,bT,bU,bV)}},find:{ID:function(bR,bS,bT){if(typeof bS.getElementById!=="undefined"&&!bT){var e=bS.getElementById(bR[1]);return e&&e.parentNode?[e]:[]}},NAME:function(bS,bV){if(typeof bV.getElementsByName!=="undefined"){var bR=[],bU=bV.getElementsByName(bS[1]);for(var bT=0,e=bU.length;bT<e;bT++){if(bU[bT].getAttribute("name")===bS[1]){bR.push(bU[bT])}}return bR.length===0?null:bR}},TAG:function(e,bR){if(typeof bR.getElementsByTagName!=="undefined"){return bR.getElementsByTagName(e[1])}}},preFilter:{CLASS:function(bT,bR,bS,e,bW,bX){bT=" "+bT[1].replace(bK,"")+" ";if(bX){return bT}for(var bU=0,bV;(bV=bR[bU])!=null;bU++){if(bV){if(bW^(bV.className&&(" "+bV.className+" ").replace(/[\t\n\r]/g," ").indexOf(bT)>=0)){if(!bS){e.push(bV)}}else{if(bS){bR[bU]=false}}}}return false},ID:function(e){return e[1].replace(bK,"")},TAG:function(bR,e){return bR[1].replace(bK,"").toLowerCase()},CHILD:function(e){if(e[1]==="nth"){if(!e[2]){by.error(e[0])}e[2]=e[2].replace(/^\+|\s*/g,"");var bR=/(-?)(\d*)(?:n([+\-]?\d*))?/.exec(e[2]==="even"&&"2n"||e[2]==="odd"&&"2n+1"||!/\D/.test(e[2])&&"0n+"+e[2]||e[2]);e[2]=(bR[1]+(bR[2]||1))-0;e[3]=bR[3]-0}else{if(e[2]){by.error(e[0])}}e[0]=bI++;return e},ATTR:function(bU,bR,bS,e,bV,bW){var bT=bU[1]=bU[1].replace(bK,"");if(!bW&&bE.attrMap[bT]){bU[1]=bE.attrMap[bT]}bU[4]=(bU[4]||bU[5]||"").replace(bK,"");if(bU[2]==="~="){bU[4]=" "+bU[4]+" "}return bU},PSEUDO:function(bU,bR,bS,e,bV){if(bU[1]==="not"){if((bH.exec(bU[3])||"").length>1||/^\w/.test(bU[3])){bU[3]=by(bU[3],null,null,bR)}else{var bT=by.filter(bU[3],bR,bS,true^bV);if(!bS){e.push.apply(e,bT)}return false}}else{if(bE.match.POS.test(bU[0])||bE.match.CHILD.test(bU[0])){return true}}return bU},POS:function(e){e.unshift(true);return e}},filters:{enabled:function(e){return e.disabled===false&&e.type!=="hidden"},disabled:function(e){return e.disabled===true},checked:function(e){return e.checked===true},selected:function(e){if(e.parentNode){e.parentNode.selectedIndex}return e.selected===true},parent:function(e){return !!e.firstChild},empty:function(e){return !e.firstChild},has:function(bS,bR,e){return !!by(e[3],bS).length},header:function(e){return(/h\d/i).test(e.nodeName)},text:function(bS){var e=bS.getAttribute("type"),bR=bS.type;return bS.nodeName.toLowerCase()==="input"&&"text"===bR&&(e===bR||e===null)},radio:function(e){return e.nodeName.toLowerCase()==="input"&&"radio"===e.type},checkbox:function(e){return e.nodeName.toLowerCase()==="input"&&"checkbox"===e.type},file:function(e){return e.nodeName.toLowerCase()==="input"&&"file"===e.type},password:function(e){return e.nodeName.toLowerCase()==="input"&&"password"===e.type},submit:function(bR){var e=bR.nodeName.toLowerCase();return(e==="input"||e==="button")&&"submit"===bR.type},image:function(e){return e.nodeName.toLowerCase()==="input"&&"image"===e.type},reset:function(bR){var e=bR.nodeName.toLowerCase();return(e==="input"||e==="button")&&"reset"===bR.type},button:function(bR){var e=bR.nodeName.toLowerCase();return e==="input"&&"button"===bR.type||e==="button"},input:function(e){return(/input|select|textarea|button/i).test(e.nodeName)},focus:function(e){return e===e.ownerDocument.activeElement}},setFilters:{first:function(bR,e){return e===0},last:function(bS,bR,e,bT){return bR===bT.length-1},even:function(bR,e){return e%2===0},odd:function(bR,e){return e%2===1},lt:function(bS,bR,e){return bR<e[3]-0},gt:function(bS,bR,e){return bR>e[3]-0},nth:function(bS,bR,e){return e[3]-0===bR},eq:function(bS,bR,e){return e[3]-0===bR}},filter:{PSEUDO:function(bS,bX,bW,bY){var e=bX[1],bR=bE.filters[e];if(bR){return bR(bS,bW,bX,bY)}else{if(e==="contains"){return(bS.textContent||bS.innerText||bw([bS])||"").indexOf(bX[3])>=0}else{if(e==="not"){var bT=bX[3];for(var bV=0,bU=bT.length;bV<bU;bV++){if(bT[bV]===bS){return false}}return true}else{by.error(e)}}}},CHILD:function(bS,bU){var bT,b0,bW,bZ,e,bV,bY,bX=bU[1],bR=bS;switch(bX){case"only":case"first":while((bR=bR.previousSibling)){if(bR.nodeType===1){return false}}if(bX==="first"){return true}bR=bS;case"last":while((bR=bR.nextSibling)){if(bR.nodeType===1){return false}}return true;case"nth":bT=bU[2];b0=bU[3];if(bT===1&&b0===0){return true}bW=bU[0];bZ=bS.parentNode;if(bZ&&(bZ[bC]!==bW||!bS.nodeIndex)){bV=0;for(bR=bZ.firstChild;bR;bR=bR.nextSibling){if(bR.nodeType===1){bR.nodeIndex=++bV}}bZ[bC]=bW}bY=bS.nodeIndex-b0;if(bT===0){return bY===0}else{return(bY%bT===0&&bY/bT>=0)}}},ID:function(bR,e){return bR.nodeType===1&&bR.getAttribute("id")===e},TAG:function(bR,e){return(e==="*"&&bR.nodeType===1)||!!bR.nodeName&&bR.nodeName.toLowerCase()===e},CLASS:function(bR,e){return(" "+(bR.className||bR.getAttribute("class"))+" ").indexOf(e)>-1},ATTR:function(bV,bT){var bS=bT[1],e=by.attr?by.attr(bV,bS):bE.attrHandle[bS]?bE.attrHandle[bS](bV):bV[bS]!=null?bV[bS]:bV.getAttribute(bS),bW=e+"",bU=bT[2],bR=bT[4];return e==null?bU==="!=":!bU&&by.attr?e!=null:bU==="="?bW===bR:bU==="*="?bW.indexOf(bR)>=0:bU==="~="?(" "+bW+" ").indexOf(bR)>=0:!bR?bW&&e!==false:bU==="!="?bW!==bR:bU==="^="?bW.indexOf(bR)===0:bU==="$="?bW.substr(bW.length-bR.length)===bR:bU==="|="?bW===bR||bW.substr(0,bR.length+1)===bR+"-":false},POS:function(bU,bR,bS,bV){var e=bR[2],bT=bE.setFilters[e];if(bT){return bT(bU,bS,bR,bV)}}}};var bD=bE.match.POS,bx=function(bR,e){return"\\"+(e-0+1)};for(var bz in bE.match){bE.match[bz]=new RegExp(bE.match[bz].source+(/(?![^\[]*\])(?![^\(]*\))/.source));bE.leftMatch[bz]=new RegExp(/(^(?:.|\r|\n)*?)/.source+bE.match[bz].source.replace(/\\(\d+)/g,bx))}var bF=function(bR,e){bR=Array.prototype.slice.call(bR,0);if(e){e.push.apply(e,bR);return e}return bR};try{Array.prototype.slice.call(av.documentElement.childNodes,0)[0].nodeType}catch(bP){bF=function(bU,bT){var bS=0,bR=bT||[];if(bL.call(bU)==="[object Array]"){Array.prototype.push.apply(bR,bU)}else{if(typeof bU.length==="number"){for(var e=bU.length;bS<e;bS++){bR.push(bU[bS])}}else{for(;bU[bS];bS++){bR.push(bU[bS])}}}return bR}}var bJ,bG;if(av.documentElement.compareDocumentPosition){bJ=function(bR,e){if(bR===e){bB=true;return 0}if(!bR.compareDocumentPosition||!e.compareDocumentPosition){return bR.compareDocumentPosition?-1:1}return bR.compareDocumentPosition(e)&4?-1:1}}else{bJ=function(bY,bX){if(bY===bX){bB=true;return 0}else{if(bY.sourceIndex&&bX.sourceIndex){return bY.sourceIndex-bX.sourceIndex}}var bV,bR,bS=[],e=[],bU=bY.parentNode,bW=bX.parentNode,bZ=bU;if(bU===bW){return bG(bY,bX)}else{if(!bU){return -1}else{if(!bW){return 1}}}while(bZ){bS.unshift(bZ);bZ=bZ.parentNode}bZ=bW;while(bZ){e.unshift(bZ);bZ=bZ.parentNode}bV=bS.length;bR=e.length;for(var bT=0;bT<bV&&bT<bR;bT++){if(bS[bT]!==e[bT]){return bG(bS[bT],e[bT])}}return bT===bV?bG(bY,e[bT],-1):bG(bS[bT],bX,1)};bG=function(bR,e,bS){if(bR===e){return bS}var bT=bR.nextSibling;while(bT){if(bT===e){return -1}bT=bT.nextSibling}return 1}}(function(){var bR=av.createElement("div"),bS="script"+(new Date()).getTime(),e=av.documentElement;bR.innerHTML="<a name='"+bS+"'/>";e.insertBefore(bR,e.firstChild);if(av.getElementById(bS)){bE.find.ID=function(bU,bV,bW){if(typeof bV.getElementById!=="undefined"&&!bW){var bT=bV.getElementById(bU[1]);return bT?bT.id===bU[1]||typeof bT.getAttributeNode!=="undefined"&&bT.getAttributeNode("id").nodeValue===bU[1]?[bT]:L:[]}};bE.filter.ID=function(bV,bT){var bU=typeof bV.getAttributeNode!=="undefined"&&bV.getAttributeNode("id");return bV.nodeType===1&&bU&&bU.nodeValue===bT}}e.removeChild(bR);e=bR=null})();(function(){var e=av.createElement("div");e.appendChild(av.createComment(""));if(e.getElementsByTagName("*").length>0){bE.find.TAG=function(bR,bV){var bU=bV.getElementsByTagName(bR[1]);if(bR[1]==="*"){var bT=[];for(var bS=0;bU[bS];bS++){if(bU[bS].nodeType===1){bT.push(bU[bS])}}bU=bT}return bU}}e.innerHTML="<a href='#'></a>";if(e.firstChild&&typeof e.firstChild.getAttribute!=="undefined"&&e.firstChild.getAttribute("href")!=="#"){bE.attrHandle.href=function(bR){return bR.getAttribute("href",2)}}e=null})();if(av.querySelectorAll){(function(){var e=by,bT=av.createElement("div"),bS="__sizzle__";bT.innerHTML="<p class='TEST'></p>";if(bT.querySelectorAll&&bT.querySelectorAll(".TEST").length===0){return}by=function(b4,bV,bZ,b3){bV=bV||av;if(!b3&&!by.isXML(bV)){var b2=/^(\w+$)|^\.([\w\-]+$)|^#([\w\-]+$)/.exec(b4);if(b2&&(bV.nodeType===1||bV.nodeType===9)){if(b2[1]){return bF(bV.getElementsByTagName(b4),bZ)}else{if(b2[2]&&bE.find.CLASS&&bV.getElementsByClassName){return bF(bV.getElementsByClassName(b2[2]),bZ)}}}if(bV.nodeType===9){if(b4==="body"&&bV.body){return bF([bV.body],bZ)}else{if(b2&&b2[3]){var bY=bV.getElementById(b2[3]);if(bY&&bY.parentNode){if(bY.id===b2[3]){return bF([bY],bZ)}}else{return bF([],bZ)}}}try{return bF(bV.querySelectorAll(b4),bZ)}catch(b0){}}else{if(bV.nodeType===1&&bV.nodeName.toLowerCase()!=="object"){var bW=bV,bX=bV.getAttribute("id"),bU=bX||bS,b6=bV.parentNode,b5=/^\s*[+~]/.test(b4);if(!bX){bV.setAttribute("id",bU)}else{bU=bU.replace(/'/g,"\\$&")}if(b5&&b6){bV=bV.parentNode}try{if(!b5||b6){return bF(bV.querySelectorAll("[id='"+bU+"'] "+b4),bZ)}}catch(b1){}finally{if(!bX){bW.removeAttribute("id")}}}}}return e(b4,bV,bZ,b3)};for(var bR in e){by[bR]=e[bR]}bT=null})()}(function(){var e=av.documentElement,bS=e.matchesSelector||e.mozMatchesSelector||e.webkitMatchesSelector||e.msMatchesSelector;if(bS){var bU=!bS.call(av.createElement("div"),"div"),bR=false;try{bS.call(av.documentElement,"[test!='']:sizzle")}catch(bT){bR=true}by.matchesSelector=function(bW,bY){bY=bY.replace(/\=\s*([^'"\]]*)\s*\]/g,"='$1']");if(!by.isXML(bW)){try{if(bR||!bE.match.PSEUDO.test(bY)&&!/!=/.test(bY)){var bV=bS.call(bW,bY);if(bV||!bU||bW.document&&bW.document.nodeType!==11){return bV}}}catch(bX){}}return by(bY,null,null,[bW]).length>0}}})();(function(){var e=av.createElement("div");e.innerHTML="<div class='test e'></div><div class='test'></div>";if(!e.getElementsByClassName||e.getElementsByClassName("e").length===0){return}e.lastChild.className="e";if(e.getElementsByClassName("e").length===1){return}bE.order.splice(1,0,"CLASS");bE.find.CLASS=function(bR,bS,bT){if(typeof bS.getElementsByClassName!=="undefined"&&!bT){return bS.getElementsByClassName(bR[1])}};e=null})();function bv(bR,bW,bV,bZ,bX,bY){for(var bT=0,bS=bZ.length;bT<bS;bT++){var e=bZ[bT];if(e){var bU=false;e=e[bR];while(e){if(e[bC]===bV){bU=bZ[e.sizset];break}if(e.nodeType===1&&!bY){e[bC]=bV;e.sizset=bT}if(e.nodeName.toLowerCase()===bW){bU=e;break}e=e[bR]}bZ[bT]=bU}}}function bN(bR,bW,bV,bZ,bX,bY){for(var bT=0,bS=bZ.length;bT<bS;bT++){var e=bZ[bT];if(e){var bU=false;e=e[bR];while(e){if(e[bC]===bV){bU=bZ[e.sizset];break}if(e.nodeType===1){if(!bY){e[bC]=bV;e.sizset=bT}if(typeof bW!=="string"){if(e===bW){bU=true;break}}else{if(by.filter(bW,[e]).length>0){bU=e;break}}}e=e[bR]}bZ[bT]=bU}}}if(av.documentElement.contains){by.contains=function(bR,e){return bR!==e&&(bR.contains?bR.contains(e):true)}}else{if(av.documentElement.compareDocumentPosition){by.contains=function(bR,e){return !!(bR.compareDocumentPosition(e)&16)}}else{by.contains=function(){return false}}}by.isXML=function(e){var bR=(e?e.ownerDocument||e:0).documentElement;return bR?bR.nodeName!=="HTML":false};var bM=function(bS,e,bW){var bV,bX=[],bU="",bY=e.nodeType?[e]:e;while((bV=bE.match.PSEUDO.exec(bS))){bU+=bV[0];bS=bS.replace(bE.match.PSEUDO,"")}bS=bE.relative[bS]?bS+"*":bS;for(var bT=0,bR=bY.length;bT<bR;bT++){by(bS,bY[bT],bX,bW)}return by.filter(bU,bX)};by.attr=b.attr;by.selectors.attrMap={};b.find=by;b.expr=by.selectors;b.expr[":"]=b.expr.filters;b.unique=by.uniqueSort;b.text=by.getText;b.isXMLDoc=by.isXML;b.contains=by.contains})();var ab=/Until$/,aq=/^(?:parents|prevUntil|prevAll)/,a9=/,/,bp=/^.[^:#\[\.,]*$/,P=Array.prototype.slice,H=b.expr.match.POS,ay={children:true,contents:true,next:true,prev:true};b.fn.extend({find:function(e){var bw=this,by,bv;if(typeof e!=="string"){return b(e).filter(function(){for(by=0,bv=bw.length;by<bv;by++){if(b.contains(bw[by],this)){return true}}})}var bx=this.pushStack("","find",e),bA,bB,bz;for(by=0,bv=this.length;by<bv;by++){bA=bx.length;b.find(e,this[by],bx);if(by>0){for(bB=bA;bB<bx.length;bB++){for(bz=0;bz<bA;bz++){if(bx[bz]===bx[bB]){bx.splice(bB--,1);break}}}}}return bx},has:function(bv){var e=b(bv);return this.filter(function(){for(var bx=0,bw=e.length;bx<bw;bx++){if(b.contains(this,e[bx])){return true}}})},not:function(e){return this.pushStack(aG(this,e,false),"not",e)},filter:function(e){return this.pushStack(aG(this,e,true),"filter",e)},is:function(e){return !!e&&(typeof e==="string"?H.test(e)?b(e,this.context).index(this[0])>=0:b.filter(e,this).length>0:this.filter(e).length>0)},closest:function(by,bx){var bv=[],bw,e,bz=this[0];if(b.isArray(by)){var bB=1;while(bz&&bz.ownerDocument&&bz!==bx){for(bw=0;bw<by.length;bw++
gitextract_wywq0zby/
├── .gitignore
├── .travis.yml
├── LICENSE
├── Makefile
├── README.md
├── docs/
│ └── documentation/
│ ├── annotated.html
│ ├── annotated_dup.js
│ ├── canvas_8c.html
│ ├── canvas_8c.js
│ ├── canvas_8c__incl.md5
│ ├── canvas_8h.html
│ ├── canvas_8h.js
│ ├── canvas_8h__dep__incl.md5
│ ├── canvas_8h__incl.md5
│ ├── canvas_8h_source.html
│ ├── classes.html
│ ├── doxygen.css
│ ├── dynsections.js
│ ├── files.html
│ ├── files.js
│ ├── functions.html
│ ├── functions_vars.html
│ ├── globals.html
│ ├── globals_func.html
│ ├── graph_legend.html
│ ├── graph_legend.md5
│ ├── index.html
│ ├── jquery.js
│ ├── navtree.css
│ ├── navtree.js
│ ├── navtreedata.js
│ ├── navtreeindex0.js
│ ├── resize.js
│ ├── search/
│ │ ├── all_0.html
│ │ ├── all_0.js
│ │ ├── all_1.html
│ │ ├── all_1.js
│ │ ├── all_2.html
│ │ ├── all_2.js
│ │ ├── all_3.html
│ │ ├── all_3.js
│ │ ├── all_4.html
│ │ ├── all_4.js
│ │ ├── all_5.html
│ │ ├── all_5.js
│ │ ├── all_6.html
│ │ ├── all_6.js
│ │ ├── classes_0.html
│ │ ├── classes_0.js
│ │ ├── classes_1.html
│ │ ├── classes_1.js
│ │ ├── files_0.html
│ │ ├── files_0.js
│ │ ├── files_1.html
│ │ ├── files_1.js
│ │ ├── functions_0.html
│ │ ├── functions_0.js
│ │ ├── functions_1.html
│ │ ├── functions_1.js
│ │ ├── functions_2.html
│ │ ├── functions_2.js
│ │ ├── nomatches.html
│ │ ├── search.css
│ │ ├── search.js
│ │ ├── searchdata.js
│ │ ├── variables_0.html
│ │ ├── variables_0.js
│ │ ├── variables_1.html
│ │ ├── variables_1.js
│ │ ├── variables_2.html
│ │ ├── variables_2.js
│ │ ├── variables_3.html
│ │ └── variables_3.js
│ ├── structCanvasRenderingContext2D-members.html
│ ├── structCanvasRenderingContext2D.html
│ ├── structCanvasRenderingContext2D.js
│ ├── structCanvasRenderingContext2D__coll__graph.md5
│ ├── structHTMLCanvasElement-members.html
│ ├── structHTMLCanvasElement.html
│ ├── structHTMLCanvasElement.js
│ ├── structHTMLCanvasElement__coll__graph.md5
│ ├── structHTMLWindow-members.html
│ ├── structHTMLWindow.html
│ ├── structHTMLWindow.js
│ ├── tabs.css
│ ├── window_8c.html
│ ├── window_8c.js
│ ├── window_8c__incl.md5
│ ├── window_8h.html
│ ├── window_8h.js
│ ├── window_8h__dep__incl.md5
│ ├── window_8h__incl.md5
│ └── window_8h_source.html
├── include/
│ ├── canvas.c
│ ├── canvas.h
│ ├── window.c
│ └── window.h
├── src/
│ ├── Doxyfile
│ ├── canvas.c
│ ├── canvas.h
│ ├── window.c
│ └── window.h
└── test/
├── Makefile
├── build/
│ ├── index.html
│ ├── index.js
│ └── index.wasm
├── lib/
│ ├── canvas.c
│ ├── canvas.h
│ ├── window.c
│ └── window.h
└── src/
├── driver.c
└── web/
└── index_template.html
SYMBOL INDEX (311 symbols across 19 files)
FILE: docs/documentation/dynsections.js
function toggleVisibility (line 1) | function toggleVisibility(linkObj)
function updateStripes (line 22) | function updateStripes()
function toggleLevel (line 28) | function toggleLevel(level)
function toggleFolder (line 49) | function toggleFolder(id)
function toggleInherit (line 84) | function toggleInherit(id)
FILE: docs/documentation/jquery.js
function b0 (line 16) | function b0(b3,b4){return new b0.fn.init(b3,b4)}
function bw (line 16) | function bw(){if(bF.isReady){return}try{av.documentElement.doScroll("lef...
function X (line 16) | function X(e){var bv=a2[e]={},bw,bx;e=e.split(/\s+/);for(bw=0,bx=e.lengt...
function bD (line 16) | function bD(bF){return function(bG){bx[bF]=arguments.length>1?aJ.call(ar...
function bz (line 16) | function bz(bF){return function(bG){bB[bF]=arguments.length>1?aJ.call(ar...
function a5 (line 16) | function a5(bx,bw,by){if(by===L&&bx.nodeType===1){var bv="data-"+bw.repl...
function S (line 16) | function S(bv){for(var e in bv){if(e==="data"&&b.isEmptyObject(bv[e])){c...
function bi (line 16) | function bi(by,bx,bA){var bw=bx+"defer",bv=bx+"queue",e=bx+"mark",bz=b._...
function bE (line 16) | function bE(){if(!(--bB)){e.resolveWith(bv,[bv])}}
function bk (line 16) | function bk(){return false}
function i (line 16) | function i(){return true}
function bv (line 23) | function bv(bR,bW,bV,bZ,bX,bY){for(var bT=0,bS=bZ.length;bT<bS;bT++){var...
function bN (line 23) | function bN(bR,bW,bV,bZ,bX,bY){for(var bT=0,bS=bZ.length;bT<bS;bT++){var...
function C (line 23) | function C(e){return !e||!e.parentNode||e.parentNode.nodeType===11}
function aG (line 23) | function aG(bx,bw,e){bw=bw||0;if(b.isFunction(bw)){return b.grep(bx,func...
function a (line 23) | function a(e){var bw=aR.split("|"),bv=e.createDocumentFragment();if(bv.c...
function ba (line 23) | function ba(e,bv){return b.nodeName(e,"table")?(e.getElementsByTagName("...
function t (line 23) | function t(bB,bv){if(bv.nodeType!==1||!b.hasData(bB)){return}var by,bx,e...
function ai (line 23) | function ai(bv,e){var bw;if(e.nodeType!==1){return}if(e.clearAttributes)...
function bg (line 23) | function bg(e){if(typeof e.getElementsByTagName!=="undefined"){return e....
function az (line 23) | function az(e){if(e.type==="checkbox"||e.type==="radio"){e.defaultChecke...
function E (line 23) | function E(e){var bv=(e.nodeName||"").toLowerCase();if(bv==="input"){az(...
function al (line 23) | function al(e){var bv=av.createElement("div");ac.appendChild(bv);bv.inne...
function bo (line 23) | function bo(e,bv){if(bv.src){b.ajax({url:bv.src,async:false,dataType:"sc...
function p (line 23) | function p(by,bw,bv){var bA=bw==="width"?by.offsetWidth:by.offsetHeight,...
function f (line 23) | function f(e){return function(by,bA){if(typeof by!=="string"){bA=by;by="...
function aW (line 23) | function aW(bv,bE,bz,bD,bB,bx){bB=bB||bE.dataTypes[0];bx=bx||{};bx[bB]=t...
function am (line 23) | function am(bw,bx){var bv,e,by=b.ajaxSettings.flatOptions||{};for(bv in ...
function bF (line 23) | function bF(bZ,bU,b0,bW){if(bA===2){return}bA=2;if(bE){clearTimeout(bE)}...
function v (line 23) | function v(bw,by,bv,bx){if(b.isArray(by)){b.each(by,function(bA,bz){if(b...
function bj (line 23) | function bj(bD,bC,bz){var bv=bD.contents,bB=bD.dataTypes,bw=bD.responseF...
function G (line 23) | function G(bH,bz){if(bH.dataFilter){bz=bH.dataFilter(bz,bH.dataType)}var...
function aL (line 23) | function aL(){try{return new bb.XMLHttpRequest()}catch(bv){}}
function aj (line 23) | function aj(){try{return new bb.ActiveXObject("Microsoft.XMLHTTP")}catch...
function bv (line 23) | function bv(){if(e.queue===false){b._mark(this)}var bE=b.extend({},e),bK...
function bB (line 23) | function bB(bE,bF,bD){var bC=bF[bD];b.removeData(bE,bD,true);bC.stop(e)}
function bh (line 23) | function bh(){setTimeout(at,0);return(a4=b.now())}
function at (line 23) | function at(){a4=L}
function a0 (line 23) | function a0(bv,e){var bw={};b.each(aH.concat.apply([],aH.slice(0,e)),fun...
function bv (line 23) | function bv(bA){return e.step(bA)}
function x (line 23) | function x(bx){if(!Q[bx]){var e=av.body,bv=b("<"+bx+">").appendTo(e),bw=...
function aK (line 23) | function aK(e){return b.isWindow(e)?e:e.nodeType===9?e.defaultView||e.pa...
function j (line 32) | function j(m,l,i,n){a.each(f,function(){l-=parseFloat(a.curCSS(m,"paddin...
function c (line 32) | function c(g,e){var j=g.nodeName.toLowerCase();if("area"===j){var i=g.pa...
function b (line 32) | function b(e){return !a(e).parents().andSelf().filter(function(){return ...
function a (line 61) | function a(j){j=j||location.href;return"#"+j.replace(/^[^#]*#?(.*)$/,"$1")}
function n (line 61) | function n(){var r=a(),q=o(m);if(r!==m){l(m=r,q);$(e).trigger(c)}else{if...
function h (line 61) | function h(n){j.animate(g,e,d.easing,n&&function(){n.call(this,f,d)})}
function b (line 61) | function b(d){return typeof d=="object"?d:{top:d,left:d}}
function b (line 68) | function b(){var F=this;F.top="auto";F.left="auto";F.right="auto";F.bott...
function t (line 68) | function t(K,N,F){var J=null;function L(P,Q){M();if(!K.data(e)){if(!P){c...
function j (line 68) | function j(){function G(M,L,J,O,P){var K=L.split("-")[0],N=new b(),I;if(...
function x (line 68) | function x(Q){var P=new j(),O=k("#"+Q.popupId);if(O.length===0){O=k("<di...
function q (line 68) | function q(F){return window.SVGElement&&F[0] instanceof SVGElement}
function h (line 68) | function h(){if(!c.mouseTrackingActive){c.mouseTrackingActive=true;k(fun...
function i (line 68) | function i(F){c.currentX=F.pageX;c.currentY=F.pageY}
function v (line 68) | function v(F){var H=F.offset(),J=F[0].getBoundingClientRect(),I=J.right-...
function B (line 68) | function B(I){var G=I.data(y),F=I.data(o),K=I.data(l),H,J;if(G){if(k.isF...
function m (line 68) | function m(M,L,K){var G=c.scrollTop,J=c.scrollLeft,I=G+c.windowHeight,F=...
function a (line 68) | function a(G){var F=0;while(G){G&=G-1;F++}return F}
function e (line 78) | function e(h,i){if(h.originalEvent.touches.length>1){return}h.preventDef...
function k (line 87) | function k(m){var n=".smartmenus_mouse";if(!h&&!m){var o=true,l=null;a(d...
function j (line 87) | function j(l){return !/^(4|mouse)$/.test(l.pointerType)}
function i (line 87) | function i(l,n){if(!n){n=""}var m={};a.each(l,function(o,p){m[p[0].split...
FILE: docs/documentation/navtree.js
function getData (line 5) | function getData(varName)
function stripPath (line 12) | function stripPath(uri)
function stripPath2 (line 17) | function stripPath2(uri)
function hashValue (line 25) | function hashValue()
function hashUrl (line 30) | function hashUrl()
function pathName (line 35) | function pathName()
function localStorageSupported (line 40) | function localStorageSupported()
function storeLink (line 51) | function storeLink(link)
function deleteLink (line 58) | function deleteLink()
function cachedLink (line 65) | function cachedLink()
function getScript (line 74) | function getScript(scriptName,func,show)
function createIndent (line 93) | function createIndent(o,domNode,node,level)
function gotoAnchor (line 128) | function gotoAnchor(anchor,aname,updateLocation)
function newNode (line 156) | function newNode(o, po, text, link, childrenData, lastNode)
function showRoot (line 237) | function showRoot()
function expandNode (line 252) | function expandNode(o, node, imm, showRoot)
function glowEffect (line 276) | function glowEffect(n,duration)
function highlightAnchor (line 283) | function highlightAnchor()
function selectAndHighlight (line 302) | function selectAndHighlight(hash,n)
function showNode (line 325) | function showNode(o, node, index, hash)
function removeToInsertLater (line 366) | function removeToInsertLater(element) {
function getNode (line 379) | function getNode(o, po)
function gotoNode (line 392) | function gotoNode(o,subIndex,root,hash,relpath)
function navTo (line 407) | function navTo(o,root,hash,relpath)
function showSyncOff (line 437) | function showSyncOff(n,relpath)
function showSyncOn (line 442) | function showSyncOn(n,relpath)
function toggleSyncButton (line 447) | function toggleSyncButton(relpath)
function initNavTree (line 461) | function initNavTree(toroot,relpath)
FILE: docs/documentation/resize.js
function initResizable (line 1) | function initResizable()
FILE: docs/documentation/search/search.js
function convertToId (line 1) | function convertToId(search)
function getXPos (line 24) | function getXPos(item)
function getYPos (line 38) | function getYPos(item)
function SearchBox (line 59) | function SearchBox(name, resultsPath, inFrame, label)
function SearchResults (line 404) | function SearchResults(name)
function setKeyActions (line 709) | function setKeyActions(elem,action)
function setClassAttr (line 716) | function setClassAttr(elem,attr)
function createResults (line 722) | function createResults()
function init_search (line 777) | function init_search()
FILE: include/canvas.c
function canvas_getWidth (line 13) | static int canvas_getWidth(HTMLCanvasElement *this)
function canvas_getHeight (line 20) | static int canvas_getHeight(HTMLCanvasElement *this)
function canvas_setWidth (line 27) | static void canvas_setWidth(HTMLCanvasElement *this, int width)
function canvas_setHeight (line 34) | static void canvas_setHeight(HTMLCanvasElement *this, int height)
function CanvasRenderingContext2D (line 41) | static CanvasRenderingContext2D *canvas_getContext(HTMLCanvasElement *th...
function HTMLCanvasElement (line 49) | HTMLCanvasElement *createCanvas(char *id)
function context2d_clearRect (line 72) | static void context2d_clearRect(CanvasRenderingContext2D *this, double x...
function context2d_fillRect (line 79) | static void context2d_fillRect(CanvasRenderingContext2D *this, double x,...
function context2d_strokeRect (line 86) | static void context2d_strokeRect(CanvasRenderingContext2D *this, double ...
function context2d_fillText (line 93) | static void context2d_fillText(CanvasRenderingContext2D *this, char *tex...
function context2d_strokeText (line 110) | static void context2d_strokeText(CanvasRenderingContext2D *this, char *t...
function context2d_setLineWidth (line 127) | static void context2d_setLineWidth(CanvasRenderingContext2D *this, doubl...
function context2d_getLineWidth (line 134) | static double context2d_getLineWidth(CanvasRenderingContext2D *this)
function context2d_setLineCap (line 141) | static void context2d_setLineCap(CanvasRenderingContext2D *this, char *t...
function context2d_setLineJoin (line 162) | static void context2d_setLineJoin(CanvasRenderingContext2D *this, char *...
function context2d_setFont (line 197) | static void context2d_setFont(CanvasRenderingContext2D *this, char *value)
function context2d_setTextAlign (line 218) | static void context2d_setTextAlign(CanvasRenderingContext2D *this, char ...
function context2d_setFillStyle (line 239) | static void context2d_setFillStyle(CanvasRenderingContext2D *this, char ...
function context2d_setStrokeStyle (line 260) | static void context2d_setStrokeStyle(CanvasRenderingContext2D *this, cha...
function context2d_beginPath (line 267) | static void context2d_beginPath(CanvasRenderingContext2D *this)
function context2d_closePath (line 274) | static void context2d_closePath(CanvasRenderingContext2D *this)
function context2d_moveTo (line 281) | static void context2d_moveTo(CanvasRenderingContext2D *this, double x, d...
function context2d_lineTo (line 288) | static void context2d_lineTo(CanvasRenderingContext2D *this, double x, d...
function context2d_bezierCurveTo (line 295) | static void context2d_bezierCurveTo(CanvasRenderingContext2D *this, doub...
function context2d_quadraticCurveTo (line 302) | static void context2d_quadraticCurveTo(CanvasRenderingContext2D *this, d...
function context2d_arc (line 309) | static void context2d_arc(CanvasRenderingContext2D *this, double x, doub...
function context2d_arcTo (line 316) | static void context2d_arcTo(CanvasRenderingContext2D *this, double x1, d...
function context2d_ellipse (line 323) | static void context2d_ellipse(CanvasRenderingContext2D *this, double x, ...
function context2d_rect (line 330) | static void context2d_rect(CanvasRenderingContext2D *this, double x, dou...
function context2d_fill (line 337) | static void context2d_fill(CanvasRenderingContext2D *this)
function context2d_stroke (line 344) | static void context2d_stroke(CanvasRenderingContext2D *this)
function context2d_clip (line 351) | static void context2d_clip(CanvasRenderingContext2D *this)
function context2d_isPointInPath (line 358) | static int context2d_isPointInPath(CanvasRenderingContext2D *this, doubl...
function context2d_isPointInStroke (line 365) | static int context2d_isPointInStroke(CanvasRenderingContext2D *this, dou...
function context2d_rotate (line 372) | static void context2d_rotate(CanvasRenderingContext2D *this, double angle)
function context2d_scale (line 379) | static void context2d_scale(CanvasRenderingContext2D *this, double x, do...
function context2d_translate (line 386) | static void context2d_translate(CanvasRenderingContext2D *this, double x...
function context2d_transform (line 393) | static void context2d_transform(CanvasRenderingContext2D *this, double a...
function context2d_setTransform (line 400) | static void context2d_setTransform(CanvasRenderingContext2D *this, doubl...
function context2d_resetTransform (line 407) | static void context2d_resetTransform(CanvasRenderingContext2D *this)
function context2d_setGlobalAlpha (line 414) | static void context2d_setGlobalAlpha(CanvasRenderingContext2D *this, dou...
function context2d_getGlobalAlpha (line 421) | static double context2d_getGlobalAlpha(CanvasRenderingContext2D *this)
function context2d_setGlobalCompositeOperation (line 428) | static void context2d_setGlobalCompositeOperation(CanvasRenderingContext...
function context2d_save (line 449) | static void context2d_save(CanvasRenderingContext2D *this)
function context2d_restore (line 456) | static void context2d_restore(CanvasRenderingContext2D *this)
function HTMLCanvasElement (line 463) | static HTMLCanvasElement *context2d_getCanvas(CanvasRenderingContext2D *...
function CanvasRenderingContext2D (line 469) | static CanvasRenderingContext2D *createContext(HTMLCanvasElement *canvas...
function freeCanvas (line 535) | void freeCanvas(HTMLCanvasElement *canvas)
FILE: include/canvas.h
type HTMLCanvasElement (line 15) | typedef struct HTMLCanvasElement HTMLCanvasElement;
type CanvasRenderingContext2D (line 16) | typedef struct CanvasRenderingContext2D CanvasRenderingContext2D;
type CanvasRenderingContext2D (line 54) | struct CanvasRenderingContext2D
type HTMLCanvasElement (line 147) | struct HTMLCanvasElement
FILE: include/window.c
function window_getInnerHeight (line 11) | static int window_getInnerHeight()
function window_getInnerWidth (line 17) | static int window_getInnerWidth()
function window_getOuterHeight (line 23) | static int window_getOuterHeight()
function window_getOuterWidth (line 29) | static int window_getOuterWidth()
function window_blur (line 35) | static void window_blur()
function HTMLWindow (line 43) | HTMLWindow *Window()
function freeWindow (line 57) | void freeWindow(HTMLWindow *window)
FILE: include/window.h
type HTMLWindow (line 14) | typedef struct HTMLWindow HTMLWindow;
type HTMLWindow (line 39) | struct HTMLWindow
FILE: src/canvas.c
function canvas_getWidth (line 13) | static int canvas_getWidth(HTMLCanvasElement *this)
function canvas_getHeight (line 20) | static int canvas_getHeight(HTMLCanvasElement *this)
function canvas_setWidth (line 27) | static void canvas_setWidth(HTMLCanvasElement *this, int width)
function canvas_setHeight (line 34) | static void canvas_setHeight(HTMLCanvasElement *this, int height)
function CanvasRenderingContext2D (line 41) | static CanvasRenderingContext2D *canvas_getContext(HTMLCanvasElement *th...
function HTMLCanvasElement (line 49) | HTMLCanvasElement *createCanvas(char *id)
function context2d_clearRect (line 72) | static void context2d_clearRect(CanvasRenderingContext2D *this, double x...
function context2d_fillRect (line 79) | static void context2d_fillRect(CanvasRenderingContext2D *this, double x,...
function context2d_strokeRect (line 86) | static void context2d_strokeRect(CanvasRenderingContext2D *this, double ...
function context2d_fillText (line 93) | static void context2d_fillText(CanvasRenderingContext2D *this, char *tex...
function context2d_strokeText (line 110) | static void context2d_strokeText(CanvasRenderingContext2D *this, char *t...
function context2d_setLineWidth (line 127) | static void context2d_setLineWidth(CanvasRenderingContext2D *this, doubl...
function context2d_getLineWidth (line 134) | static double context2d_getLineWidth(CanvasRenderingContext2D *this)
function context2d_setLineCap (line 141) | static void context2d_setLineCap(CanvasRenderingContext2D *this, char *t...
function context2d_setLineJoin (line 162) | static void context2d_setLineJoin(CanvasRenderingContext2D *this, char *...
function context2d_setFont (line 197) | static void context2d_setFont(CanvasRenderingContext2D *this, char *value)
function context2d_setTextAlign (line 218) | static void context2d_setTextAlign(CanvasRenderingContext2D *this, char ...
function context2d_setFillStyle (line 239) | static void context2d_setFillStyle(CanvasRenderingContext2D *this, char ...
function context2d_setStrokeStyle (line 260) | static void context2d_setStrokeStyle(CanvasRenderingContext2D *this, cha...
function context2d_beginPath (line 267) | static void context2d_beginPath(CanvasRenderingContext2D *this)
function context2d_closePath (line 274) | static void context2d_closePath(CanvasRenderingContext2D *this)
function context2d_moveTo (line 281) | static void context2d_moveTo(CanvasRenderingContext2D *this, double x, d...
function context2d_lineTo (line 288) | static void context2d_lineTo(CanvasRenderingContext2D *this, double x, d...
function context2d_bezierCurveTo (line 295) | static void context2d_bezierCurveTo(CanvasRenderingContext2D *this, doub...
function context2d_quadraticCurveTo (line 302) | static void context2d_quadraticCurveTo(CanvasRenderingContext2D *this, d...
function context2d_arc (line 309) | static void context2d_arc(CanvasRenderingContext2D *this, double x, doub...
function context2d_arcTo (line 316) | static void context2d_arcTo(CanvasRenderingContext2D *this, double x1, d...
function context2d_ellipse (line 323) | static void context2d_ellipse(CanvasRenderingContext2D *this, double x, ...
function context2d_rect (line 330) | static void context2d_rect(CanvasRenderingContext2D *this, double x, dou...
function context2d_fill (line 337) | static void context2d_fill(CanvasRenderingContext2D *this)
function context2d_stroke (line 344) | static void context2d_stroke(CanvasRenderingContext2D *this)
function context2d_clip (line 351) | static void context2d_clip(CanvasRenderingContext2D *this)
function context2d_isPointInPath (line 358) | static int context2d_isPointInPath(CanvasRenderingContext2D *this, doubl...
function context2d_isPointInStroke (line 365) | static int context2d_isPointInStroke(CanvasRenderingContext2D *this, dou...
function context2d_rotate (line 372) | static void context2d_rotate(CanvasRenderingContext2D *this, double angle)
function context2d_scale (line 379) | static void context2d_scale(CanvasRenderingContext2D *this, double x, do...
function context2d_translate (line 386) | static void context2d_translate(CanvasRenderingContext2D *this, double x...
function context2d_transform (line 393) | static void context2d_transform(CanvasRenderingContext2D *this, double a...
function context2d_setTransform (line 400) | static void context2d_setTransform(CanvasRenderingContext2D *this, doubl...
function context2d_resetTransform (line 407) | static void context2d_resetTransform(CanvasRenderingContext2D *this)
function context2d_setGlobalAlpha (line 414) | static void context2d_setGlobalAlpha(CanvasRenderingContext2D *this, dou...
function context2d_getGlobalAlpha (line 421) | static double context2d_getGlobalAlpha(CanvasRenderingContext2D *this)
function context2d_setGlobalCompositeOperation (line 428) | static void context2d_setGlobalCompositeOperation(CanvasRenderingContext...
function context2d_save (line 449) | static void context2d_save(CanvasRenderingContext2D *this)
function context2d_restore (line 456) | static void context2d_restore(CanvasRenderingContext2D *this)
function HTMLCanvasElement (line 463) | static HTMLCanvasElement *context2d_getCanvas(CanvasRenderingContext2D *...
function CanvasRenderingContext2D (line 469) | static CanvasRenderingContext2D *createContext(HTMLCanvasElement *canvas...
function freeCanvas (line 535) | void freeCanvas(HTMLCanvasElement *canvas)
FILE: src/canvas.h
type HTMLCanvasElement (line 15) | typedef struct HTMLCanvasElement HTMLCanvasElement;
type CanvasRenderingContext2D (line 16) | typedef struct CanvasRenderingContext2D CanvasRenderingContext2D;
type CanvasRenderingContext2D (line 54) | struct CanvasRenderingContext2D
type HTMLCanvasElement (line 147) | struct HTMLCanvasElement
FILE: src/window.c
function window_getInnerHeight (line 11) | static int window_getInnerHeight()
function window_getInnerWidth (line 17) | static int window_getInnerWidth()
function window_getOuterHeight (line 23) | static int window_getOuterHeight()
function window_getOuterWidth (line 29) | static int window_getOuterWidth()
function window_blur (line 35) | static void window_blur()
function HTMLWindow (line 43) | HTMLWindow *Window()
function freeWindow (line 57) | void freeWindow(HTMLWindow *window)
FILE: src/window.h
type HTMLWindow (line 14) | typedef struct HTMLWindow HTMLWindow;
type HTMLWindow (line 39) | struct HTMLWindow
FILE: test/build/index.js
function v (line 4) | function v(a){if(a){for(var b=w,c=a+void 0,e=a;b[e]&&!(e>=c);)++e;if(16<...
function x (line 5) | function x(a,b,c,e){if(0<e){e=c+e-1;for(var g=0;g<a.length;++g){var h=a....
function y (line 6) | function y(a){for(var b=0,c=0;c<a.length;++c){var e=a.charCodeAt(c);5529...
function z (line 6) | function z(a){var b=y(a)+1,c=A(b);x(a,B,c,b);return c}
function C (line 6) | function C(a){0<a%65536&&(a+=65536-a%65536);return a}
function G (line 7) | function G(){d.HEAP8=B=new Int8Array(D);d.HEAP16=new Int16Array(D);d.HEA...
function I (line 8) | function I(a){for(;0<a.length;){var b=a.shift();if("function"==typeof b)...
function ca (line 8) | function ca(){var a=d.preRun.shift();J.unshift(a)}
function Q (line 9) | function Q(){var a=R;return String.prototype.startsWith?a.startsWith("da...
function T (line 9) | function T(){try{if(d.wasmBinary)return new Uint8Array(d.wasmBinary);if(...
function da (line 10) | function da(){return d.wasmBinary||"function"!==typeof fetch?new Promise...
function ea (line 11) | function ea(a){function b(a){d.asm=a.exports;N--;d.monitorRunDependencie...
function X (line 23) | function X(){return B.length}
function fa (line 23) | function fa(a){a=C(a);var b=D.byteLength;try{return-1!==r.grow((a-b)/655...
function Y (line 26) | function Y(a){this.name="ExitStatus";this.message="Program terminated wi...
function Z (line 28) | function Z(a){function b(){if(!d.calledRun&&(d.calledRun=!0,!t)){M||(M=!...
function U (line 29) | function U(a){if(d.onAbort)d.onAbort(a);void 0!==a?(n(a),p(a),a=JSON.str...
FILE: test/lib/canvas.c
function canvas_getWidth (line 13) | static int canvas_getWidth(HTMLCanvasElement *this)
function canvas_getHeight (line 20) | static int canvas_getHeight(HTMLCanvasElement *this)
function canvas_setWidth (line 27) | static void canvas_setWidth(HTMLCanvasElement *this, int width)
function canvas_setHeight (line 34) | static void canvas_setHeight(HTMLCanvasElement *this, int height)
function CanvasRenderingContext2D (line 41) | static CanvasRenderingContext2D *canvas_getContext(HTMLCanvasElement *th...
function HTMLCanvasElement (line 49) | HTMLCanvasElement *createCanvas(char *id)
function context2d_clearRect (line 72) | static void context2d_clearRect(CanvasRenderingContext2D *this, double x...
function context2d_fillRect (line 79) | static void context2d_fillRect(CanvasRenderingContext2D *this, double x,...
function context2d_strokeRect (line 86) | static void context2d_strokeRect(CanvasRenderingContext2D *this, double ...
function context2d_fillText (line 93) | static void context2d_fillText(CanvasRenderingContext2D *this, char *tex...
function context2d_strokeText (line 110) | static void context2d_strokeText(CanvasRenderingContext2D *this, char *t...
function context2d_setLineWidth (line 127) | static void context2d_setLineWidth(CanvasRenderingContext2D *this, doubl...
function context2d_getLineWidth (line 134) | static double context2d_getLineWidth(CanvasRenderingContext2D *this)
function context2d_setLineCap (line 141) | static void context2d_setLineCap(CanvasRenderingContext2D *this, char *t...
function context2d_setLineJoin (line 162) | static void context2d_setLineJoin(CanvasRenderingContext2D *this, char *...
function context2d_setFont (line 197) | static void context2d_setFont(CanvasRenderingContext2D *this, char *value)
function context2d_setTextAlign (line 218) | static void context2d_setTextAlign(CanvasRenderingContext2D *this, char ...
function context2d_setFillStyle (line 239) | static void context2d_setFillStyle(CanvasRenderingContext2D *this, char ...
function context2d_setStrokeStyle (line 260) | static void context2d_setStrokeStyle(CanvasRenderingContext2D *this, cha...
function context2d_beginPath (line 267) | static void context2d_beginPath(CanvasRenderingContext2D *this)
function context2d_closePath (line 274) | static void context2d_closePath(CanvasRenderingContext2D *this)
function context2d_moveTo (line 281) | static void context2d_moveTo(CanvasRenderingContext2D *this, double x, d...
function context2d_lineTo (line 288) | static void context2d_lineTo(CanvasRenderingContext2D *this, double x, d...
function context2d_bezierCurveTo (line 295) | static void context2d_bezierCurveTo(CanvasRenderingContext2D *this, doub...
function context2d_quadraticCurveTo (line 302) | static void context2d_quadraticCurveTo(CanvasRenderingContext2D *this, d...
function context2d_arc (line 309) | static void context2d_arc(CanvasRenderingContext2D *this, double x, doub...
function context2d_arcTo (line 316) | static void context2d_arcTo(CanvasRenderingContext2D *this, double x1, d...
function context2d_ellipse (line 323) | static void context2d_ellipse(CanvasRenderingContext2D *this, double x, ...
function context2d_rect (line 330) | static void context2d_rect(CanvasRenderingContext2D *this, double x, dou...
function context2d_fill (line 337) | static void context2d_fill(CanvasRenderingContext2D *this)
function context2d_stroke (line 344) | static void context2d_stroke(CanvasRenderingContext2D *this)
function context2d_clip (line 351) | static void context2d_clip(CanvasRenderingContext2D *this)
function context2d_isPointInPath (line 358) | static int context2d_isPointInPath(CanvasRenderingContext2D *this, doubl...
function context2d_isPointInStroke (line 365) | static int context2d_isPointInStroke(CanvasRenderingContext2D *this, dou...
function context2d_rotate (line 372) | static void context2d_rotate(CanvasRenderingContext2D *this, double angle)
function context2d_scale (line 379) | static void context2d_scale(CanvasRenderingContext2D *this, double x, do...
function context2d_translate (line 386) | static void context2d_translate(CanvasRenderingContext2D *this, double x...
function context2d_transform (line 393) | static void context2d_transform(CanvasRenderingContext2D *this, double a...
function context2d_setTransform (line 400) | static void context2d_setTransform(CanvasRenderingContext2D *this, doubl...
function context2d_resetTransform (line 407) | static void context2d_resetTransform(CanvasRenderingContext2D *this)
function context2d_setGlobalAlpha (line 414) | static void context2d_setGlobalAlpha(CanvasRenderingContext2D *this, dou...
function context2d_getGlobalAlpha (line 421) | static double context2d_getGlobalAlpha(CanvasRenderingContext2D *this)
function context2d_setGlobalCompositeOperation (line 428) | static void context2d_setGlobalCompositeOperation(CanvasRenderingContext...
function context2d_save (line 449) | static void context2d_save(CanvasRenderingContext2D *this)
function context2d_restore (line 456) | static void context2d_restore(CanvasRenderingContext2D *this)
function HTMLCanvasElement (line 463) | static HTMLCanvasElement *context2d_getCanvas(CanvasRenderingContext2D *...
function CanvasRenderingContext2D (line 469) | static CanvasRenderingContext2D *createContext(HTMLCanvasElement *canvas...
function freeCanvas (line 535) | void freeCanvas(HTMLCanvasElement *canvas)
FILE: test/lib/canvas.h
type HTMLCanvasElement (line 15) | typedef struct HTMLCanvasElement HTMLCanvasElement;
type CanvasRenderingContext2D (line 16) | typedef struct CanvasRenderingContext2D CanvasRenderingContext2D;
type CanvasRenderingContext2D (line 54) | struct CanvasRenderingContext2D
type HTMLCanvasElement (line 147) | struct HTMLCanvasElement
FILE: test/lib/window.c
function window_getInnerHeight (line 11) | static int window_getInnerHeight()
function window_getInnerWidth (line 17) | static int window_getInnerWidth()
function window_getOuterHeight (line 23) | static int window_getOuterHeight()
function window_getOuterWidth (line 29) | static int window_getOuterWidth()
function window_blur (line 35) | static void window_blur()
function HTMLWindow (line 43) | HTMLWindow *Window()
function freeWindow (line 57) | void freeWindow(HTMLWindow *window)
FILE: test/lib/window.h
type HTMLWindow (line 14) | typedef struct HTMLWindow HTMLWindow;
type HTMLWindow (line 39) | struct HTMLWindow
FILE: test/src/driver.c
function log (line 7) | static void log(char *msg)
function assertEquals (line 15) | static void assertEquals(char *testID, int expected, int actual)
function assertStringEquals (line 32) | static void assertStringEquals(char *testID, char *expected, char *actual)
function main (line 49) | int main(void)
Condensed preview — 112 files, each showing path, character count, and a content snippet. Download the .json file or copy for the full structured content (790K chars).
[
{
"path": ".gitignore",
"chars": 439,
"preview": ".vscode\n\n# Prerequisites\n*.d\n\n# Object files\n*.o\n*.ko\n*.obj\n*.elf\n\n# Linker output\n*.ilk\n*.map\n*.exp\n\n# Precompiled Head"
},
{
"path": ".travis.yml",
"chars": 242,
"preview": "notifications:\n email: false\n\nlanguage: c\n\nsudo: required\n\nservices:\n - docker\n\nbefore_install:\n - docker run -dit --"
},
{
"path": "LICENSE",
"chars": 1066,
"preview": "MIT License\n\nCopyright (c) 2019 alextyner\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\n"
},
{
"path": "Makefile",
"chars": 784,
"preview": "# this target prepares source/header files for distribution and then demos the example project\n.PHONY: all\nall: dist dem"
},
{
"path": "README.md",
"chars": 5755,
"preview": "[](https://travis-ci.com/alextyner/wasm-ca"
},
{
"path": "docs/documentation/annotated.html",
"chars": 5011,
"preview": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\""
},
{
"path": "docs/documentation/annotated_dup.js",
"chars": 287,
"preview": "var annotated_dup =\n[\n [ \"CanvasRenderingContext2D\", \"structCanvasRenderingContext2D.html\", \"structCanvasRenderingCon"
},
{
"path": "docs/documentation/canvas_8c.html",
"chars": 8946,
"preview": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\""
},
{
"path": "docs/documentation/canvas_8c.js",
"chars": 181,
"preview": "var canvas_8c =\n[\n [ \"createCanvas\", \"canvas_8c.html#a69ca7012750d2dac1fd7e35005fdb3d5\", null ],\n [ \"freeCanvas\", "
},
{
"path": "docs/documentation/canvas_8c__incl.md5",
"chars": 32,
"preview": "7f33409a509a14f48c500b0e0d42c912"
},
{
"path": "docs/documentation/canvas_8h.html",
"chars": 11562,
"preview": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\""
},
{
"path": "docs/documentation/canvas_8h.js",
"chars": 559,
"preview": "var canvas_8h =\n[\n [ \"CanvasRenderingContext2D\", \"structCanvasRenderingContext2D.html\", \"structCanvasRenderingContext"
},
{
"path": "docs/documentation/canvas_8h__dep__incl.md5",
"chars": 32,
"preview": "9fec2122c1c9f713ea0a17ef3ccca9fc"
},
{
"path": "docs/documentation/canvas_8h__incl.md5",
"chars": 32,
"preview": "2f7835a013fac345c8e8d887f34da735"
},
{
"path": "docs/documentation/canvas_8h_source.html",
"chars": 27027,
"preview": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\""
},
{
"path": "docs/documentation/classes.html",
"chars": 5056,
"preview": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\""
},
{
"path": "docs/documentation/doxygen.css",
"chars": 27960,
"preview": "/* The standard CSS for doxygen 1.8.13 */\n\nbody, table, div, p, dl {\n\tfont: 400 14px/22px Roboto,sans-serif;\n}\n\np.refere"
},
{
"path": "docs/documentation/dynsections.js",
"chars": 3140,
"preview": "function toggleVisibility(linkObj)\n{\n var base = $(linkObj).attr('id');\n var summary = $('#'+base+'-summary');\n var cont"
},
{
"path": "docs/documentation/files.html",
"chars": 5409,
"preview": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\""
},
{
"path": "docs/documentation/files.js",
"chars": 219,
"preview": "var files =\n[\n [ \"canvas.c\", \"canvas_8c.html\", \"canvas_8c\" ],\n [ \"canvas.h\", \"canvas_8h.html\", \"canvas_8h\" ],\n "
},
{
"path": "docs/documentation/functions.html",
"chars": 5088,
"preview": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\""
},
{
"path": "docs/documentation/functions_vars.html",
"chars": 4981,
"preview": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\""
},
{
"path": "docs/documentation/globals.html",
"chars": 4576,
"preview": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\""
},
{
"path": "docs/documentation/globals_func.html",
"chars": 4480,
"preview": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\""
},
{
"path": "docs/documentation/graph_legend.html",
"chars": 7208,
"preview": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\""
},
{
"path": "docs/documentation/graph_legend.md5",
"chars": 32,
"preview": "387ff8eb65306fa251338d3c9bd7bfff"
},
{
"path": "docs/documentation/index.html",
"chars": 4540,
"preview": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\""
},
{
"path": "docs/documentation/jquery.js",
"chars": 172871,
"preview": "/*!\n * jQuery JavaScript Library v1.7.1\n * http://jquery.com/\n *\n * Copyright 2011, John Resig\n * Dual licensed under th"
},
{
"path": "docs/documentation/navtree.css",
"chars": 2088,
"preview": "#nav-tree .children_ul {\n margin:0;\n padding:4px;\n}\n\n#nav-tree ul {\n list-style:none outside none;\n margin:0px;\n pa"
},
{
"path": "docs/documentation/navtree.js",
"chars": 14313,
"preview": "var navTreeSubIndices = new Array();\nvar arrowDown = '▼';\nvar arrowRight = '►';\n\nfunction getData(varName)\n{"
},
{
"path": "docs/documentation/navtreedata.js",
"chars": 742,
"preview": "var NAVTREE =\n[\n [ \"wasm-canvas\", \"index.html\", [\n [ \"Classes\", \"annotated.html\", [\n [ \"Class List\", \"annotated"
},
{
"path": "docs/documentation/navtreeindex0.js",
"chars": 6937,
"preview": "var NAVTREEINDEX0 =\n{\n\"annotated.html\":[0,0],\n\"canvas_8c.html\":[1,0,0],\n\"canvas_8c.html#a69ca7012750d2dac1fd7e35005fdb3d"
},
{
"path": "docs/documentation/resize.js",
"chars": 3608,
"preview": "function initResizable()\n{\n var cookie_namespace = 'doxygen';\n var sidenav,navtree,content,header,collapsed,collapsedW"
},
{
"path": "docs/documentation/search/all_0.html",
"chars": 1013,
"preview": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\""
},
{
"path": "docs/documentation/search/all_0.js",
"chars": 480,
"preview": "var searchData=\n[\n ['canvas_2ec',['canvas.c',['../canvas_8c.html',1,'']]],\n ['canvas_2eh',['canvas.h',['../canvas_8h.h"
},
{
"path": "docs/documentation/search/all_1.html",
"chars": 1013,
"preview": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\""
},
{
"path": "docs/documentation/search/all_1.js",
"chars": 414,
"preview": "var searchData=\n[\n ['filltext',['fillText',['../structCanvasRenderingContext2D.html#a7dae74c3217f796012b484b0d3892338',"
},
{
"path": "docs/documentation/search/all_2.html",
"chars": 1013,
"preview": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\""
},
{
"path": "docs/documentation/search/all_2.js",
"chars": 389,
"preview": "var searchData=\n[\n ['getcontext',['getContext',['../structHTMLCanvasElement.html#a334cd20da0561ba503401b636c819afa',1,'"
},
{
"path": "docs/documentation/search/all_3.html",
"chars": 1013,
"preview": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\""
},
{
"path": "docs/documentation/search/all_3.js",
"chars": 175,
"preview": "var searchData=\n[\n ['htmlcanvaselement',['HTMLCanvasElement',['../structHTMLCanvasElement.html',1,'']]],\n ['htmlwindow"
},
{
"path": "docs/documentation/search/all_4.html",
"chars": 1013,
"preview": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\""
},
{
"path": "docs/documentation/search/all_4.js",
"chars": 153,
"preview": "var searchData=\n[\n ['private',['private',['../structCanvasRenderingContext2D.html#aee3d9fa95289751e970d60543697c7bd',1,"
},
{
"path": "docs/documentation/search/all_5.html",
"chars": 1013,
"preview": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\""
},
{
"path": "docs/documentation/search/all_5.js",
"chars": 403,
"preview": "var searchData=\n[\n ['setheight',['setHeight',['../structHTMLCanvasElement.html#a2620a16349bc3a25332b5e4f451b6777',1,'HT"
},
{
"path": "docs/documentation/search/all_6.html",
"chars": 1013,
"preview": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\""
},
{
"path": "docs/documentation/search/all_6.js",
"chars": 329,
"preview": "var searchData=\n[\n ['window',['Window',['../window_8c.html#a4acbce9439c7ef61a8c56d033fd0028e',1,'Window(): window."
},
{
"path": "docs/documentation/search/classes_0.html",
"chars": 1017,
"preview": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\""
},
{
"path": "docs/documentation/search/classes_0.js",
"chars": 129,
"preview": "var searchData=\n[\n ['canvasrenderingcontext2d',['CanvasRenderingContext2D',['../structCanvasRenderingContext2D.html',1,"
},
{
"path": "docs/documentation/search/classes_1.html",
"chars": 1017,
"preview": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\""
},
{
"path": "docs/documentation/search/classes_1.js",
"chars": 175,
"preview": "var searchData=\n[\n ['htmlcanvaselement',['HTMLCanvasElement',['../structHTMLCanvasElement.html',1,'']]],\n ['htmlwindow"
},
{
"path": "docs/documentation/search/files_0.html",
"chars": 1015,
"preview": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\""
},
{
"path": "docs/documentation/search/files_0.js",
"chars": 136,
"preview": "var searchData=\n[\n ['canvas_2ec',['canvas.c',['../canvas_8c.html',1,'']]],\n ['canvas_2eh',['canvas.h',['../canvas_8h.h"
},
{
"path": "docs/documentation/search/files_1.html",
"chars": 1015,
"preview": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\""
},
{
"path": "docs/documentation/search/files_1.js",
"chars": 136,
"preview": "var searchData=\n[\n ['window_2ec',['window.c',['../window_8c.html',1,'']]],\n ['window_2eh',['window.h',['../window_8h.h"
},
{
"path": "docs/documentation/search/functions_0.html",
"chars": 1019,
"preview": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\""
},
{
"path": "docs/documentation/search/functions_0.js",
"chars": 255,
"preview": "var searchData=\n[\n ['createcanvas',['createCanvas',['../canvas_8c.html#a69ca7012750d2dac1fd7e35005fdb3d5',1,'createCanv"
},
{
"path": "docs/documentation/search/functions_1.html",
"chars": 1019,
"preview": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\""
},
{
"path": "docs/documentation/search/functions_1.js",
"chars": 279,
"preview": "var searchData=\n[\n ['freecanvas',['freeCanvas',['../canvas_8c.html#af5836d2d5968ae657d880aebca783a81',1,'freeCanvas(HTM"
},
{
"path": "docs/documentation/search/functions_2.html",
"chars": 1019,
"preview": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\""
},
{
"path": "docs/documentation/search/functions_2.js",
"chars": 213,
"preview": "var searchData=\n[\n ['window',['Window',['../window_8c.html#a4acbce9439c7ef61a8c56d033fd0028e',1,'Window(): window."
},
{
"path": "docs/documentation/search/nomatches.html",
"chars": 461,
"preview": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\""
},
{
"path": "docs/documentation/search/search.css",
"chars": 4505,
"preview": "/*---------------- Search Box */\n\n#FSearchBox {\n float: left;\n}\n\n#MSearchBox {\n white-space : nowrap;\n float: n"
},
{
"path": "docs/documentation/search/search.js",
"chars": 22125,
"preview": "function convertToId(search)\n{\n var result = '';\n for (i=0;i<search.length;i++)\n {\n var c = search.charAt(i);\n "
},
{
"path": "docs/documentation/search/searchdata.js",
"chars": 314,
"preview": "var indexSectionsWithContent =\n{\n 0: \"cfghpsw\",\n 1: \"ch\",\n 2: \"cw\",\n 3: \"cfw\",\n 4: \"fgps\"\n};\n\nvar indexSectionNames"
},
{
"path": "docs/documentation/search/variables_0.html",
"chars": 1019,
"preview": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\""
},
{
"path": "docs/documentation/search/variables_0.js",
"chars": 155,
"preview": "var searchData=\n[\n ['filltext',['fillText',['../structCanvasRenderingContext2D.html#a7dae74c3217f796012b484b0d3892338',"
},
{
"path": "docs/documentation/search/variables_1.html",
"chars": 1019,
"preview": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\""
},
{
"path": "docs/documentation/search/variables_1.js",
"chars": 389,
"preview": "var searchData=\n[\n ['getcontext',['getContext',['../structHTMLCanvasElement.html#a334cd20da0561ba503401b636c819afa',1,'"
},
{
"path": "docs/documentation/search/variables_2.html",
"chars": 1019,
"preview": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\""
},
{
"path": "docs/documentation/search/variables_2.js",
"chars": 153,
"preview": "var searchData=\n[\n ['private',['private',['../structCanvasRenderingContext2D.html#aee3d9fa95289751e970d60543697c7bd',1,"
},
{
"path": "docs/documentation/search/variables_3.html",
"chars": 1019,
"preview": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\""
},
{
"path": "docs/documentation/search/variables_3.js",
"chars": 403,
"preview": "var searchData=\n[\n ['setheight',['setHeight',['../structHTMLCanvasElement.html#a2620a16349bc3a25332b5e4f451b6777',1,'HT"
},
{
"path": "docs/documentation/structCanvasRenderingContext2D-members.html",
"chars": 21639,
"preview": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\""
},
{
"path": "docs/documentation/structCanvasRenderingContext2D.html",
"chars": 35332,
"preview": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\""
},
{
"path": "docs/documentation/structCanvasRenderingContext2D.js",
"chars": 5801,
"preview": "var structCanvasRenderingContext2D =\n[\n [ \"arc\", \"structCanvasRenderingContext2D.html#a557db51d86e9881028ef4b8a7867c6"
},
{
"path": "docs/documentation/structCanvasRenderingContext2D__coll__graph.md5",
"chars": 32,
"preview": "15289e830ddba293270398d6c92a9bda"
},
{
"path": "docs/documentation/structHTMLCanvasElement-members.html",
"chars": 6311,
"preview": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\""
},
{
"path": "docs/documentation/structHTMLCanvasElement.html",
"chars": 13742,
"preview": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\""
},
{
"path": "docs/documentation/structHTMLCanvasElement.js",
"chars": 761,
"preview": "var structHTMLCanvasElement =\n[\n [ \"ctx\", \"structHTMLCanvasElement.html#a20cb9a527d4d51d5b460e4915b4620b6\", null ],\n "
},
{
"path": "docs/documentation/structHTMLCanvasElement__coll__graph.md5",
"chars": 32,
"preview": "a9fb52990d618f7467a613a1239a900e"
},
{
"path": "docs/documentation/structHTMLWindow-members.html",
"chars": 5456,
"preview": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\""
},
{
"path": "docs/documentation/structHTMLWindow.html",
"chars": 7528,
"preview": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\""
},
{
"path": "docs/documentation/structHTMLWindow.js",
"chars": 469,
"preview": "var structHTMLWindow =\n[\n [ \"blur\", \"structHTMLWindow.html#aa249d14ead4dba039c6e1240bde697a8\", null ],\n [ \"getInne"
},
{
"path": "docs/documentation/tabs.css",
"chars": 8698,
"preview": ".sm{position:relative;z-index:9999}.sm,.sm ul,.sm li{display:block;list-style:none;margin:0;padding:0;line-height:normal"
},
{
"path": "docs/documentation/window_8c.html",
"chars": 7075,
"preview": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\""
},
{
"path": "docs/documentation/window_8c.js",
"chars": 175,
"preview": "var window_8c =\n[\n [ \"freeWindow\", \"window_8c.html#ac6428b97af8879ddee885a8dcf4fe6f2\", null ],\n [ \"Window\", \"windo"
},
{
"path": "docs/documentation/window_8c__incl.md5",
"chars": 32,
"preview": "be15457e4a3e6e2a9e36489267965f30"
},
{
"path": "docs/documentation/window_8h.html",
"chars": 8687,
"preview": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\""
},
{
"path": "docs/documentation/window_8h.js",
"chars": 322,
"preview": "var window_8h =\n[\n [ \"HTMLWindow\", \"structHTMLWindow.html\", \"structHTMLWindow\" ],\n [ \"HTMLWindow\", \"window_8h.html"
},
{
"path": "docs/documentation/window_8h__dep__incl.md5",
"chars": 32,
"preview": "fe1641594a5ea33e07943042b95d9889"
},
{
"path": "docs/documentation/window_8h__incl.md5",
"chars": 32,
"preview": "e74fbdfb2bdd5558b7ff32665cb0cdc5"
},
{
"path": "docs/documentation/window_8h_source.html",
"chars": 7851,
"preview": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\""
},
{
"path": "include/canvas.c",
"chars": 21328,
"preview": "/**\n * Facilitates interaction with HTML5 Canvas elements in a similar\n * manner to JavaScript via the DOM, but from C t"
},
{
"path": "include/canvas.h",
"chars": 11491,
"preview": "/**\n * Facilitates interaction with HTML5 Canvas elements in a similar\n * manner to JavaScript via the DOM, but from C t"
},
{
"path": "include/window.c",
"chars": 1208,
"preview": "/**\n * Interfaces with the browser window in which the program is running, \n * typically exposed to JavaScript code.\n * "
},
{
"path": "include/window.h",
"chars": 1919,
"preview": "/**\n * Interfaces with the browser window in which the program is running, \n * typically exposed to JavaScript code.\n * "
},
{
"path": "src/Doxyfile",
"chars": 108535,
"preview": "# Doxyfile 1.8.13\n\n# This file describes the settings to be used by the documentation system\n# doxygen (www.doxygen.org)"
},
{
"path": "src/canvas.c",
"chars": 21328,
"preview": "/**\n * Facilitates interaction with HTML5 Canvas elements in a similar\n * manner to JavaScript via the DOM, but from C t"
},
{
"path": "src/canvas.h",
"chars": 11491,
"preview": "/**\n * Facilitates interaction with HTML5 Canvas elements in a similar\n * manner to JavaScript via the DOM, but from C t"
},
{
"path": "src/window.c",
"chars": 1208,
"preview": "/**\n * Interfaces with the browser window in which the program is running, \n * typically exposed to JavaScript code.\n * "
},
{
"path": "src/window.h",
"chars": 1919,
"preview": "/**\n * Interfaces with the browser window in which the program is running, \n * typically exposed to JavaScript code.\n * "
},
{
"path": "test/Makefile",
"chars": 1045,
"preview": "CC = emcc\nCFLAGS = \\\n\t-O3 \\\n\t-Wall \\\n\t-Werror \\\n\t-Wno-deprecated \\\n\t-Wno-parentheses \\\n\t-Wno-format\nHEADERS_FOLDER = lib"
},
{
"path": "test/build/index.html",
"chars": 478,
"preview": "<!doctypehtml><html><head><meta charset=UTF-8><title>Example - wasm-canvas</title><style>body{margin:5% auto;background:"
},
{
"path": "test/build/index.js",
"chars": 12736,
"preview": "var d;d||(d=typeof Module !== 'undefined' ? Module : {});var f={},l;for(l in d)d.hasOwnProperty(l)&&(f[l]=d[l]);d.argume"
},
{
"path": "test/lib/canvas.c",
"chars": 21328,
"preview": "/**\n * Facilitates interaction with HTML5 Canvas elements in a similar\n * manner to JavaScript via the DOM, but from C t"
},
{
"path": "test/lib/canvas.h",
"chars": 11491,
"preview": "/**\n * Facilitates interaction with HTML5 Canvas elements in a similar\n * manner to JavaScript via the DOM, but from C t"
},
{
"path": "test/lib/window.c",
"chars": 1208,
"preview": "/**\n * Interfaces with the browser window in which the program is running, \n * typically exposed to JavaScript code.\n * "
},
{
"path": "test/lib/window.h",
"chars": 1919,
"preview": "/**\n * Interfaces with the browser window in which the program is running, \n * typically exposed to JavaScript code.\n * "
},
{
"path": "test/src/driver.c",
"chars": 4926,
"preview": "#include <stdio.h>\n#include <string.h>\n#include <stdlib.h>\n#include \"canvas.h\"\n#include \"window.h\"\n\nstatic void log(char"
},
{
"path": "test/src/web/index_template.html",
"chars": 628,
"preview": "<!DOCTYPE html>\n<html>\n <head>\n <meta charset=\"UTF-8\">\n <title>Example - wasm-canvas</title>\n <s"
}
]
// ... and 1 more files (download for full content)
About this extraction
This page contains the full source code of the alextyner/wasm-canvas GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 112 files (734.2 KB), approximately 223.7k tokens, and a symbol index with 311 extracted functions, classes, methods, constants, and types. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.
Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.