/*
 * bonobo-embeddable.idl: handles embeddable components
 *
 *   An Embeddable is an object that can be used inside
 * an office productivity application; it is part of a
 * compound document. Mostly people will want to implement
 * the Control interface for their application first.
 *
 * Copyright (C) 1999, 2000  Helix Code, Inc.
 *
 * Authors:
 *	Miguel de Icaza (miguel@helixcode.com)
 *	Nat Friedman    (nat@helixcode.com)
 */

#ifndef BONOBO_EMBEDDABLE_IDL
#define BONOBO_EMBEDDABLE_IDL

#include "Bonobo_Unknown.idl"
#include "Bonobo_Control.idl"
#include "Bonobo_Canvas.idl"

module Bonobo {

interface ControlFactory : Bonobo::Unknown {

	/**
	 * createControl:
	 * @uic: UIContainer interface to merge UI elements with.
	 *
	 * Returns: a Control which serves as a Component View.
	 * 
	 * This method can be used to produce multiple View instances
	 * for a given Component.
	 */
	Control	createControl (in ControlFrame frame, in UIContainer uic);

	void unImplemented1 ();
	void unImplemented2 ();
};

interface CanvasComponentFactory : Bonobo::Unknown {

	/**
	 * createCanvasComponent:
	 * @aa: Whether the item is anti-aliased
	 * @proxy: The Proxy used to notify of requested updates.
	 *
	 * Returns a Bonobo::Canvas::Component interface
	 * 
	 * This method can be used to produce multiple Canvas-based
	 * view instances for a given component.
	 */
	Canvas::Component createCanvasComponent (
					in boolean aa,
					in Canvas::ComponentProxy proxy);

	void unImplemented1 ();
	void unImplemented2 ();
};

interface Embeddable : Bonobo::Unknown {

	/**
	 * properties:
	 * 
	 * double ZoomFactor;
	 */

	void unImplemented1 ();
	void unImplemented2 ();
	void unImplemented3 ();
	void unImplemented4 ();
	void unImplemented5 ();
	void unImplemented6 ();
	void unImplemented7 ();
	void unImplemented8 ();
};
};

#endif /* BONOBO_EMBEDDABLE_IDL */
