/* -*- Mode: IDL; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
/* This Source Code Form is subject to the terms of the Mozilla Public
 * License, v. 2.0. If a copy of the MPL was not distributed with this
 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */

#include "nsISupports.idl"

[scriptable, uuid(bbb20a59-524e-4662-981e-5e142814b20c)]
interface nsIDOMCanvasGradient : nsISupports
{
  void addColorStop(in float offset, in DOMString color);
};

[scriptable, uuid(21dea65c-5c08-4eb1-ac82-81fe95be77b8)]
interface nsIDOMCanvasPattern : nsISupports
{
};

[scriptable, uuid(2d01715c-ec7d-424a-ab85-e0fd70c8665c)]
interface nsIDOMTextMetrics : nsISupports
{
  readonly attribute float width;
};

/**
 * This interface remains only for the constants, for a context, use the
 * WebIDL/Paris bindings instead (CanvasRenderingContext2D.webidl).
 * The constants are used by CanvasRenderingContext2D::DrawWindow and are
 * used in WindowsPreviewPerTab.jsm and some extensions. The constants can
 * be referenced directly via a canvas context 2d rather than this interface,
 * and that should be preferred in new code. 
 */
[scriptable, uuid(4417cab7-c7eb-4e0c-b00a-c43842f0cba8)]
interface nsIDOMCanvasRenderingContext2D : nsISupports
{
  // Show the caret if appropriate when drawing
  const unsigned long DRAWWINDOW_DRAW_CARET   = 0x01;
  // Don't flush pending layout notifications that could otherwise
  // be batched up
  const unsigned long DRAWWINDOW_DO_NOT_FLUSH = 0x02;
  // Draw scrollbars and scroll the viewport if they are present
  const unsigned long DRAWWINDOW_DRAW_VIEW    = 0x04;
  // Use the widget layer manager if available. This means hardware
  // acceleration may be used, but it might actually be slower or
  // lower quality than normal. It will however more accurately reflect
  // the pixels rendered to the screen.
  const unsigned long DRAWWINDOW_USE_WIDGET_LAYERS = 0x08;
  // Don't synchronously decode images - draw what we have
  const unsigned long DRAWWINDOW_ASYNC_DECODE_IMAGES = 0x10;
};
