interface Magnifier : Bonobo::Unknown {
/**
- * #attribute MagFactor: a float indicating the current x and y magnification ratio.
+ * void setMagFactor: sets the current x and y magnification ratio.
+ * @zoom_region: the index of the affected zoom region.
+ * @magX: the magnification factor in the x direction for the specified region.
+ * @magY: the magnification factor in the x direction for the specified region.
**/
- attribute float MagFactor;
+ oneway void setMagFactor (in short zoom_region, in float magX, in float magY);
/**
* #attribute SourceDisplay: a @string containing the X display name
/**
* oneway void setROI:
* Sets the region of interest for the magnifier.
+ * @zoom_region: the index of the affected zoom region.
* @x1: the minimum X coordinate of the ROI bounding box
* @x2: the maximum X coordinate of the ROI bounding box
* @y1: the minimum Y coordinate of the ROI bounding box
* @y2: the maximum Y coordinate of the ROI bounding box
**/
- oneway void setROI (in long x1, in long y1, in long x2, in long y2);
+ oneway void setROI (in short zoom_region,
+ in long x1, in long y1, in long x2, in long y2);
+
+ /**
+ * oneway void setROI:
+ * Sets the region of interest for the zoom region.
+ * If the zoom region was previously 'unmanaged', this associates
+ * it with the ROI.
+ * @zoom_region: the index of the affected zoom region.
+ * @x1: the minimum X coordinate of the ROI bounding box
+ * @x2: the maximum X coordinate of the ROI bounding box
+ * @y1: the minimum Y coordinate of the ROI bounding box
+ * @y2: the maximum Y coordinate of the ROI bounding box
+ **/
+ oneway void markDirty (in short zoom_region,
+ in long x1, in long y1, in long x2, in long y2);
+
+ /**
+ * oneway void markUnmanaged:
+ * Mark a zoom region as 'unmanaged', meaning that it should not
+ * attempt to get pixels from the source display but will have its
+ * pixels drawn by a client.
+ * @zoom_region: the index of the affected zoom region.
+ **/
+ oneway void markUnmanaged (in short zoom_region);
+
+ /**
+ * short createZoomRegion:
+ * Creates a new zoom region for the magnifier.
+ * The new region is initially unmanaged'.
+ * @zx: the scale factor in the x direction for the new zoom region
+ * @zy: the scale factor in the y direction for the new zoom region
+ * @x1: the minimum X coordinate of the zoomed area bounding box
+ * @x2: the maximum X coordinate of the zoomed area bounding box
+ * @y1: the minimum Y coordinate of the zoomed area bounding box
+ * @y2: the maximum Y coordinate of the zoomed area bounding box
+ **/
+ short createZoomRegion (in float zx, in float zy,
+ in long x1, in long y1,
+ in long x2, in long y2);
+
+ /**
+ * boolean getZoomRegionParams:
+ * Queries a specific zoom region for its parameters.
+ * returns: FALSE if the specified zoom region does not exist.
+ * @zoom_region: the index specifying which zoom region to query.
+ * @zx: the scale factor in the x direction for the new zoom region
+ * @zy: the scale factor in the y direction for the new zoom region
+ * @x1: the minimum X coordinate of the zoomed area bounding box
+ * @x2: the maximum X coordinate of the zoomed area bounding box
+ * @y1: the minimum Y coordinate of the zoomed area bounding box
+ * @y2: the maximum Y coordinate of the zoomed area bounding box
+ **/
+ boolean getZoomRegionParams (in short zoom_region,
+ out float zx, out float zy,
+ out long x1, out long y1,
+ out long x2, out long y2);
+
+ /**
+ * void resizeZoomRegion:
+ * Resizes the specified zoom region on the target display.
+ * @zoom_region: the index of the affected zoom region.
+ * @x1: the minimum X coordinate of the zoomed area bounding box
+ * @x2: the maximum X coordinate of the zoomed area bounding box
+ * @y1: the minimum Y coordinate of the zoomed area bounding box
+ * @y2: the maximum Y coordinate of the zoomed area bounding box
+ **/
+ oneway void resizeZoomRegion (in short zoom_region,
+ in long x1, in long y1,
+ in long x2, in long y2);
+
+ /**
+ * void destroyZoomRegion:
+ * Remove the specified zoom region from the magnifier.
+ **/
+ oneway void destroyZoomRegion (in short zoom_region);
+
+ /**
+ * void clearAllZoomRegions:
+ * Clears and destroys all currently defined zoom regions.
+ **/
+ void clearAllZoomRegions ();
/**
- * void exit:
+ * void exit:
* Unmap the current magnifier from the display.
**/
void exit ();