Changes

Jump to: navigation, search

WebAPI/WebPrintAPI

7,072 bytes added, 19:44, 11 March 2012
Proposed API
== Proposed API ==
See the example to get an idea. More details coming soon(This section is still work in progress.) The PrintRenderingContext definition is very much the same as the [http://dev.w3.org/html5/2dcontext/ HTML5 Canvas' Context] Changes are listed on top and are commented out. The reason for removing the APIs for the PrintRenderingContext is given on lines starting with //!.  interface PrintFontContext: CanvasText { // back-reference to the printDocument. readonly attribute PrintDocument printDocument; }  interface PrintRenderingContext { // --- // Stuff removed compared to CanvasRenderingContext2d. // --- //! There is no notion of "pixels" while printing. Therefore, remove all the // APIs that deal with "raw" pixel data. // // pixel manipulation // ImageData createImageData(double sw, double sh); // ImageData createImageData(ImageData imagedata); // ImageData getImageData(double sx, double sy, double sw, double sh); // void putImageData(ImageData imagedata, double dx, double dy); // void putImageData(ImageData imagedata, double dx, double dy, double dirtyX, double dirtyY, double dirtyWidth, double dirtyHeight); //! No sense to reference back to a canvas. // readonly attribute HTMLCanvasElement canvas; //! No focusRing drawing or scrolling. // void drawSystemFocusRing(Element element); // void drawSystemFocusRing(Path path, Element element); // boolean drawCustomFocusRing(Element element); // boolean drawCustomFocusRing(Path path, Element element); // void scrollPathIntoView(); // void scrollPathIntoView(Path path); //! Remove the measureText function from this interface and add it to the // CanvasText interface to be reuseable for the PrintFontContext. // TextMetrics measureText(DOMString text); // --- // Stuff added compared to CanvasRenderingContext2d. // --- // back-reference to the printDocument. readonly attribute PrintDocument printDocument; // tell the backend that this page has finished rendering. void endPage(); // --- // From here everything stays the same compared to CanvasRenderingContext2d. // --- // state void save(); // push state on state stack void restore(); // pop state stack and restore state // compositing attribute double globalAlpha; // (default 1.0) attribute DOMString globalCompositeOperation; // (default source-over) // colors and styles (see also the CanvasLineStyles interface) attribute any strokeStyle; // (default black) attribute any fillStyle; // (default black) CanvasGradient createLinearGradient(double x0, double y0, double x1, double y1); CanvasGradient createRadialGradient(double x0, double y0, double r0, double x1, double y1, double r1); CanvasPattern createPattern((HTMLImageElement or HTMLCanvasElement or HTMLVideoElement) image, DOMString repetition); // shadows attribute double shadowOffsetX; // (default 0) attribute double shadowOffsetY; // (default 0) attribute double shadowBlur; // (default 0) attribute DOMString shadowColor; // (default transparent black) // rects void clearRect(double x, double y, double w, double h); void fillRect(double x, double y, double w, double h); void strokeRect(double x, double y, double w, double h); // path API (see also CanvasPathMethods) void beginPath(); void fill(); void fill(Path path); void stroke(); void stroke(Path path); void clip(); void clip(Path path); boolean isPointInPath(double x, double y); boolean isPointInPath(Path path, double x, double y); // text (see also the CanvasText interface) void fillText(DOMString text, double x, double y, optional double maxWidth); void strokeText(DOMString text, double x, double y, optional double maxWidth); // drawing images void drawImage((HTMLImageElement or HTMLCanvasElement or HTMLVideoElement) image, double dx, double dy); void drawImage((HTMLImageElement or HTMLCanvasElement or HTMLVideoElement) image, double dx, double dy, double dw, double dh); void drawImage((HTMLImageElement or HTMLCanvasElement or HTMLVideoElement) image, double sx, double sy, double sw, double sh, double dx, double dy, double dw, double dh); }; PrintRenderingContext implements CanvasTransformation; PrintRenderingContext implements CanvasLineStyles; PrintRenderingContext implements CanvasPathMethods; PrintRenderingContext implements CanvasText; [NoInterfaceObject] interface CanvasTransformation { // transformations (default transform is the identity matrix) void scale(double x, double y); void rotate(double angle); void translate(double x, double y); void transform(double a, double b, double c, double d, double e, double f); void setTransform(double a, double b, double c, double d, double e, double f); }; [NoInterfaceObject] interface CanvasLineStyles { // line caps/joins attribute double lineWidth; // (default 1) attribute DOMString lineCap; // "butt", "round", "square" (default "butt") attribute DOMString lineJoin; // "round", "bevel", "miter" (default "miter") attribute double miterLimit; // (default 10) }; [NoInterfaceObject] interface CanvasText { // text attribute DOMString font; // (default 10px sans-serif) attribute DOMString textAlign; // "start", "end", "left", "right", "center" (default: "start") attribute DOMString textBaseline; // "top", "hanging", "middle", "alphabetic", "ideographic", "bottom" (default: "alphabetic") TextMetrics measureText(DOMString text); }; [NoInterfaceObject] interface CanvasPathMethods { // shared path API methods void closePath(); void moveTo(double x, double y); void lineTo(double x, double y); void quadraticCurveTo(double cpx, double cpy, double x, double y); void bezierCurveTo(double cp1x, double cp1y, double cp2x, double cp2y, double x, double y); void arcTo(double x1, double y1, double x2, double y2, double radius); void rect(double x, double y, double w, double h); void arc(double x, double y, double radius, double startAngle, double endAngle, optional boolean anticlockwise); }; interface CanvasGradient { // opaque object void addColorStop(double offset, DOMString color); }; interface CanvasPattern { // opaque object }; interface TextMetrics { readonly attribute double width; }; [Constructor(optional Element scope)] interface Path { void addFill(Path path); void addStroke(Path path); void addFillText(DOMString text, double x, double y, optional double maxWidth); void addStrokeText(DOMString text, double x, double y, optional double maxWidth); void addFillText(DOMString text, Path path, optional double maxWidth); void addStrokeText(DOMString text, Path path, optional double maxWidth); }; Path implements CanvasTransformation; Path implements CanvasLineStyles; Path implements CanvasPathMethods; Path implements CanvasText;
== Implementation ==
Some basic investigation in the Gecko codebase. No code written so far.
49
edits

Navigation menu