2009-03-05 Willie Walker * NEWS, README: notes for Version 0.15.5. 2008-09-23 Carlos Eduardo Rodrigues Di骻enes * configure.in: Post-release increment to 0.15.5. 2008-09-23 Carlos Eduardo Rodrigues Di骻enes * configure.in: Version 0.15.4. 2008-08-31 Carlos Eduardo Rodrigues Di骻enes * configure.in: Post-release increment to 0.15.4. 2008-08-31 Carlos Eduardo Rodrigues Di骻enes * configure.in: Version 0.15.3 2008-08-29 Willie Walker * magnifier/magnifier.c, magnifier/x11/gmag-graphical-server.c: Fix for bug #532918 - It's unable to launch magnifier of orca in gdm login window. 2007-08-03 Carlos Eduardo Rodrigues Di骻enes * configure.in: Post-release increment to 0.15.3. 2007-08-03 Carlos Eduardo Rodrigues Di骻enes * configure.in: Version 0.15.2. 2007-07-05 Carlos Eduardo Rodrigues Di骻enes * configure.in: Post-release increment to 0.15.2. 2008-07-05 Carlos Eduardo Rodrigues Di骻enes * configure.in: Version 0.15.1. 2008-02-28 Carlos Eduardo Rodrigues Di贸genes * colorblind/colorblind-applet.py: Correct the gettext textdomain for the colorblind applet to use 'gnome-mag', the correct one. 2007-12-27 Carlos Eduardo Rodrigues Di贸genes * configure.in: Post-release increment to 0.15.1. 2007-12-27 Carlos Eduardo Rodrigues Di贸genes * configure.in: Version 0.15.0. 2007-12-27 Carlos Eduardo Rodrigues Di贸genes * magnifier/x11/gmag-compositor.c: (gmag_compositor_paint_window) Add the XSync call after the XRenderComposite call to ensure that the source area will be updated when this area is notifyied to be update by the magnifier. 2007-12-27 Carlos Eduardo Rodrigues Di贸genes * magnifier/zoom-region.c: (zoom_region_update_scale): Remove the code that was clearing the magnifier window before the image update, since this was causing a flicker. 2007-12-27 Carlos Eduardo Rodrigues Di贸genes * test/control-client.c: The argument 'f' can be used to set the crosswire size, length and clip. * magnifier/magnifier.c: Made the necesseary modification to make the new properties work. Also done some TODOs, where Zoomers must be notified about cursor/crosswire changes. * magnifier/zoom-region.c: (zoom_region_paint_crosswire_cursor): Change the algorithm to consider the crosswire size. * magnifier/magnifier.h: Added the crosswire_length variable. 2007-12-27 Carlos Eduardo Rodrigues Di贸genes * test/control-client.c: The argument 'k' was modified so the user can use the control-client test application to set each border size (left, top, right and bottom). The 'l' argument was also modified, using the border-size property to change the border size, a.k.a all bordes. * magnifier/zoom-region.c: Added the changes necessary to make the borders work with the per boder control (left, top, rigth, bottom). (zoom_region_update_borders): New function, since now there are many places that make changes that need a border repaint. * magnifier/zoom-region.h: Added the new variables border_size_top, border_size_left, border_size_right and border_size_bottom to the ZoomRegion to hold the border related values. 2007-12-27 Carlos Eduardo Rodrigues Di贸genes * magnifier/x11/gmag-cursor.c: (gmag_cursor_events_handler): Cast the XEvent * argument to the XFixesCursorNotifyEvent * variable, so the cursor name can be retrieved later. 2007-12-26 Carlos Eduardo Rodrigues Di贸genes * idl/GNOME_Magnifier.idl: Added the IDL definition of the new RPC supportColorblindFilters, so clients can verify if the magnifier was compiled or not with support for colorblind filters. * magnifier/magnifier.c: Added the new function impl_magnifier_support_colorblind_filters to implement the new RPC supportColorblindFilters. 2007-12-16 Carlos Eduardo Rodrigues Di贸genes * colorblind/GNOME_Magnifier_ColorblindApplet.server.in.in: Marked the oaf_attribute "description" for translation. 2007-11-03 Carlos Eduardo Rodrigues Di贸genes * magnifier/magnifier.c: (magnifier_full_screen_capable): Method added. When changing the target/source display the magnifier must be able to know if it can go full screen in the new display pair. (bug #486696) * magnifier/x11/gmag-cursor.c: XFree is now working and his miss was the great reason for the memory leak. (bug #484523) 2007-10-14 Carlos Eduardo Rodrigues Di贸genes * magnifier/magnifier.c: (magnifier_set_cursor_from_pixbuf): Replaced the private gdk_pixbuf_get_option by g_object_get_data. * magnifier/x11/gmag-cursor.c: Also modify the code to replace the private gdk_pixbuf_get_set_option by g_object_set_data. 2007-10-14 Carlos Eduardo Rodrigues Di贸genes * magnifier/magnifier.c: Remove the g_unsetenv call, since when the --ignore-composite option is passed the MAGNIFIER_IGNORE_COMPOSITE variable is setted and this call is unsetting it, so the composite extension isn't being ignored. * magnifier/magnifier-main.c: Just set the MAGNIFIER_IGNORE_COMPOSITE if the --ignore-composite is passed, since if the displays are different the composite extension will be ignored when the connection with X display is stablished. This also avoid the need to unset the variable, since this will also be addressed by the code that connect with X. * magnifier/x11/gmag-graphical-server.c: Don't need to set the MAGNIFIER_IGNORE_COMPOSITE variable, since the use_compositor is used to know if the composite extension must be ignored. 2007-10-14 Carlos Eduardo Rodrigues Di贸genes * magnifier/magnifier.c: (magnifier_zoom_regions_update_pointer): New function that calls ZoomRegion::updatePointer in each ZoomRegion. (bug #458361) * magnifier/zoom-region.c: (zoom_region_repaint_pointer): Function created from code in zoom_region_update_pointer, since we need a way to repaint the cursor from different parts of the code, this is the case for the new API updatePointer. (zoom_region_update_pointer): Removed the code that went in the function above and added the call to this function. (impl_zoom_region_update_pointer): Implementation of the new API. This just call the zoom_region_repaint_pointer function. (bug #458361) * magnifier/magnifier.h: Added the function magnifier_zoom_regions_update_pointer so it can be called from the cursor handler that is in magnifier/x11/gmag-cursor.c. (bug #458361) * idl/GNOME_Magnifier.idl: Added the idl ZoomRegion::updatePointer definition. (bug #458361) 2007-10-14 Carlos Eduardo Rodrigues Di贸genes * magnifier/magnifier.c: Implementation of the new API, fullScreenCapable. This verify if source and target are different or if composite can be used. In this case TRUE is returned, otherwise FALSE is returned. (bug #481009) * magnifier/x11/gmag-graphical-server.c: Changed the gmag_gs_use_compositor function scope, so it can be used by the API mentioned above. (bug #481009) * magnifier/x11/gmag-graphical-server.h: Added the gmag_gs_use_compositor function prototype. (bug #481009) * idl/GNOME_Magnifier.idl: Added the idl definition of the fullScreeCapable API. (bug #481009) 2007-10-07 Christian Kirbach * colorblind/data/art/Makefile.am: Provide uninstall-hook (Gnome Goal 4). 2007-10-03 Carlos Eduardo Rodrigues Di贸genes * MAINTAINERS (Userid): Correct wrong syntax. 2007-09-17 Carlos Eduardo Rodrigues Di贸genes * configure.in: Post release increment - 0.14.11. 2007-09-17 Carlos Eduardo Rodrigues Di贸genes * configure.in: Version 0.14.10. 2007-09-15 Carlos Eduardo Rodrigues Di贸genes * colorblind/GNOME_Magnifier_ColorblindApplet.server.in.in: Added the oaf_attribute "bonobo:environment" with the item "DISPLAY" to avoid fetching a wrong value from the DISPLAY variable when the magnifier is started throw the colorblind applet. 2007-09-10 Carlos Eduardo Rodrigues Di贸genes * configure.in: Post release increment - 0.14.10. 2007-09-10 Carlos Eduardo Rodrigues Di贸genes * configure.in: Version 0.14.9. 2007-09-10 Carlos Eduardo Rodrigues Di贸genes * colorblind/ColorblindApplet.py: Created a new function called active_magnifier and put the code to set the color-blind-filter in a try-set structure and calling the new function when the call fail, this is the case when an external AT start the magnifier, the colorblind filter is enabled and the AT finish the magnifier and the user try to enable/disable the colorblind filter again. * magnifier/GNOME_Magnifier.server.in.in: Added the oaf_attribute "bonobo:environment" with the item "DISPLAY". Without this the magnifier is getting the ":0" value for the DISPLAY what is making the magnifier ignore the composite extension, since the source and target display are getting different values. * magnifier/magnifier.c: (magnifier_set_property): Unset the MAGNIFIER_IGNORE_COMPOSITE environment variable when changing the source display property. This can lead to a bug where the composite extesion is not used anymore, since the first display that doesn't have this extension will set this environment variable. * magnifier/x11/gmag-compositor.c: Init the XserverRegions used in the code with "None", so all the window are painted without clipping in the first screen paint. (gmag_gs_client_init): Moved the XserverRegions creation code after the screen paint. This avoid intersecting with an empty XserverRegion when painting the screen for the first time. 2007-08-27 Carlos Eduardo Rodrigues Di贸genes * configure.in: Post release incremento to 0.14.9. 2007-08-27 Carlos Eduardo Rodrigues Di贸genes * configure.in: Version 0.14.8. Releasing to correct some spell errors, since we are starting string freeze today! 2007-08-27 Carlos Eduardo Rodrigues Di贸genes * colorblind/GNOME_Magnifier_ColorblindApplet.server.in.in: * colorblind/data/colorblind-prefs.glade: * colorblind/ui/ColorblindPreferencesUI.py: * magnifier/magnifier-main.c: Enlgish spell correction in all files. 2007-08-26 Carlos Eduardo Rodrigues Di贸genes * configure.in: Post release increment: 0.14.8. 2007-08-26 Carlos Eduardo Rodrigues Di贸genes * configure.in: Version 0.14.7. * colorblind/GNOME_Magnifier_ColorblindApplet.server.in.in: Corrected spell errors. (bug #460057) * colorblind/data/colorblind-prefs.glade: Changed dessaturate to the correct spell: desaturate (bug #460057); Corrected other spell errors. (bug #460057) * colorblind/ui/ColorblindPreferencesUI.py: Changed dessaturate to the correct spell: desaturate. (bug #460057) * configure.in: Use the PKG_CHECK_MODULES macro to detect the presence of the composite extension. (bug #442886) * magnifier/magnifier.c: (magnifier_new): When started without arguments the functions added by the call g_idle_add are called so frequently that the magnifier uses about 100% of CPU. Changing this function to g_timeout_add and putting a time of 500 miliseconds between one call and other. (bug #468373) * magnifier/magnifier-main.c: Added to new CLI. Now is possible to control if the magnifier will draw de cursor and if it will draw the crosswires. (bug #465120) * magnifier/x11/gmag-graphical-server.c: Changed the call of XSetErrorHandler to be called later, when the connection with the X server is made. This prevent the compositor core dump the magnifier due a BadWindow error when the compositor try to get the attributes of a window that no longer exist. (bug #468373) 2007-08-16 Carlos Eduardo Rodrigues Di贸genes * gnome-mag-1.0-pc.in: Moved datarootdir variable to it's correct place. Thanks to Damien Carbery for the patch! 2007-08-14 Carlos Eduardo Rodrigues Di贸genes * magnifier/magnifier.c: (magnifier_set_property): Added code to free the magnifier->priv->source_drawable (used as the image source when the Composite Extension is being used) when changing the MAGNIFIER_SOURCE_DISPLAY_PROP. Without this the magnifier will continue to use this variable even if the Composite Extension isn't present or being used. * magnifier/x11/gmag-graphical-server.c: Added code to compare if the source and target displays are differents. When this is true the Composite Extension isn't used, since it's not necessary. This is the case when using a dummy driver or a dual head configuration. 2007-07-30 Carlos Eduardo Rodrigues Di贸genes * magnifier/magnifier-main.c: When the source and target screen are different, there is no reason to use the composite extension, only due the benefitis that the overlay window can give, but since this case will just be addressed in the future, we decide to set the MAGNIFIER_IGNORE_COMPOSITE variable when the source and target screen are different; I also differentiate between source/destination screens width and height, making the magnifier work properly when the screens resolutions are different. 2007-07-25 Carlos Eduardo Rodrigues Di贸genes * magnifier/x11/gmag-damage.c: (gmag_damage_notify_handler): Corrected how damage events are handled; (gmag_damage_init): Corrected how the XDamage is created for the root window. * magnifier/x11/gmag-graphical-server.c: (gmag_gs_reset_overlay_at_idle): Added an unverified possibility about composite availability; (gmag_gs_client_init): If not using the compositor, export the MAGNIFIER_IGNORE_COMPOSITE, since this variable is verified in some parts of the code; Also added a condition to only start the compositor, when it's available, when there is no explicit request to disable it. 2007-07-17 Carlos Eduardo Rodrigues Di贸genes * Deleted the following uneeded files: colorblind/Makefile.in, colorblind/data/Makefile.in, colorblind/data/art/Makefile.in, colorblind/keybinder/Makefile.in, colorblind/osutils/Makefile.in and colorblind/ui/Makefile.in 2007-06-18 Carlos Eduardo Rodrigues Di贸genes * configure.in: Version 0.14.6. * docs/reference/Makefile.am: Remove "html" from EXTRA_DIST and added CLEANFILES = doxygen-warnings.txt doxygen-output.txt, so make distcheck can run properly. 2007-06-10 Carlos Eduardo Rodrigues Di贸genes * acinclude.m4: This new file contaim needed macros. * m4/intltool.m4: This new file contaim needed INTLTOOL macros. * m4/python.m4: This new file contaim needed PYTHON macros. 2007-06-10 Carlos Eduardo Rodrigues Di贸genes * colorblind/ColorblindApplet.py: Added the variable pref_ui_mapped to control if the Preferences UI is mapped or not. This ways is possible to know if we the Preferences UI will be synced or not and decide to apply the colorblind filter or not, since when the Preferences UI change it's also apply a filter. So we avoid set the filter twice (bug #443970). Moved the code that set the crosswire-size to zero to the right place, so the crosswire doesn't leave trash anymore (bug #444333). Replace the variable use_windows by use_compositor (bug #444138). 2007-06-03 Carlos Eduardo Rodrigues Di贸genes * configure.in: Post-release increment to 0.14.6 2007-06-03 Carlos Eduardo Rodrigues Di贸genes * configure.in: Version 0.14.5 * colorblind: Added this directory and it's entirely sub-tree that implements an applet to control the colorblind image filters. * magnifier/magnifier.c: Modify the impl_magnifier_set_source_display and impl_magnifier_set_target_display to use the DISPLAY variable content when an empty string in passed to they. (bug #434660) (magnifier_new): The last correction to remove the ambiguity in the if-then-else put a wrong logic in it that was now corrected. * magnifier/x11/gmag-compositor.c: Added code to clean the windows list when the magnifier source display is changed. (bug #434660) 2007-06-03 Carlos Eduardo Rodrigues Di贸genes * configure.in: Don't generate the magnifier/x11/Makefile anymore. * magnifier/Makefile.am: Removed the x11 as a subdir and put the files that are in this subdir to the magnifier_SOURCES variable. * magnifier/x11/Makefile.am: File removed, since the files in the folder x11 don't need rules. * po/POTFILES.skip: 2007-05-31 Carlos Eduardo Rodrigues Di骻enes * magnifier/Makefile.am: Fix the linker library include order so that the linker searches the right path for pango (Fixes bug #442219). Patch from Elijah Newren . 2007-05-14 Carlos Eduardo Rodrigues Di骻enes * test/control-client.: Added the -f option to instruct the ZoomRegion to not draw the crosswire and mouse cursor. * configure.in: Hardcoded the x11 dir as the target window system, since for now this is the only one available. Added the magnifier/x11/Makefil to the output list. * magnifier/magnifier.c: Removed all the X11 dependent code. Update the function calls to the new ones in magnifier/x11. * magnifier/zoom-region.c: Add a new property, ZOOM_REGION_DRAW_CURSOR_PROP, where the client can control if the ZoomRegion must draw the cursor or not; Removed an old and uneeded #IFDEF; Removed all the X11 dependent code. Update the function calls to the new ones in magnifier/x11. (zoom_region_source_rect_from_view_bounds): Removed the const keyword to eliminate a warning. (zoom_region_update_scale): The code added get the move that the ZoomRegion must do to keep aligned to the actual ROI after a scale factor change. (zoom_region_create_pixmap): Removed the call toe zoom_region_update, making this responsability of the zoom_region_create_pixmap caller make this call. This was need to implement the changes in zoom_region_update_scale. (zoom_region_get_move_x_y): This function contains part of the code that was in zoom_region_align, since now we are using this same code in zoom_region_update_scale. * magnifier/gmag-events.c: Removed this file. Now it's splited between the files: magnifier/x11/{gmag-compositor.c,gmag-cursor.c, gmag-damage.c,gmag-graphical-server.c}. * magnifier/GNOME_Magnifier.server.in.in: Remove the --ignore-composite option from the server startup. Now the COMPOSITE is enabled by default. * magnifier/x11/gmag-cursor.c: This is a new file that contains the code relative with mouse cursor events. * magnifier/x11/gmag-compositor.c: This is a new file that contains the code relative with composition events and it uses it's own damage handler. * magnifier/x11/gmag-damage.c: This is a new file that contains the code relative with damage events when the composite extension is not used. * magnifier/x11/gmag-graphical-server.c: This is a new file that contains the API that the magnifier can use to access the graphical server. 2007-03-24 Carlos Eduardo Rodrigues Diogenes * test/control-client.c: Modify to only change the size of the magnifier window if it's no mapped yet (bug #422347). * configure.in: Make the magnifier depends upon Xfixes and Xdamage using the macro PKG_CHECK_MODULES (bug #404448). * magnifier/magnifier.c: Removed the #ifdefs referent to the Xfixes and Xdamage, since they are required dependencies now (bug #404448); Verify if the overlay window is allocated when a request to change the magnifier window position/size is made, without this the magnifier window will be moved outside the visible X viewport and the user will have the impression that the magnifier has staled (bug #416911); Make the magnifier init the target_bounds structure with all fields as 0, this mean that the magnifier window has no size, aka, it's not mapped. This information is used by the control-client program to set or not a size to the magnifier window. If it's already mapped anything is done, otherwise the size of the magnifier window is setted to vertical half of the screen (bug #422347). * magnifier/gmag-events.h: Removed the #ifdefs referent to the Xfixes and Xdamage, since they are required dependencies now (bug #404448). * magnifier/magnifier-main.c: Change the ROI initialization to it be from the start of the source bounds (0,0) to the extends of the source bounds (bug #422347). * magnifier/magnifier.h: Removed the #ifdefs referent to the Xfixes and Xdamage, since they are required dependencies now (bug #404448). * magnifier/gmag-events.c: Removed the #ifdefs referent to the Xfixes and Xdamage, since they are required dependencies now (bug #404448). 2007-03-10 Carlos Eduardo Rodrigues Diogenes * configure.in: Replace the obsolete macro AC_TRY_LINK with AC_CHECK_LIB. 2007-03-09 Carlos Eduardo Rodrigues Diogenes * magnifier/magnifier-main.c: Make the -v CLI option means only --vertical. To get the magnifier version the --version option must be used. 2007-03-03 Carlos Eduardo Rodrigues Diogenes * configure.in: post-release incrementing to 0.14.3. 2007-03-02 Carlos Eduardo Rodrigues Diogenes * configure.in: Version 0.14.2. 2007-03-02 Carlos Eduardo Rodrigues Diogenes * magnifier/magnifier.c: More informative message when running a 2nd magnifier instance. Thanks Michael Broadbent for the patch; * magnifier/magnifier-main.c: Added the --version option; * magnifier/GNOME_Magnifier.server.in.in: Added the --ignore-composite option to the bonobo start server file, since COMPOSITE support still have some performance issues and COMPOSITE use make some applications behave buggy; * magnifier/zoom-region.c: Clamp the input setted by setBrightness and setContrast; * magnifier/gmag-events.c: Initialize the damaged variable in the GmagWin structure. This was causing crashes in some platforms and initialize variables is always a good thing to do :-) Thanks Willie Walker for create the patch and help find this issue. 2007-01-31 Carlos Eduardo Rodrigues Diogenes * configure.in: Added the new file 'gnome-mag-1.0-uninstalled.pc' to the AC_OUTPUT list; Add #include line to make composite extension enabled on Solaris. Thanks Jeff Cai for the patch! * gnome-mag-1.0-uninstalled.pc: New file to help build gnome-mag in the Solaris OS. Thanks Brian Cameron for this! 2007-01-08 Carlos Eduardo Rodrigues Diogenes * configure.in: post-release incrementing to 0.14.2. 2007-01-08 Carlos Eduardo Rodrigues Diogenes * configure.in: Change the test for XDamage and XFixes to only look at the directories passed by --x-libraries. Added test for XRender, XShape and XComposite. Changed the behavior of how the test are done. XDamage is only looked if XFixes is finded, as well as the XComposite is only searched if XDamage is present. * damage-client.c: Removed. This file was incorpored in gmag-events.c. * damage-client.h: Removed. * gmag-events.c: New file added. This file is responsible to gnome-mag and X comunication. This one initialize all the extensions and handle events. * gmag-events.h: Interface to gmag-events.c. * magnifier-main.c: Added the option ignore_composite to MagnifierOptions structure. Added comments after the struct members inicialization. * magnifier-private.c: Added two new members: GdkWindow *overlay and GdkPixmap *source_drawable, the first hold an reference to the overlay window created by XCompositeGetOverlayWindow and the second is where the screen is composited. * magnifier.c: Some headers reorganized; Removed functions from this file: magnifier_free_cursor_pixels, magnifier_get_source_pixbuf, magnifier_cursor_notify and magnifier_cursor_notification_init. The first two function were putted in the new file magnifier/gmag-events.c with the prefix magnifier removed and the new one, gmag_events, added. The function magnifier_cursor_notify was incorporated in the handler function of XFixes, XDamage and XComposite related events gmag_events_handler, while the magnifier_cursor_notification_init was putted inside gmag_events_init. (magnifier_reset_overlay_at_idle): This new function was added to reparent the magnifier window to the overlay window after the magnifier initialization. This grants that the magnifier window will not be obscured by popup windows. Thanks to everyone that report bugs about all these modifications and the Sun team that tested it and make possible a very good COMPOSITE support in gnome-mag available! 2007-01-08 Christian Kirbach With hints from Christian Persch * configure.in, magnifier-main.c: Do the transition from popt to glib's GOption command line parsing, one of the current Gnome goals. Require glib >= 2.11.1. * magnifier.c: Remove obsolete dependency on . 2006-12-15 Carlos Eduardo Rodrigues Diogenes * configure.in: post-release incrementing to 0.14.1. 2006-12-15 Carlos Eduardo Rodrigues Diogenes * configure.in: Version 0.14.0; Added tests to verify if the libcolorblind is present in the system. * docs/man: Added magnifier.1.man man page to gnome-mag. Thanks goes to George Kraft IV! * idl/GNOME_Magnifier.idl: New contrast documentation accordingly the new patch in bug #348629; Add two new methods and documentation for brightness manipulation; Added a new enumeration represeting colorblind filters. * magnifier/zoom_region.c: (zoom_regin_process_pixbuf): Alter how the contrast is applied, making it consistent in how contrast behave; Added the brightness filter processing. Added the colorblind filter processing. (zoom_region_get_property): Added the property to get the current colorblind filter; Added the property to get the current brightness factor applied to each image component. (zoom_region_set_property): Change how the contrasts properties are setted, climping the input between the range -1 and 1; Added the property to set the brightness factor applied to each image component. Added the property to set the colorblind filter. (zoom_region_init): Change the initial values of the contrasts properties to 0, meaning 0% of contrast change in the output image; Added the initial values of the brightness properties to 0; Added the initiation of the colorblind filter to no filter. (zoom_region_class_init): Set the epv to support new two functions. (zoom_region_properties_init): Added the brightness properties to the PropertyBag. (impl_zoom_region_set_brightness): The new function to set the brightness. (impl_zoom_region_get_brightness): The new function to get the brightness. * magnifier/zoom-region.h: Added the brightness variables to the ZoomRegion structure; Added the ColorBlindFilter variable to the ZoomRegion structure. * magnifier/Makefile.am: Added the colorblind library to the linker stage. * test/control-client.: Added the 'D' option to the control-client test application. This allow change the brightness in the following manner: '#: ./control-client D 1 0 0'; Added the 'B' option to the control-client test application. This option iterates throw all the colorblind filters. 2006-12-13 Carlos Eduardo Rodrigues Diogenes * po/POTFILES.in: Added the file magnifier/magnifier-main.c to the list. 2006-11-27 Carlos Eduardo Rodrigues Diogenes * magnifier/zoom-region.c: Avoid NOOP operations in impl_zoom_region_set_mag_factor and zoom_region_set_viewport by verifying if the passed values are the same as the actual ones. 2006-11-25 Carlos Eduardo Rodrigues Diogenes * magnifier/zoom-region.c: make the scaled pixbuf be recalculated when the magnification factor is changed throw the PropertyBag. This also make the code to recalculate the scaled pixbuf be shared between the setMagFactor and the PropertyBag interfaces. Also make the test pattern property work. 2006-11-23 Carlos Eduardo Rodrigues Di骻enes * magnifier/GNOME_Magnifier.server.in.in: removed the '-vz 2' flag from the magnifier bonobo server startup (bug #376047). Thanks to Eitan Isaacson for the patch. * test/control-client.c (main): This test was dependent from the '-vz 2' flag and stop to work after apply the patch. Added code to probe the screen size and make the magnifier vertical split, the same behavior with the '-vz 2' flag. * test/mag-test.c (main): The same problem and resolution applied to the above. 2006-11-11 Carlos Eduardo Rodrigues Di骻enes * magnifier/magnifier-main.c: bug #372731: Tampering with the DISPLAY variable resolved. Thanks to Eitan Isaacson for the patch. 2006-11-09 Carlos Eduardo Rodrigues Di骻enes * magnifier/zoom-region.c: bug #98240: "border-size" not working resolved. The last patch introduced some regressions, so a new patch was applied. 2006-10-24 Carlos Eduardo Rodrigues Diogenes * configure.in: bug #348169: shouldn't search X libraries in prefix other than $x_libraries resolved; bug #319010: warning messages searching for the Xdamage and Xfixees headers fixed. 2006-09-26 Carlos Eduardo Rodrigues Diogenes * magnifier/zoom-region.c: bug #98240: "border-size" not working resolved. 2006-08-09 Carlos Eduardo Rodrigues Diogenes * magnifier/zoom-region.c: (impl_zoom_region_set_roi): Avoid update the screen when the ROI passed is the same that the one in use. 2006-07-20 Carlos Eduardo Rodrigues Diogenes * configure.in: bug #341914: Should not force -I/opt/fdo/include resolved; bug #348133: Result of check to XTest isn't used in gnome-mag resolved. 2006-07-12 Carlos Eduardo Rodrigues Diogenes * configure.in: post-release increment 2006-07-12 Carlos Eduardo Rodrigues Diogenes * configure.in: correct the version information. 2006-07-10 Carlos Eduardo Rodrigues Diogenes * configure.in: post-release increment to 0.12.7 2006-07-10 Carlos Eduardo Rodrigues Diogenes * configure.in: Version 0.12.6 * magnifier/zoom-region.c: changed how the update is done to avoid bad blocks generated during this process (bug #344070). Added contrast support to the zoom regions. Added three properties that can be change by a Bonobo::PropertyBag: red-contrast, green-contrast and blue-contrast. Two interfaces were added two setContrast and getContrast that can access in one call the red, green and blue values. More informations about these two interface can be found in the documentation. (bug #343689) * magnifier/zoom-region.h: added the contrast_r, contrast_g and contrast_b floats to the ZoomRegion struct. (bug #343689) * idl/GNOME_Magnifier.idl: Added the IDL of the two new interfaces. (bug 343689) * teste/control-client.c: Added the 'C' option to test the new contrast interface: "# ./control-client C 1 0.5 0.5". (bug #343689) 2006-05-15 Carlos Eduardo Rodrigues Diogenes * configure.in: changed the detection of the Xtst, Xdamage and Xfixes libraries, so, these are used in systems where theses libs are installed in /usr/lib (bug #341854). Version 0.12.5. Version 0.12.6. Switching to post-release increment. * Makefile.am: Changed to clean files, generated by intltool, when running 'make distcheck' (bug #341888). * magnifier/Makefile.am: Changed to properly clean files when running 'make distcheck' (bug #341888). * magnifier/zoom-region.c: Round problem in conversion from source-to-view and view-to-source coords resolved (bug #338551). (zoom_region_set_property): Now zoom_region_align is called when the {x,y} alignment property are changed. * test/control-client.c: Added the 'a' parameter to rotate throw the alignment options support by the zoom_region. Added the 'x' parameter to exit the magnifier, this is good to test the magnifier exit process. 2006-04-17 Carlos Eduardo Rodrigues Diogenes * docs/reference/Doxyfile: Tweak some variables to generate a better documenation. * idl/GNOME_Magnifier.idl: Documented the enum AlignPolicy. * magnifier/zoom-region.c: Removed unused functions: _get_x_cursors, zoom_region_clip_to_exposed_bounds, zoom_region_clip_to_viewport, zoom_region_source_root and exit_report * magnifier/magnifier.c: Removed unused functions: magnifier_expose_filter 2006-04-17 Kjartan Maraas * configure.in: Remove obsolete entry for no_NO. * po/no.po: And the translation. 2006-04-16 Brian Pepple * po/LINGUAS: New file listing all supported languages. * configure.in: Use po/LINGUAS instead of including all languages directly in this file. See the wiki for more information: http://live.gnome.org/GnomeGoals/PoLinguas 2006-03-24 Tommi Vainikainen * configure.in (ALL_LINGUAS): Added Dzongkha (dz). 2006-02-14 Bill Haneman * docs/reference/Makefile.am: Make doxygen optional (bug #330720, thanks to Sylvain Bertrand). 2006-01-19 Bill Haneman * configure.in: Revved to 0.12.3. * autogen.sh: Require automake 1.9 (bug #326161). * idl/GNOME_Magnifier.idl: Make docs doxygen-compatible. 2005-12-16 Bill Haneman Patch from Carlos Diogenes for bug #171465, thanks! * magnifier/zoom-region.c: (zoom_region_paint_pixmap): Avoid painting more than necessary. (zoom_region_update): Avoid painting parts of pixbuf that aren't onscreen. (zoom_region_set_viewport): Re-allocate the scaled pixbuf if the source bounds change. 2005-11-01 Simos Xenitellis * configure.in: Added ky (Kirghiz) to ALL_LINGUAS. 2005-10-27 Erdal Ronahi * configure.in: Added ku (Kurdish) 2005-10-04 Bill Haneman * configure.in, README, NEWS: Revved to 0.12.2. 2005-08-24 Bill Haneman * magnifier/zoom-region.c: (zoom_region_calculate_scroll_rects): Fix for nasty update bug when panning quickly, effects large magnification factors most severely. 2005-06-21 Bill Haneman * magnifier/magnifier.c: (magnifier_adjust_source_size) C89 fix - thanks to Behdad Estafod. 2005-06-07 Ignacio Casal Quinteiro * configure.in: Added 'gl' to ALL_LINGUAS. 2005-05-24 Bill Haneman * magnifier/magnifier.c: (magnifier_get_cursor): Make sure we initially grab the current source cursor if we don't have any other cursor defined. Fixes #167705. 2005-03-23 Bill Haneman * configure.in, README, NEWS: Revved to 0.12.1. 2005-04-21 Abduxukur Abdurixit * configure.in: Added "ug" to ALL_LINGUAS. 2005-03-31 Steve Murphy * configure.in: Added "rw" to ALL_LINGUAS. 2005-03-23 Bill Haneman Cleaned up magnifier.c to suppress compiler warnings. * magnifier/magnifier.c: (magnifier_adjust_source_bounds): Corrected typo. 2005-03-22 Bill Haneman * magnifier/magnifier.c: (magnifier_adjust_source_bounds): Improve logic so that target-on-top and target-left magnification splitscreen scenarios work better. 2005-03-08 Bill Haneman * configure.in, README, NEWS: Revved to 0.12.0, for gnome 2.10.0. 2005-02-04 Bill Haneman Fix for bug #164371. * magnifier/magnifier.c: (magnifier_adjust_source_size): New. (magnifier_set_property): Call magnifier_adjust_source_size when changing target bounds, if target and source displays are the same. * magnifier/zoom-region.c: (zoom_region_set_viewport): Re-create the pixmap when the viewport changes, since the source-bounds may have changes as a result. [This can happen when source-display==target-display] 2005-02-04 Bill Haneman * configure.in: Revved to 0.11.14. * README, NEWS: Updated for 0.11.14. * magnifier/zoom-region.c: Added some forward declarations for existing funcs. (_rectangle_clip_to_rectangle): Implemented. (zoom_region_clip_to_target): Renamed to (zoom_region_clip_scaled_pixmap). Not yet used. (zoom_region_update): Create the pixmap if not already created; this makes the 'update current' calls at init time work, so that the initial magnified target window isn't wholly or partially blank. (impl_zoom_region_mark_dirty): Clip to the source, not target, bounds. (impl_zoom_region_set_mag_factor): Create a pixmap that's big enough for any update/mark-dirty request. We were missing some parens () in our calc. Fixes 166282. 2005-01-18 Bill Haneman * README, NEWS : Updated for 0.11.13. * magnifier/magnifier.c: Moved the 'get source bounds' call back to before the zoom-regions-restore call. Fixes bugs #164444 and (partially) #164371. Note that this fix will cause "self-magnification" if the source display is changed to be the same as the target display, after initial invocation, as a minor side-effect. 2005-01-17 Bill Haneman * configure.in: Revved to 0.11.13. * magnifier/magnifier.c: (magnifier_cursor_notification_init): Keep track of cursor connection, close the old one, remove the gsource (which was causing a hang), and reopen a new one when SOURCE changes. Fixes #164491. * magnifier/zoom-region-private.h: Store the update handler gsource. * magnifier/zoom-region.c: (zoom_region_do_dispose): Brute-force remove the update handler gsource, because g_idle_remove_by_data isn't reliably removing all the idle handlers. (zoom_region_queue_update): Only add the process-updates idle handler if one isn't already running. (zoom_region_coalesce_updates): Check zoom_region->priv->q before checking its length. Reset the update_handler_id to 0 when you've emptied the queue. Completes fix for #164275. 2005-01-16 Bill Haneman * configure.in, NEWS, README: Updated for 0.11.12. Fixes for bug #164275. * magnifier/damage-client.c: (magnifier_damage_client_init): Keep track of the damage-client gsource, and remove it when re-initializing the damage connection on source DISPLAY change. Make sure to connect to the source display, not the default DISPLAY. * magnifier/magnifier-main.c: Removed some excess output to stderr. * magnifier/magnifier.c: (MagnifierZoomRegionSaveProps): New struct for persisting zoom region params during a brute-force reparent. (magnifier_unref_zoom_region): Don't unref here, we do it elsewhere. (magnifier_reparent_zoom_regions): Superceded by separate save/restore methods. (magnifier_zoom_regions_save): New, persist the zoom region data before disposing, during brute-force reparent. (magnifier_zoom_regions_restore): New, create and new zoom region list from saved set. (magnifier_set_property): Handle source-display setting differently - save the old zoom list, destroy and recreate the main GtkWindow, and recreate the zoom list. Restore the main window's target bounds on re-create. (impl_magnifier_get_target_display): Fixed cut/n/paste error in the return of 'target display'. * magnifier/zoom-region.c: Added conditionally-compiled assertions for lifecycle testing. Added more sanity checks before indirections through pointers, to help prevent SEGVs. (zoom_region_update_current): Tested GDK_IS_DRAWABLE of pixmap. (zoom_region_paint_crosswire_cursor): Init an unused part of the GdkRectangle, to keep valgrind happy. (zoom_region_create_pixmap): Recompute the exposed viewport when creating the initial pixmap. Added code to return ZOOM_REGION_ERROR_NO_TARGET_DRAWABLE under appropriate conditions. (zoom_region_do_dispose): Remove the GSource for updating the pointer, because it doesn't get removed by g_idle_remove_by_data. [Fixes SEGV bugs when changing source DISPLAY] (zoom_region_private_init): Initialize the various bounds rectangles. (zoom_region_finalize): Check the status of the zoom region and magnifier widgets before calling gtk_container_remove. Also some minor cleanup. * magnifier/zoom-region.h: Added conditional 'alive' field for assertion testing. * magnifier/zoom-region-private.h: Added member for pointer-update gsource handler. 2005-01-10 Pawan Chitrakar * configure.in: Added ne "Nepali" in ALL_LINGUAS 2004-12-07 Bill Haneman * configure.in, README, NEWS: Revved to 0.11.10. * magnifier/zoom-region-private.h: (ZoomRegionPrivate): Added last_drawn_crosswire_pos. * magnifier/zoom-region.c: (zoom_region_unpaint_crosswire_cursor): Form the clip rect from last_drawn_crosswire_pos, not the backing rect. (zoom_region_paint_crosswire_cursor): Fix broken GDK_DRAWABLE test, reinstates drawing of crosswire. Use 16 bits of color mask instead of 8, for GdkColor inversion mask. Set the gdk_gc clip mask to NULL if we haven't been passed one, don't reuse the stale one. (zoom_region_paint_cursor): Save the last_drawn_crosswire_pos before we clip the cursor_backing_rect to the current screen. (zoom_region_update_pointer): Create a clip region which encompasses the whole zoom region, before updating the cursor image. 2004-12-06 Bill Haneman * configure.in: Improved tests for DAMAGE and XFIXES - include -lX11 in the link list for the configure tests. 2004-12-03 Bill Haneman * magnifier/zoom-region.c: (zoom_region_update_cursor): Unpaint the cursor before movine the backing rectangle. (impl_zoom_region_mark_dirty): Always update the pointer when handling a dirty region. Fixes bug #160352. 2004-11-22 Bill Haneman * magnifier/magnifier.c: Terminate #ifdef. Ow. 2004-11-19 Bill Haneman * magnifier/magnifier.c: (magnifier_cursor_convert_to_rgba): New. (magnifier_get_source_pixbuf): Convert from client incoding to little-endian before passing RGBA data from XFixes cursor image. 2004-11-11 Bill Haneman * magnifier/magnifier.c: (magnifier_init_window): Added declaration to top of source file. Thanks to George Kraft of IBM for catching the problem. 2004-11-05 Bill Haneman * magnifier/magnifier.c: (magnifier_init_window): Declare before first use. Cast the priv->w to GTK_WINDOW where needed. 2004-11-02 Bill Haneman * configure.in: revved to 0.11.9. * magnifier/magnifier: (magnifier_set_cursor_from_pixbuf): Test for GDK_IS_DRAWABLE before using pixmap or cursor. (magnifier_set_property): Don't change the gdk_screen on an existing toplevel magnifier window - tear it down and start over. (magnifier_init_window): Take a GdkScreen param, and call gtk_window_set_screen here. * magnifier/zoom-region: (zoom_region_paint_cursor): Check for drawability before scribbling in the cursor pixmap. (zoom_region_paint_pixmap): Check that the window is realized before painting it. (zoom_region_update): Check for drawability before writing into the private pixmap. 2004-10-29 Bill Haneman * magnifier/magnifier-main.c: Set the default cursor-scale-factor to the zoom-factor, if none is specified. 2004-10-06 David Lodge * configure.in: Added "ang" (Old English) to ALL_LINGUAS. 2004-10-06 Bill Haneman * configure.in: Revved to 0.11.8. * magnifier/zoom-region.c: Added more debug output, turned it off by default. * magnifier/magnifier.c: Turned off debug output by default, and enhanced property debug output a bit. 2004-10-06 Mark McLoughlin * magnifier/zoom-region.c: (impl_zoom_region_set_roi): Fix syntax error to make it build. 2004-10-05 Bill Haneman * magnifier/magnifier-main.c: Cleaned up some debug output. * magnifier/magnifier.c: Added DBG() macro, and added debug output so that client calls and property changes could be logged. (impl_magnifier_set_target_display): Compare with previous display string before changing. (impl_magnifier_set_source_display): Compare with previous display string before changing. (magnifier_add_zoom_region): Init the expose/damage listeners only if 'source_initialized' is FALSE, not on first zoom region creation. * magnifier/magnifier.h: Added source_initialized boolean member to Magnifier struct. * magnifier/damage-client.c: (magnifier_source_has_damage_extension): Fix sense of the XDamageQueryExtension return value. * magnifier/zoom-region.c: Cleaned up some debug output. 2004-09-17 Bill Haneman * magnifier/damage-client.c: (magnifier_damage_handler): Fixed memory leak. Return if rectlist is empty, don't assume value returned in 'howmany' is correct. 2004-09-17 Bill Haneman * configure.in, NEWS, README: Revved to 0.11.7. * magnifier/magnifier_main.c: (main): Allow commandline arg "--ignore-damage". * magnifier/magnifier.c: (magnifier_set_extension_listeners): Don't add a root expose listener, this method for getting notifications is obsolete. Print warnings if DAMAGE or XFIXES are not initialized. * magnifier/damage-client.c: (magnifier_damage_client_init) Check MAGNIFIER_IGNORE_DAMAGE env variable and ignore DAMAGE extension if it is set. * magnifier/zoom-region.c: (impl_zoom_region_set_roi): Do some sanity checking to make sure that ROI is centered somewhere on screen and that the right/bottom coords are greater than the left/top coords. 2004-08-24 Bill Haneman * configure.in: Revved to 0.11.6. Fixes for bug #141376 and bug #152300 : * magnifier/magnifier.c: (can_open_display): New, check to see if we can open a display given by a 'DISPLAY' string. (magnifier_warp_cursor_to_screen): Don't warp if magnifier->source_display is NULL. (magnifier_cursor_notification_init): Return FALSE if the source-display is NULL. (magnifier_get_root): Check magnifier->source_display before trying to get ahold of the root window. (magnifier_init_display): Return if the display_name cannot be opened. Manage magnifier->source_display_name and magnifier->target_display_name strings. (magnifier_get_property): Implement accessors for MAGNIFIER_SOURCE_DISPLAY_PROP and MAGNIFIER_TARGET_DISPLAY_PROP. (magnifier_set_property): Call can_open_display before accepting a new source or target display string. (impl_magnifier_get_source_display): New. (impl_magnifier_get_target_display): New. (magnifier_class_init): Initialize the epv entries for above. * magnifier/magnifier.h: Added source_display_name and target_display_name to Magnifier struct. * test/control-client.c: (main): Add tests for accessors of source and target display properties. 2004-08-30 Tomasz K艂oczko * configure.in: Better lookin PKG_CHECK_MODULES() output. Declare in one place on top required versions of other tools. Use AC_SEARCH_LIBS() aclocal macro for checking is linking with linsl, libsocket and libinet is neccessary. 2004-04-26 Jayaradha * configure.in: Added "ta" (Tamil) to ALL_LINGUAS. 2004-08-24 Bill Haneman * configure.in, NEWS, README: Revved to 0.11.5. * magnifier/magnifier.c: Implement LoginHelper API from at-spi. (magnifier_new): Aggregate LoginHelper interface via new MagLoginHelper subclass. (mag_login_helper_get_raise_windows): New. (mag_login_helper_get_device_reqs): New. (mag_login_helper_set_safe): New, no-op. Fixes bug #150846. 2004-08-17 Bill Haneman * configure.in: Check in /usr/openwin/sfw/lib for Damage and Xfixes client libraries, because XSun puts them there. Revved to 0.11.4. * magnifier/zoom-region-private.h: Added paint_cursor_gc and crosswire_gc here. * magnifier/magnifier.c: (magnifier_set_property): Re-init the cursor set when TARGET display changes; this is necessarly along with fixes listed below, to ensure that the pixmaps for backing data are recreated for the new GdkScreen. * magnifier/zoom-region.c: (zoom_region_priv_init): Init the paint_cursor_gc and crosswire_gc to NULL. (zoom_region_paint_cursor): Method-static GC here was wrong, it must be reinitialized on a per-region basis if the target display changes. (zoom_region_paint_crosswire_cursor): Method-static GC cache was a bad idea here too, see above. Fixes bug #149599. Removed some #ifdef XTST_CURSOR code that didn't work anyway; we don't need it now that we have XFIXES. 2004-08-16 Christian Rose * configure.in: Added "bs" to ALL_LINGUAS. 2004-08-16 Kjartan Maraas * configure.in: Add nb to ALL_LINGUAS. 2004-08-13 Gora Mohanty * configure.in: Added "or" to ALL_LINGUAS. 2004-06-15 Bill Haneman * magnifier/magnifier-main.c: (main): Only queue the global refresh if DAMAGE is not available. * magnifier/magnifier.h: (magnifier_source_has_damage_extension): New. * magnifier/damage-client.c: (magnifier_source_has_damage_extension): New, test for DAMAGE in source display. 2004-06-11 Bill Haneman * configure.in: Revved to 0.11.3. * magnifier/magnifier-main.c: Added is_override_redirect flag to MagnifierOptions. Initialized to '0'. Added --override-redirect commandline option. * magnifier/magnifier.h: (magnifier_new): Take a gboolean indicating whether the instance should be override-redirect or not. * magnifier/magnifier.c: Removed #define MAG_WINDOW_OVERRIDE_REDIRECT and related compile-time bracketing, replaced with override-redirect runtime flag. Added enum for WM_STRUT types. (magnifier_reset_struts_at_idle): New, called in idle handler after a window is created, to ensure that struts are set when appropriate. (magnifier_check_set_struts): Sets the _NET_WM_STRUT and _NET_WM_STRUT_PARTIAL properties on the magnifier window. Has no effect if the window is override-redirect. (magnifier_set_property): Call magnifier_check_set_struts when the source or target display, or target bounds, are changed. (impl_magnifier_add_zoom_region): Reset the struts when a zoom region is added. (magnifier_init_window): Register an idle handler to set the window struts. (magnifier_new): Take a boolean indicating whether the instance is override redirect or not. Attach to the size_allocate signal. (magnifier_size_allocate): New, reset struts when size changes. Fixes for bug #124690. * test/control-client.c: Added test "control-client T" for resizing the target bounds. 2004-05-27 Mohammad DAMT * po/id.po: Added Indonesian translation done by Ahmad Riza H Nst * configure.in: Added id to ALL_LINGUAS 2004-05-14 Bill Haneman * test/control-client.c: Add a test for cursor size, "control-client S". * magnifier/magnifier_transform_cursor: Ensure that size_y is initialized. Fix for #141503. * configure.in: Revved to 0.11.2. 2004-04-28 Bill Haneman * test/control-client.c: Added a test for magnifier color and scale factor, "control-client m". 2004-04-27 Bill Haneman * magnifier/magnifier.c: (magnifier_get_cursor): Remember to transform the cursor if we fall back to the 'default' cursor image and set. Fixes bug #141211. 2004-04-27 Bill Haneman * magnifier/magnifier.c: (magnifier_warp_cursor_to_screen): New method, ensures that pointer is on source display when source display is set by client. (magnifier_set_property): Call warp_cursor_to_screen when source is set. 2004-04-14 Bill Haneman * cursors/1_32/Makefile.am: Added missing file. 2004-04-09 Guntupalli Karunakar * configure.in: Added "gu" (Gujarati) to ALL_LINGUAS. 2004-04-07 Bill Haneman Fixed border-color property (border-size is still broken). * magnifier/magnifier-main.c: Fix setting of smooth-scroll-policy and border-size. * magnifier/zoom-region.c: (zoom_region_paint_border): Reinstated. Fixed color creation (color RGB values are 16 bit) and allocate the color on the appropriate drawable. (zoom_region_get_property, zoom_region_set_property): Fix for smoothscroll and bordersize properties. 2004-04-07 Bill Haneman Big changes to cursor handling, to support cursor-change notifications from Xfixes. Fix for bug #104831. * Makefile.am: Added "cursors" to SUBDIRS. * configure.in: Revved to 0.11.1. Added AC_OUT targets cursors/Makefile and cursors/1_32 * magnifier/Makefile.am: Don't dist cursor data from here, dist from cursors subdir. * magnifier/magnifier-private.h: Changed private cursor_default_size to cursor_default_size_x/y, to support non-square cursors. Added "use_source_cursor" flag, and cursorlist hash table of named cursor pixbufs. * magnifier/magnifier.c: Include "config.h", and include Xfixes.h if HAVE_XFIXES is defined. Added statics for cursor_client_connection, fixes_event_base, fixes_error_base. (magnifier_set_cursor_from_pixbuf): New utility (from refactoring). (magnifier_free_cursor_pixels): Called when an XFixes cursor is destroyed. (magnifier_get_source_pixbuf): New, returns a GdkPixbuf which contains the current source display's cursor image, if XFixes is available. (magnifier_get_pixbuf_for_name): New, returns a named cursor pixbuf from a previously loaded cursor set. (magnifier_set_cursor_pixmap_by_name): New, either sets the cursor from a named pixbuf in a cursor set (if found), or resorts to the source image from Xfixes (if available), or else loads a cursor called "default". (magnifier_cursor_notify): New, gets called if/when events are received on the x connection on which XFixesSelectCursorNotify has been called (if Xfixes is available). (magnifier_cursor_notification_init): New, sets up the notification link from Xfixes, if available. (magnifier_set_expose_listener): Renamed to (magnifier_set_extension_listeners): added call to magnifier_cursor_notification_init (). (magnifier_recolor_pixbuf): Don't only recolor pure black pixels, recolor all those darker than "0x808080". (magnifier_transform_cursor): Allow non-square cursors. (magnifier_init_cursor): renamed to (magnifier_init_cursor_set): Initialize a whole hashtable of cursors whose names are taken from their filenames in a directory whose dirname corresponds to the cursor-set name. * magnifier/magnifier.h: Added cursor_size_x and cursor_size_y in place of "cursor_size". * magnifier/zoom-region.c: Removed some debug printfs. 2004-04-07 Bill Haneman * magnifier/magnifier.c: (magnifier_realize): Reversed incorrect sense of a #define regarding WM hints when gnome-mag is using OVERRIDE_REDIRECT. (magnifier_reparent_zoom_regions): New method, reparents zoom regions when target DISPLAY is changed. See bug #137105; re-targeting now preserves existing zoomers. (magnifier_init_window): Set window type to GTK_WINDOW_TOPLEVEL if compiled with MAG_WINDOW_OVERRIDE_REDIRECT undefined. * magnifier/zoom-region.c: (zoom_region_get_property, zoom_region_set_property): Added get/set for "is-managed" property. Fixed broken fall-through in BORDERCOLOR_PROP. Changed BORDERSIZE_PROP to LONG. Changed usage of "default_gc" to use "priv->default_gc". (zoom_region_private_init): Init priv->default_gc to NULL. * magnifier/zoom-region.h: Added "is_managed" boolean member. * magnifier/zoom-region-private.h: Added "default_gc" GdkGC* member. * test/control-client.c: Added tests for setting target and source displays. "s" changes source display, "t" changes target. Changed arg for 'resize' from "s" to "b" (mnemonic 'bounds). 2004-04-06 Bill Haneman * configure.in: Revved to 0.11.0. This is now the unstable (gnome-2.7) branch of gnome-mag. Added (non-fatal) checks for DAMAGE and XFIXES X extensions, and set HAVE_DAMAGE and HAVE_XFIXES accordingly. * idl/GNOME_Magnifier.idl: (markDirty): Clarified doc/comment, to indicate that markDirty's input region is clipped by the current target visibility. * magnifier/damage-client.[ch]: New files, to support notifications from the DAMAGE extension. * magnifier/Makefile.am: Added damage-client.[ch] to sources. Fixes bug #136635. * magnifier/magnifier-main.c: (magnifier_main_refresh_all): Changed reference to property "source-display-size" to "source-display-bounds". (main): Use bonobo_pbclient APIs for setting source and target display bounds. Set the source display bounds to halfscreen if we're started in splitscreen (vertical or horizontal) mode. * magnifier/magnifier.c: (magnifier_zoom_regions_mark_dirty): New internal method, sends dirty notification to all zoom regions. (magnifier_notify_damage): New, used to pass an XRectangle indicating a dirty region in the source display. (magnifier_expose_filter): Refactor to use magnifier_zoom_regions_mark_dirty. (magnifier_set_expose_listener): Also init the damage client when called. (magnifier_get_display_rect_bounds): New method to load a RectBounds from a magnifier's source or target display. (magnifier_init_display): New method, initializes the source or target display fields when a new display-name is passed in. (magnifier_exit): Moved this method. (magnifier_get_property): Changed implementation for SOURCE_SIZE_PROP and TARGET_SIZE_PROP to read from the stored value, rather than always returning the absolute bounds of the source/target display. (magnifier_set_property): Make SOURCE_SIZE_PROP and TARGET_SIZE_PROP read/write. Fixes bug #135409. Make sure to reset source/target bounds when resetting source or target display. * magnifier/magnifier.h: Added source_bounds to Magnifier struct. Added declarations for magnifier_notify_damage. 2004-03-22 Bill Haneman * configure.in: Revved to 0.10.10. This is the gnome 2.6.0 release of gnome-mag. 2004-03-21 Mugurel Tudor * configure.in: Added "ro" to ALL_LINGUAS 2004-03-20 Gareth Owen * configure.in: Added en_GB to ALL_LINGUAS 2004-03-17 Leonid Kanter * configure.in: Added "ru" to ALL_LINGUAS. 2004-03-17 John C Barstow * configure.in: Added "mi" to ALL_LINGUAS. 2004-03-13 Danilo Segan * configure.in: Added "tk" to ALL_LINGUAS. 2004-03-10 Alexander Winston * configure.in: Added en_CA to ALL_LINGUAS. 2004-03-10 Bill Haneman * configure.in: (build fix) Don't check for XTST twice. 2004-03-07 Bill Haneman * configure.in: Revved to 0.10.8. Fix for builds with non-standard Xlib prefixes [Fernando Herrera, bug #130787]. * NEWS: updated. 2004-03-04 Guntupalli Karunakar * configure.in: Added "pa" (Punjabi) to ALL_LINGUAS. 2004-03-03 Bill Haneman * magnifier/magnifier-main.c: Made smooth-scrolling on by default, since there is little performance difference on the platforms we've tested. 2004-02-27 Paisa Seeluangsawat * configure.in: Added Thai (th) to ALL_LINGUAS. 2004-02-24 Bill Haneman * configure.in: Revved to 0.10.7. * magnifier/magnifier.c: (magnifier_init_window): Make the toplevel magnifier window GTK_TYPE_POPUP as it should be override-redirect and should never be occluded or decorated. 2004-02-10 Tomasz K硂czko * magnifier/Makefile.am: fix for paralel build (make -j). * configure.in: Trivial cleanup: remove AC_SUBST(CFLAGS), AC_SUBST(CPPFLAGS) and AC_SUBST(LDFLAGS). This variables are substed by default. 2004-02-09 Bill Haneman * configure.in: Revved to 0.10.6. Re-dist to fix libtool problem. 2004-02-06 Robert Sedak * configure.in: Added "hr" (Croatian) to ALL_LINGUAS. 2003-01-08 Brian Cameron * magnifier/zoom-region.c: Fix pan test so that it does not call zoom_region_process_updates if the delta is 0. This should fix the problem with Frame Rate being assigned unreasonable values. Also fixed the counter so it exits the pan test after the correct number of iterations. 2003-01-06 Brian Cameron * magnifier/zoom-region.c: Properly reset max totals. 2003-12-20 Arafat Medini * configure.in: Added Arabic locale "ar" to ALL_LINGUAS 2003-12-17 Brian Cameron * magnifier/zoom-region.c: Now cache gc's, so there is less X-traffic. * magnifier/magnifier-main.c: Properly abort if user specifies a pantest but does not supply a number of iterations via --timing-iterations. Corrected bug with exit-magnifier property not being set properly during the update test. 2003-12-11 Bill Haneman * magnifier/magnifier.c: Fixed compile issue in magnifier_expose_filter. Thanks to Kaushal Kumar for catching the problem. 2003-12-10 T脙碌ivo Leedj脙陇rv * configure.in: Added et to ALL_LINGUAS. 2003-12-10 Bill Haneman * magnifier/zoom-region.c: (zoom_region_update): Changed use of deprecated gdk_pixbuf_render_to_drawable to gdk_draw_pixbuf. * magnifier/magnifier.c: (magnifier_transform_cursor): Replaced gdk_pixbuf_render_to_drawable with gdk_draw_pixbuf (as above). * magnifier/magnifier-main.c, zoom-region.c, magnifier.c: Silenced some other compiler warnings introduced by timing patch. 2003-12-10 Bill Haneman * magnifier/zoom-region.c: Add #include (zoom_region_clip_to_target): New function, clips a rectangle in the source screen to the zoom-region's target. Used for processing expose/dirty notifications on the source. (impl_zoom_region_mark_dirty): Fixed implementation; it was using the wrong coordinate system for the 'dirty' notification. * idl/GNOME_Magnifier.idl: Improved docs for markDirty. * magnifier/magnifier.c: (magnifier_expose_filter): New method, filters 'GdkExpose' events that are passed in on a source window for which notifications are selected by the client. Useful if we have the ability to 'snoop' exposes on the source. (magnifier_set_expose_listener): Add the expose filter (above) to a specified GdkWindow. (magnifier_realize): Add the expose filter (above) to the source root window on set_source_display. (impl_magnifier_add_zoom_region): Add the expose filter to the source root when the first zoom region is added. 2003-12-08 Brian Cameron * magnifier/zoom-region.c Cleaned the timing report, now more code reuse. 2003-12-09 脙聟smund Skj脙娄veland * configure.in: Added nn to ALL_LNGUAS. * nn.po: Added Norwegian Nynorsk translation. 2003-12-09 Bill Haneman * configure,in, README, NEWS: Version 0.10.4. 2003-12-08 Brian Cameron * magnifier/zoom-region.[ch] * magnifier/magnifier-mai.c Updated performance tests so that they work properly when at magnification factors greater than 2. Improved test so that the ROI never goes off the edge of the screen, and exits more cleanly. Now display a performance summary so that performance data can be seen even if --timing-output is not specified. Improved the output so that it displays more useful information. Cleaned the implementation and code style. 2003-11-19 Brian Cameron * magnifier/zoom-region.c Made logic for computing total frame time more accurate, cleaned some printf statments, and added comments explaining how to read the timing report output. 2003-11-18 Brian Cameron * magnifier/zoom-region.c Fixed typo in printf statement. 2003-11-12 Brian Cameron * magnifier/magnifier-main.c * magnifier/zoom-region.c Updated panning test so that it loads the magnifier with screen data on first loop before starting the pan test. 2003-11-06 Brian Cameron * magnifier/zoom-region.h * magnifier/magnifier-main.c * magnifier/zoom-region.c Adding perfomance timing output. Support two different types of tests (--timing-delta-x/y and --timing-pan-rate). Now support pending of set_roi requests if they are coming in more quickly than can be processed. 2003-09-30 Christian Rose * configure.in: Added "eu" to ALL_LINGUAS. 2003-09-22 Taneem Ahmed * configure.in: Added "bn" to ALL_LINGUAS. 2003-09-19 Christian Rose * configure.in: Added "br" to ALL_LINGUAS. 2003-09-02 Gediminas Paulauskas * configure.in: Added lt to ALL_LINGUAS. 2003-08-24 Sanlig Badral * configure.in: Added "mn" to ALL_LINGUAS. 2003-08-08 Guntupalli Karunakar * configure.in: Added "hi" to ALL_LINGUAS. 2003-08-06 Wang Jian * configure.in: Added "zh_CN" to ALL_LINGUAS. 2003-08-01 Yuriy Syrota * configure.in: Added "uk" to ALL_LINGUAS. 2003-07-30 Paderaig O'Briain * magnifier/magnifier.c: Add include of to fix compiler warning. Remove semicolon after BONOBO_TYPE_FUNC_FULL to fix compiler warning. (magnifier_init): Move call to bonobo_activation_active_server_register to magnifier_new as BONOBO_OBJREF () returns NULL here; it causes bonobo-activation-server to crash where NUILL CORBA object is sent. (magnifier_new): check if server's registration was successful or not and take action accordingly. Code from Adi Dascal. This fixes bug #117991. 2003-07-20 Sam脙潞el J脙鲁n Gunnarsson * configure.in: Added "is" to ALL_LINGUAS. 2003-07-08 Alessio Frusciante * configure.in: Added "it" (Italian) to ALL_LINGUAS. 2003-07-06 Andras Timar * configure.in: Added "hu" to ALL_LINGUAS. 2003-07-02 Laurent Dhima * configure.in: Added "sq" to ALL_LINGUAS. 2003-06-30 Artur Flinta * configure.in: Added "pl" to ALL_LINGUAS. 2003-06-29 Dafydd Harries * configure.in: Added cy (Welsh) to ALL_LINGUAS. 2003-06-28 Jordi Mallach * configure.in (ALL_LINGUAS): Added "ca" (Catalan). 2003-06-18 Fatih Demir * configure.in: Added Turkish ("tr") to the languages' list. 2003-06-03 Changwoo Ryu * configure.in: Added "ko" to ALL_LINGUAS. 2003-05-20 Marcel Telka * configure.in: Added "sk" to ALL_LINGUAS. 2003-05-13 Abel Cheung * configure.in: Added "zh_TW" to ALL_LINGUAS. 2003-05-10 Danilo 脜聽egan * configure.in: Added "sr" and "sr@Latn" to ALL_LINGUAS. 2003-04-26 Takeshi AIHANA * configure.in: Added 'ja' into ALL_LINGUAS. 2003-04-22 Adi Dascal * magnifier/Makefile.am: GNOME_Magnifier.server file will be generated and installed. Cosmetical and functional change to EXTRA_DIST (same data, which is the value of "server_in_files" variable was exposed in two places). Added CLEANFILES tag, so the .server and .server.in will be erased at make clean. 2003-04-05 Duarte Loreto * configure.in: Added "pt" to ALL_LINGUAS. 2003-04-02 Bill Haneman [Bugs 106067, 105298, 105820] [Replaced use of deprecated methods gtk_signal_connect, gtk_exit, gtk_drawable_size, gtk_window_get_size.] * configure.in: Add -DG*_DISABLE_DEPRECATED to GNOME_MAG_DEBUG_CFLAGS. * magnifier/Makefile.am: Add GNOME_MAG_DEBUG_CFLAGS to $INCLUDES (note that these CFLAGS don't include debug flags if --enable-debug wasn't specified). * test/mag-test.c: (magnifier_clear_all_regions): Removed (unused). (test_client_magnifier_get_zoomer): #ifdef'ed out (unused). * magnifier/magnifier-main.c: (main): Do popt stuff before calling gtk_init. Also, set $DISPLAY via putenv if it has been assigned via --target-display, this is because gtk+ may not handle changing X servers mid-stream very well. * magnifier/magnifier.h: * magnifier/magnifier.c: (magnifier_new): Don't pass argc and argv anymore, we weren't using them anyhow. * magnifier/zoom-region.c: (zoom_region_paint_crosswire_cursor): Fix broken calculation of clip bounds if we're clipping a crosswire cursor of thickness > 1 pixel about a cursor bitmap. 2003-04-02 Bill Haneman Fix for bugs 105205 and 106067. * magnifier/magnifier-main.c: (magnifier_options): Improved terse docs for --fullscreen, noting dependency on --source-display and --target-display. * configure.in: version 0.10.0 * idl/GNOME_Magnifier.idl: (setMagFactor): return boolean instead of void, i.e. FALSE on failure. * magnifier/magnifier.h: (magnifier_error_check): New; test for X allocation errors. * magnifier/magnifier.c: (magnifier_error_check): New method (see above). (magnifier_x_error_handler): New method (see above). (magnifier_realize): Set X error handler (as above). * magnifier/zoom-region.h: * magnifier/zoom-region.c: (ZoomRegionPixmapCreationError): New enum. (zoom_region_paint_crosswire_cursor): Initialize x_left_clip and y_top_clip. (zoom_region_create_pixmap): New, broken out from zoom_region_expose_handler. Returns an error code if the pixmap could not be created, for instance if the target drawable isn't initialized yet, or we run out of X memory. (zoom_region_expose_handler): call create_pixmap (above), and decrement the scale factor if we can't allocate it. (impl_zoom_region_set_mag_factor): Refuse to comply, and return CORBA_FALSE, if the resulting pixmap is too big for X to allocate. This also means we do the pixmap allocation synchronously now, so we can check. Note that we can only check if the target is already in existance, so in some cases (setting the initial mag factor at magnifier startup, i.e. before it's mapped) we won't actually return CORBA_FALSE, but will just create the largest pixmap possible once the target drawable is realized. 2003-04-02 Bill Haneman * magnifier/magnifier-main.c: (magnifier_main_refresh_all): Removed obsolete FIXME comment. * magnifier/magnifier.h: (magnifier_get_root): New method. * magnifier/magnifier.c: (magnifier_get_root): New method. (magnifier_init_window): New method, initializes magnifier's main window. (magnifier_init): Call magnifier_init_window, don't try to set the magnifier's root window here anymore. Don't set source and target display to $DISPLAY here, set them also in magnifier_init_window. Initialize magnifier->priv->root to NULL and set it on-demand. * magnifier/zoom-region.c: (zoom_region_scroll_smooth, zoom_region_cursor_rect): (zoom_region_paint_cursor, zoom_region_paint_pixmap): Checks for NULL drawables (null cursor, null window, null cursor-backing-pixmap, etc.) (zoom_region_properties_init): Free new bonobo_args after use. (zoom_region_update_pointer, zoom_region_source_root): Replace direct access to private magnifier 'root' window with magnifier_get_root(). 2003-04-02 Bill Haneman * configure.in: release 0.9.2 Removed obsolete GNOME_PLATFORM_GNOME2 macro. Replaced AC_DEFINE instances with 3-arg versions, to allow omission of acconfig.h. Include po/Makefile in AC_OUTPUT. * acconfig.h: removed. * Makefile.am: added 'po' to SUBDIRS. 2003-03-28 Glynn Foster * configure.in: release 0.9.1 * magnifier/Makefile.am: Fixes to distcheck. * Makefile.am: Add the intltool stuff to the distcheck. 2003-03-26 Bill Haneman Released 0.9.1. * configure.in: version 0.9.1. * NEWS: updated. 2003-03-23 Adi Dascal [committed by bh] * magnifier/magnifier.c: (magnifier_transfor_cursor): transform the hotspot, too. (if a scaling occurs than the position of the hotspot is not the same as in the xpm file) (magnifier_init_cursor): hold the default hotspot positions in the private strucure. 2003-03-25 Metin Amiroff * configure.in: Added "az" to ALL_LINGUAS. 2003-02-21 Christian Rose * configure.in: Added "ga" to ALL_LINGUAS. 2003-02-21 Roozbeh Pournader * configure.in: Added "fa" to ALL_LINGUAS. 2003-02-20 Dmitry G. Mastrukov * configure.in: Added Belarusian to ALL_LINGUAS. 2003-02-17 Bill Haneman Fixes for bugzilla #106304. * magnifier/magnifier.c: (magnifier_parse_display_name): Fixed silly error in parsing of screen_num. (magnifier_realize): Changed references to gdk_x11_get_atom_by_name to gdk_x11_get_atom_by_name_for_display. (magnifier_set_property): Fixes so that magnifier's main GtkWindow is moved to the correct target screen when the MAGNIFIER_TARGET_DISPLAY_PROP property is set. 2003-01-31 Bill Haneman * magnifier/magnifier_main.c: (main): Fixed magnifier's cursor-color property be use ulong. (global_options): Reverted the default cursor-set back to "default", from "crosswire" (which doesn't exist). * magnifier/magnifier.c: (magnifier_set_property): Fixed bonobo-arg bug which was introduced/exposed by pbclient patch. (magnifier_set_property): (magnifier_get_property): Revised use of cursor_color property to be a 'proper' unsigned long. (magnifier_init_cursor): Restructured 'if' to squash occasional leak. (magnifier_transform_cursor): Killed a debug printf. * magnifier/crosswire-cursor.xmp: Fixed bug in XPM input that resulted in wrong hotspot visuals. 2003-01-27 Adi Dascal * magnifier/cursors/*: Modified *.xpm files so the cursors would be able to be coloured by the current algorithm. * magnifier/magnifier.c: (magnifier_init_cursor): added a way to obtain the hotspots from the *.xpm cursor files, using a GdkPixbuf method. * magnifier/crosshair-cursor.xpm, * magnifier/default-cursor.xpm : Added hotspot information inside the file. * magnifier/magnifier-main.c: Setting "cursor-set" property - added. 2003-01-27 Pauli Virtanen * configure.in (ALL_LINGUAS): Added "fi" (Finnish). 2003-01-23 Kjartan Maraas * configure.in: Added GETTEXT_PACKAGE and ALL_LINGUAS. 2002-12-10 Michael Meeks * magnifier/magnifier.c (magnifier_do_dispose): split. (magnifier_gobject_dispose, impl_magnifier_dispose): upd. * magnifier/zoom-region.c (zoom_region_do_dispose): split & protect from double disposes. (impl_zoom_region_dispose, zoom_region_dispose): use it. 2002-12-09 Michael Meeks * magnifier/zoom-region.c (zoom_region_paint_cursor), (zoom_region_calculate_scroll_rects), (zoom_region_scroll_smooth): exit if we don't have drawable. * magnifier/magnifier.c (magnifier_get_type): kill. (magnifier_new): upd. (impl_magnifier_dispose): upd. (impl_magnifier_create_zoom_region): plug leak. (magnifier_properties_init): don't leak default args on properties that are non-writeable. * magnifier/magnifier-main.c (magnifier_main_test_image): make test_i_foo a local static at least. * magnifier/zoom-region.c (impl_zoom_region_set_mag_factor): dup/ref pb. (zoom_region_update_pointer_timeout): remove evil check for ->priv == 0xaaaaaaa ie. what might be in freed memory if you're lucky. (zoom_region_class_init): use GObject dispose, not the epv version. (zoom_region_dispose): fix several evilnesses. (zoom_region_get_type): kill. (zoom_region_finalize): chain to parent. (zoom_region_get_source_subwindow): bin ugly static we re-allocate each time anyway. (impl_zoom_region_dispose): for compat, just do an unref. calm compile warnings, kill PropData, PropIdx * magnifier/magnifier.c (impl_magnifier_create_zoom_region), (impl_magnifier_get_properties): dup/ref/rel/unref the pb. * magnifier/magnifier-main.c (main): re-write to use bonobo_pbclient stuff. (magnifier_main_refresh_all): release/unref the pb. * magnifier/zoom-region.c (impl_zoom_region_dispose): don't g_idle_remove_by_data 3 times. 2002-11-12 Bill Haneman Fixes for bugzilla 95942 and 98236. * magnifier/magnifier-private.h: Added cursor_default_size member. * magnifier/magnifier.c: (magnifier_transform_cursor): Changed to resize with respect to cursor default size, instead of cursor's *current* size. [98236] * magnifier/zoom-region.c: (zoom_region_queue_update): Add zoom_region_process_updates as an idle handler on receipt of an update to queue (rather than running the idle handler continuously). (zoom_region_update_pointer): Fixed to correctly detect when the zoom_region has been destroyed, and return FALSE then. (zoom_region_update_pointer_idle): Changed to queue a timeout-based pointer query and return FALSE if the pointer has stopped moving, otherwise keep spinning the idle handler. [95942] (zoom_region_update_pointer_timeout): Reinstate this function and queue an idle handler if the pointer has moved since the last timeout, which spins until the pointer gets quiet. (zoom_region_init): Changed to queue a timeout rather than an idle handler for the pointer update. (zoom_region_finalize): Do useful freeing of memory instead of just doing nothing ;-) stops massive memory leakage if multiple zoomers are created/destroyed. 2002-10-24 Bill Haneman * acconfig.h: Added this missing file, with template for HAVE_XFT. 2002-10-22 Bill Haneman * magnifier/magnifier.h: Add a #define for the OAFIID string. Fixed type in the IS_MAGNIFIER() macro. * magnifier/magnifier.c: (magnifier_gobject_dipose): Create this method from impl_magnifier_dispose; Fix a race condition in magnifier destruction. Removed the unref() of the property bag, this happens automatically on object disposal because of the way property bag is declared (bonobo_property_bag_new_closure). (magnifier_class_init): Add the gobject dispose handler. * test/mag-test.c: (get_magnifier): Change so that varible "magnifier" is not shadowed, and to avoid the peculiar declaration of "static" variables within a method block. * magnifier/magnifier-main.c: (magnifier_main_pan_all) (magnifier_main_refresh_all) Added guards for the timeout methods, to make sure the object hasn't been disposed when the timeout is called. (main): Added calls to g_timeout_remove() for the timers. 2002-10-21 Bill Haneman * configure.in: Test for XTst and locate it if available. * magnifier/magnifier-main.c: (MagnifierOptions) (main): Add code to set cursor-color. * magnifier/magnifier.c: (magnifier_scale_cursor): renamed "magnifier_transform_cursor". Added code to recolor the magnifier cursor's "black" pixels, if a cursor color has been specified. (magnifier_recolor_pixbuf) : New method, to support cursor color. (magnifier_set_property) (magnifier_get_property) : Cursor-color fixes. * magnifier/zoom-region.c: Added #includes of XTest.h and X11/cursorfont.h. (_get_x_cursors) : New method to grab X cursor set. (zoom_region_source_root) : Get the root source GdkWindow. (zoom_region_update_pointer) : Add code to check the current X cursor, using XTest. Does not seem to work reliably, #defined out via TEST_XTST_CURSOR block. 2002-10-18 Bill Haneman * cursors/1_32/*.xpm: * cursors/1_48/*.xpm: * cursors/1_64/*.xpm: Added a number of new cursors, courtesy of BAUM. They aren't available via the "cursor-set" API yet, but will be. 2002-10-18 Bill Haneman * magnifier/magnifier-main.c: (MagnifierOptions): Fixed incorrect type of cursor_scale_factor popt struct member. * magnifier/magnifier.c: (magnifier_properties_init): Fixed naming bug, "cursor-scale-factor" was incorrectly referred to as "cursor-mag-factor". * magnifier/zoom-region.c: Stifled some debug printfs. (magnifier_set_property) : Fixed bug when setting "smoothing-type" property to "none"; we now revert to NEAREST_NEIGHBOR interpolation. 2002-10-17 Bill Haneman * idl/GNOME_Magnifier.idl: Added struct Point (GNOME_Magnifier_Point). * magnifier/magnifier.c: (PropIdx): Added MAGNIFIER_CURSOR_COLOR_PROP, MAGNIFIER_CURSOR_HOTSPOT_PROP, MAGNIFIER_CURSOR_DEFAULT_SIZE_PROP, MAGNIFIER_CROSSWIRE_SIZE_PROP, MAGNIFIER_CROSSWIRE_CLIP_PROP, MAGNIFIER_CROSSWIRE_COLOR_PROP (magnifier_regions_refresh_cursor): Removed. (magnifier_scale_cursor): Changed to use new properties. (magnifier_init_cursor): Initial code for recoloring cursor pixmaps (non-functional). (magnifier_get_property) (magnifier_set_property) (magnifier_init): Added support for new properties. (magnifier_set_pointer): Removed. * magnifier/magnifier-private.h * magnifier/magnifier.h: Added members for new property support. * magnifier/zoom-region.c: (zoom_region_cursor_rect): (zoom_region_paint_cursor): (zoom_region_unpaint_cursor): (zoom_region_paint_crosswire): (zoom_region_unpaint_crosswire): Major changes to cursor drawing, to support new features. Crosswire now can draw XOR, colored lines/rects, and can be clipped by the cursor's rectanglar bounds if desired. (zoom_region_update_cursor_pos): (zoom_region_update_cursor): (zoom_region_update_pointer): New functions for cursor tracking and updating. (zoom_region_update_pointer_idle): GIdleFunc for checking the pointer position. (zoom_region_moveto): update the pointer before scrolling. 2002-10-16 Bill Haneman * magnifier/zoom-region.c: (zoom_region_update_pointer) (zoom_region_update_pointer_timeout) (zoom_region_update_pointer_idle) : New methods, for making sure the displayed cursor position in the magnifier is current. (impl_zoom_region_dispose): call g_idle_remove_by_data more than once. (zoom_region_init) : Add the idle func for checking the mouse position. (zoom_region_paint_*): Change the second GdkRectangle param to a pointer. (zoom_region_paint_cursor): Don't bother clipping if the second parameter is NULL. (zoom_region_paint_crosswire_cursor) (zoom_region_cursor_rect): Don't use the magnifier->priv->cursor_x, etc. positions, ask for the current mouse coords from GDK when painting the cursor. * magnifier/magnifier.c: (magnifier_set_cursor): Don't force refresh of the zoom regions anymore, they are now responsible for their own mouse coord finding. * magnifier/magnifier-main.c: (magnifier_main_pan_image): Revert the change from last night which forcibly updated the mouse coords; zoom regions are now responsible for doing this themselves. (This is much more performant). 2002-10-15 Bill Haneman * magnifier/magnifier.h: (magnifier_set_pointer): New method. * magnifier/magnifier-main.c: (magnifier_main_pan_image): Changed to check the mouse and call magnifier_set_pointer() whenever it moves, even if "mouse tracking" is not on; this means that the zoom-regions accurately reflect the pointer position. However latency is too big, this is a temporary fix and a more performant one is expected. * magnifier/magnifier.h: Added a gboolean "crosswire" member to the struct, to facilitate simultaneous crosswire+normal cursor. * magnifier/magnifier.c: (magnifier_set_pointer): New method. (magnifier_regions_refresh_cursor): New internal method (possibly temporary). (magnifier_get_cursor): Changes to support simultaneous crosswire and 'normal' cursors. (Not yet complete). * magnifier/zoom-region.c: (zoom_region_paint_cursor): Changes to draw a "normal" cursor only if there is a valid GdkDrawable for it in the magnifier private structs. This prevents error messages being printed for cursor-set="none". 2002-10-15 Bill Haneman * magnifier/magnifier.c: (#include): added #include of . (magnifier_realize): Set the WM_TYPE of the magnifier toplevel window to _WM_TYPE_DOCK; this will work OK until the Metacity RFE for a new WM type (for special, always-always-on-top windows) goes in. (magnifier_unref_zoom_region): Commented-out cast of user_data to "Magnifier" since we don't use it yet. 2002-10-14 Bill Haneman * test/control-client.c: New file, exercises a couple of simple pieces of control API for a running magnifier instance. * test/mag-test.c: New file; tests a new or running magnifier by clearing all zoom regions and creating four new ones with various parameter settings. NOTE: If the pre-existing magnifier is tracking the mouse, the resulting test will, too. * idl/GNOME_Magnifier.idl: Renamed method "resize" to "moveResize". * magnifier/GNOME_Magnifier.server.in.in: Fixed brokenness in the .server file, in terms of namespace and versioning. * magnifier/Makefile.am: Removed reference to removed file "mag_control.c". * magnifier/magnifier-main.c: (magnifier_main_pan_image): Now set ROI on all active zoom_regions. * magnifier/magnifier.c: (magnifier_unref_zoom_region): Created new GFunc for use when freein the zoom regions list. (magnifier_create_zoom_region): Moved call to gtk_container_add() to magnifier_add_zoom_region, so that newly created zoomers aren't mapped to the parent until they are explicitly added. (magnifier_clear_all_zoom_regions): Fixed so that the zoomers are disposed of when the list is freed. (magnifier_init): We now add the canvas to the toplevel window here. () * magnifier/zoom-region-private.h: Reorganized, tidied comments about the coordinate bounds. Added an expose_handler_id private member, for calling gtk_signal_disconnect_by_data(). NOTE: we should change this to use gsignal API instead, at some point. * magnifier/zoom-region.c: (_rectangle_clip_to_rectangle) (_rectangle_clip_to_bounds): Added new convenience API, reduced code duplication. (zoom_region_clip_to_exposed_target): Changed to use new methods above. (zoom_region_clip_to_window): New method. (zoom_region_paint): We no longer clip to the viewport, but only to the window. (zoom_region_calculate_scroll_rects) (zoom_region_scroll_fast): Added some error checking. (zoom_region_recompute_exposed_viewport) : New method. (zoom_region_recompute_exposed_bounds): New method; used when viewport, roi, border-size, or other coordinate-system-affecting properties are changed. (zoom_region_update): We no longer clip to the target before clipping to the "exposed target". We also now clip the "paint rectangle" to the window, not the viewport. (zoom_region_align): New method, factored out of 'moveto' code. (impl_zoom_resize): renamed "impl_zoom_move_resize". (impl_zoom_region_dispose): We now disconnect from the 'expose' signal, and also disconnect the update idle handler, on dispose. (zoom_region_private_init): Initialize some things that were being left to chance (!). * magnifier/zoom-region.h: rearrange members in struct a bit. * magnifier/test/Makefile.am: Added 'control-client' and 'mag-test' targets. 2002-10-10 Bill Haneman * configure.in: Changed versioning stuff to match 'libgnome' model. We now increment the version when interfaces change. Changed current version to '0.9.0', and soname to so.1.0.0, to reflect API and bincompat changes. * magnifier/Makefile.am: Added libgnome_mag_la_LDFLAGS definition, including LT_VERSION_INFO. * magnifier/magnifier.c: (magnifier_init_cursor): Fixed hotspot specification for "crosshair" cursor (note, not same as "crosswire" cursor). * magnifier/zoom-region-private.h: Added a "border" widget. * magnifier/zoom-region.c: (_coalesce_update_rects): Fixed this so that it actually coalesces the expose regions. It isn't real smart, so the resulting areas can be larger than the original updates if the updates are "tiled" perfectly. However for overlapping or redundant expose rectangles it helps, and it usually reduces the queue length to only two expose events, thus it's mostly a performance improvement. (zoom_region_coalesce_updates): Fixed to check for existance of zoom_region->coalesce_func pointer, and use that to do coalescing if it's found. (zoom_region_init_window): We now create a "border" widget which contains the viewport. This should help us with border visuals, but it's not fully implemented yet so borders are still pretty broken. 2002-10-09 Bill Haneman * magnifier/magnifier-main.c: (main): Fixed reversed sense of "--timing-test" flag. [Oops] Added support for "--border-size" argument. (border visuals a bit ugly ATM) Added support for "--border-color" argument. 2002-10-09 Bill Haneman Mostly-functional sample implementation of new IDL. Not Yet Supported: contrast settings (but inverse video is supported). TODO : consider storing a smaller scaled GdkPixbuf for the source image, and discarding it after rendering. * idl/GNOME_Magnifier.idl: GNOME_Magnifier_ZoomRegion_AlignPolicy: Added this enum. GNOME_Magnifier_ZoomRegion_ScrollingPolicy: Added this enum. * magnifier/GNOME_Magnifier.server.in.in: Activation file now looks in 'bindir' directory, since we've moved the magnifier executable there. Also changed the OADIID interface string suffix from "proto0.1" to "0.9". * magnifier/Makefile.am: Moved the magnifier executable from LIBEXECDIR to BINDIR, since it's user-executable. Added cursors DATA, exported CURSORSDIR variable to CFLAGS. Added cursors to EXTRA_DIST. * magnifier/mag_control.c: Changed included file from Magnifier.h to GNOME_Magnifier.h. (NB: This source file doesn't work anymore and is deprecated, probably will remove it soon). * magnifier/magnifier-main.c: Added #include of due to use of strcmp. (MagnifierOptions): Added cursor_set, smoothing_type, zoom_factor_x, zoom_factor_y, refresh_time, mouse_poll_time, cursor_size, cursor_scale_factor, smooth_scroll, and test_pattern members; removed dual_head, clamp_colors, no_bonobo, fast_cmap_convert, bilinear, hyperbolic options. The removed options were either nonfunctional now or are superceded by newer options. (magnifier_options): Renamed some options, made "--usage", "--help", and "-?" arguments work. Added support for cursor-sets, cursor size and scaling, mouse latency control, smoothing algorithms (by name), and scrolling smoothness selection. Also added a "use-test-pattern" option for testing magnifier scrolling without a source display. (lastx, lasty): Removed statics. (magnifier_main_test_image): Tweaks to test mode. (magnifier_main_pan_image): Replaced use of X API for querying the pointer with Gdk API. We also poke the magnifier's internal cursor_x and cursor_y members, which should probably be replaced with an API call at some date. (magnifier_main_refresh_all): Timer-based routine to mark the current view window dirty periodically; either clients or the main executable must do this until we get global expose events from the XServer, which will only be true for the XVirtualScreen, (main): We now do all our interaction with the magnifier instance via the properties, initializing them based on the magnifier_options from popt. * magnifier/magnifier-private.h: Added this file. (_MagnifierPrivate): removed X dependencies. Added private members for dealing with the root window and the cursor. * magnifier/magnifier.c: Removed some cruft. (magnifier_timing_test): Removed. (magnifier_scale_cursor) (magnifier_init_cursor) (magnifier_get_cursor): Added methods for cursor manipulation. [magnifier_get_cursor is public, others are static methods.] (magnifier_get_property): Added support for target-source-size, taret-size properties. (magnifier_set_property): Removed X dependencies, Added support for target-display and source-display properties, target-size property, cursor-set, cursor-size, and cursor-zoom properties. (impl_magnifier_create_zoom_region): Implemented, and improved window behavior. (magnifier_init): Removed X dependencies. Changed OADIID suffix to "0.9" from "proto0.1". * magnifier/magnifier.h: Added include of . Removed deprecated "mag_data" pointer. (magnifier_get_cursor): Added public declaration of method. * magnifier/zoom-image-private.h: (_ZoomRegionPrivate): Added exposed_viewport member, bounds of current viewport, not including borders. Added source_drawable, source_pixbuf_cache (only used if pixbuf diffs are being used), cursor_backing_pixels, border_gc. * magnifier/zoom-image.c: Massive revision. (PropIdx): Added ZOOM_REGION_TESTPATTERN_PROP. (_debug_announce_rect): Added debugging aid. (_diff_pixbufs): Added support for source image diffs, intended for conditional updates, but currently too slow. (_combine_rects) (_refactor_rects) (_combine_update_rects) (_coalesce_update_rects) (_smartbutbroken_coalesce_update_rects) (zoom_region_coalesce_updates) : Added event coalescing functions, currently buggy. (zoom_region_clip_to_exposed_target) (zoom_region_clip_to_target) (zoom_region_clip_to_viewport) (): Added coordinate conversion routines. (zoom_region_update_current): Added. (zoom_region_cursor_rect) (zoom_region_unpaint_crosswire_cursor) (zoom_region_paint_crosswire_cursor) (zoom_region_paint_cursor) (zoom_region_unpaint_cursor) : Added cursor painting support. (zoom_region_paint_border) (zoom_region_paint_pixmap) : Added. (zoom_region_paint) : Refactored to use above routines. (zoom_region_scroll_fast) : Added cursor support, and scrolling code. (zoom_region_scroll_smooth) : Allow smoother scrolling. (zoom_region_scroll) : Check the smooth_scroll_policy and decide which scrolling routine to call. (zoom_region_moveto) : Fixed the coordinate conversions. (_zoom_region_invert_pixbuf) : Added support for inverse video. (zoom_region_post_process_pixbuf) : Hooks for doing image smoothing, currently not connected to anything. (zoom_region_get_source_subwindow) : Implement this, so that we can get the source display pixels to scale. Also added support for source image diffs, so that we only update if the source image has changed. However the diff process is currently too slow to be helpful. (zoom_region_update) : Added some useful clipping, so that we only update pixels that are currently in-view. Added hooks to invert video, and to post-process the scaled image (for smoothing, etc.). (zoom_region_init_window) : split the GdkWindow initialization code into its own method. (zoom_region_sync) : Changed to consume all pending updates. (zoom_region_set_viewport) : Does more stuff, so that setting the viewport after the zoomer has been realize works. (zoom_region_get_property) : (zoom_region_set_property) : Added "smooth-scroll-policy" property support. Better support for "smoothing-type", "use-test-pattern", and border properties. (impl_zoom_region_set_roi) : Added support for various alignment policies. (impl_zoom_region_set_mag_factor) : (impl_zoom_region_mark_dirty) : Fixed implementation. (impl_zoom_region_set_viewport) : Fixed. (zoom_region_init_properties) : Added initialization of new properties. (zoom_region_private_init) (zoom_region_init) : Added initializations of new instance data. * magnifier/zoom-image.h: Added definition of CoalesceFunc. Added new members for the event coalescing function to use, and changed the 'smooth_scroll' member to a GNOME_Magnifier_RectBounds_ScrollingPolicy enum. * magnifier/mag_image.h: Removed. * magnifier/mag_image.c: Removed. 2002-09-24 Bill Haneman * idl/GNOME_Magnifier.idl: (GNOME_Magnifier_Magnifier_ZoomRegionList): Moved to GNOME_Magnifier_ZoomRegionList, where it belongs. * magnifier/Makefile.am: Added magnifier-main.c to magnifier_SOURCES. * magnifier/magnifier-main.c: New file, contains main() and associated CLI processing code, but not "magnifier" instance code. * magnifier/mag_image.h: Now we #include "magnifier.h". * magnifier/mag_image.c: (refresh_image): Changed to take Magnifier* as data, not MagnifierData*. Also changed to use XDISPLAY information from Magnifier struct instead of MagnifierData struct. * magnifier/magnifier.h: Now #include Changed mag_data pointer (deprecated) to a gpointer. * magnifier/magnifier.c: (global_options): (MagnifierOption): (magnifier_option): (magnifier_realize): (magnifier_exit): (magnifier_pack_regions): (main): Moved to magnifier-main.c. (magnifier_process_updates): New method. (magnifier_realize): New method. (magnifier_parse_display_name): New method, parses string into display name and screen number. (magnifier_set_property): Implemented back-end support for source-display, target-display. (magnifier_create_zoom_region): Implemented, using ZoomRegion api. (magnifier_init): Added some old MagnifierData stuff here, which will eventually need removing. (magnifier_new): Removed popt stuff, to magnifier-main.c. * magnifier/zoom-region.c: (zoom_region_display): (zoom_region_get_property): Added debug printf. (zoom_region_set_property): Added debug printf. (zoom_region_get_properties): Fixed previously broken return value, we now dup the objref before returning it. 2002-09-24 Bill Haneman * idl/GNOME_Magnifier.idl: Major revision of Magnifier API. (#includes): Now we include (and thus depend on) Bonobo_Property.idl. (namespace): Now our interfaces are in the GNOME/Magnifier namespace. (setMagFactor): No longer a oneway method. (markDirty, markUnmanaged): Moved to ZoomRegion. (SourceDisplay, TargetDisplay): Changed to BonoboProperty properties. (getProperties): new method. (setROI): moved to ZoomRegion, changed to take RectBounds struct instead of individual longs as in params. (getROI): move to ZoomRegion, now return a RectBounds. (exit): changed to dispose(). (resize): moved to ZoomRegion. (getZoomRegionParams): Changed to getProperties() call on the ZoomRegion object. (destroyZoomRegion): Removed, replaced with dispose() and de-referencing of the ZoomRegion object via unref(). (addZoomRegion): new method. (general): Created new GNOME_Magnifier_ZoomRegion interface, and return a sequence of ZoomRegions from the Magnifier. Defined a new RectBounds structure, for manipulating bounding boxes. Most methods now operate on these ZoomRegion objects rather than the containing Magnifier. Most properties and settings on both Magnifier and ZoomRegion are now via Bonobo_PropertyBag, which is implemented on Magnifier and ZoomRegion, and available via getProperties() methods on the two interface types. * magnifier/Makefile.am: Added zoom-region.h and zoom-region.c to magnifier_SOURCES. Added libgnome-mag.la to LDADD. * magnifier/magnifier.c: (#includes): Added "xoom-region.h" and "GNOME_Magnifier.h". (PropIdx): New enum. (impl_magnifier_fullscreen): Removed. (impl_magnifier_set_extents): Removed. (impl_magnifier_set_follow_mouse): Removed. (impl_magnifier_set_contrast): Removed. (impl_magnifier_set_roi): Removed. (impl_magnifier_goto): Removed. (impl_magnifier_set_mag_factor): Removed. (impl_magnifier_mark_dirty): Removed. (impl_magnifier_mark_unmanaged): Removed. (impl_magnifier_get_zoom_region_params): Removed. (impl_magnifier_remove_zoom_region): Removed. (impl_magnifier_resize_zoom_region): Removed. (impl_magnifier_create_zoom_region): Modified for new args. (impl_magnifier_add_zoom_region): New method. (impl_magnifier_get_zoom_regions): New method. (impl_magnifier_exit): changed to impl_magnifier_dispose(). (impl_magnifier_destroy): tweaked for new implementation. (magnifier_get_property): New method. (magnifier_set_property): New method. (impl_magnifier_set_source_display): Changed to use properties. (impl_magnifier_set_target_display): Changed to use properties. (magnifier_class_init): Changed to use new IDL methods. (magnifier_instance_init): Changed to use new IDL methods. (magnifier_properties_init): New method. (magnifier_get_type): Changes for new namespace. * magnifier/magnifier.h: (Magnifier): Changed Magnifier struct to include members for new properties. (MagnifierClass): Changed POA typename to match new namespace. * magnifier/zoom-image.h: New file; implementation of GNOME_Magnifier_ZoomRegion. * magnifier/zoom-image.c: New file; structure/type definitions of ZoomRegion BonoboObject which implements GNOME_Magnifier_ZoomRegion. 2002-09-02 Kenneth Rohde Christiansen * po/: Added dir * magnifier/GNOME_Magnifier.server.in.in: Marked strings for translation * po/POTFILEs.in: Added files containing strings. * po/Makefile.in.in: Added file. 2002-07-19 Bill Haneman * magnifier/mag_image.c: GdkPixbug *subimage: Removed unnecessary static object. (parse_message): Removed this method (a relic of the old socket control). (get_num, get_coord, get_rect): Removed these methods. (pan_image): Removed unused variable 'rect'. (CDIFF): Fixed this macro, shutup preprocessor warnings. (clamp_to_nearest): Removed unused retval. (GET_PIXEL, PUT_PIXEL): New macros for direct gdkpixbuf poking. (mag_pixbuf_post_process): Removed use of GdkImage and horrible slow copy, gdk_image_get_pixel and gdk_image_get_pixel, etc., replacing with direct access to the GdkPixbuf data. Also fixed the postprocessing when panning. (refresh_image): Added missing return value. Horizontal and vertical pans now look pretty good, diagonal pans still look buggy. * magnifier/magnifier.c: (sockaddr_un mag_server): Removed (unused). (timer_iterations): Removed (unused). (get_commands): Removed (unused). (main): Removed old traces of socket controls. (impl_magnifier_mark_unmanaged): Silenced compiler warning. (magnifier_class_init): Silenced compiler warning. 2002-07-19 Bill Haneman (Branched gnome_2_0 branch prior to this commit) * configure.in: Now require gtk+-2.1.0. Incremented gnome-mag revision to 0.2.0. * magnifier/mag_image.h: Added global 'spi_source_root_window' GdkWindow. * magnifier/mag_image.c: Remove old codepath in favor of multihead gdkpixbuf image scaling... (old_get_root_subimage): Removed. (new_get_root_subimage): Renamed 'get_root_subimage()'. (xlib_get_colormap): Removed. (mask_table[], convert_map[]): Removed. (rgb1, rgb1a, rgb8, rgb8a, rgb565lsb, rgb565msb, rgb565alsb): Removed. (rbg565amsb, rgb555lsb, rgb555msb, rgb555alsb, rgb555amsb): Removed. (rgb888alsb, rgb888amsb, rgb888lsb, rgb888msb, visual_decompose_mask): Removed. (convert_real_slow, xlib_get_colormap, get_root_image): Removed. (get_root_subimage): Changed to call gdk_pixbuf_get_from_drawable, rather than the old 'rgbconvert' method. * magnifier/magnifier.c: (main): Changed to use new codepath, i.e. spi_source_root_window = gdk_screen_get_root_window (), rathen than using X calls to get the root window. This way we can use GDK more effectively and portably than having to convert XImage data via the (previous, removed) various rgbconvert implementation methods listed above. 2002-07-16 Bill Haneman * magnifier/mag_image.c: rgbconvert(): Removed unused method; we now use gdkpixbuf to do this. 2002-08-19 Bill Haneman * HACKING: Added file, including build sheriff consent. 2002-08-16 Michael Meeks * magnifier/mag_image.c (rgbconvert): add pre-conditions. 2002-08-15 Michael Meeks * magnifier/Makefile.am: install generated header. * gnome-mag-1.0.pc.in: upd. 2002-08-15 Michael Meeks * magnifier/Makefile.am: rename server file. move stuff into libexec, process twice. * magnifier/Magnifier.server.in.in: namespace it, update to libexec. * idl/Magnifier.idl: include Bonobo_Unknown only. Also, this file needs renaming to Accessibility_Magnifier * idl/GNOME_Magnifier.idl: and rename to this / re-namespace. 2002-08-15 Michael Meeks * gnome-mag-1.0.pc.in (idldir): get it right. 2002-08-13 Michael Meeks * idl/Makefile.am (idl_DATA): fix it so we actually install it. 2002-07-26 Laszlo Peter * magnifier/Makefile.am: add POPT_LIBS to LDADD. 2002-06-30 Bill Haneman * magnifier/magnifier.c: Made the commands setRoi, setMagFactor, markDirty, and goto update the display immediately. Added option at runtime to clamp the colors of the scaled image to those of the input image, useful with the --bilinear-interpolation and other interpolation options. We start the magnifier with a full pull of the root window, so that we never see "blackout" areas in the magnified region before we process expose events (cosmetic fix). * magnifier/mag_image.c: Implemented colormap inversion and clamping of the colors in the scaled image to the input image. NOTE: current implementation is slow, so refresh of the magnifier is slower when colormap inversion or clamping are turned on. (old_get_root_subimage): Renamed from get_root_subimage; will replace with new method when patch for bug #86931 is accepted into gtk+. (new_get_root_subimage): New code which uses the more portable, debugged gdk_pixbuf_xlib_get_from_drawable () instead of our cut-and-paste code. [We can't use this until a fix for the bug mentioned above is accepted into gtk+.] 2002-06-25 Bill Haneman * magnifier/mag_image.c: (display_image): Fixed bug which used target screen bounds to clamp center values, should have been source screen bounds. (convert_real_slow): Don't call visual_decompose_mask if the masks are zero. 2002-06-24 Bill Haneman Reworking of the magnification code to support fast panning, subimage tiles, and refreshing the copy of the source X root window in an idle handler. (This code is still pretty rough, but much more performant now). * magnifier/magnifier.c: (main): Added timing benchmark. Removed last of socket control API. (timing_test): Added this method. (magnifier_options); Added options --bilinear-interpolation and --hyperbolic-interpolation, and --timing-test. * magnifier/mag_image.h: (pan_image): (refresh_image): Added functions. (get_root_subimage): Renamed/modified signature. (get_root_image): Removed. (MagnifierData): Added source_screen_num and target_screen_num members. * magnifier/mag_image.c: (get_root_image): (get_root_subimage): Refactored substantially, get_root_subimage calls get_root_image with bbox parameters. (expose_event): Implemented, to pull data in from stored source image and scale on-the-fly. (update_image): Big refactor. (display_image): Big refactor. (refresh_image): New method, refreshes entire copy of source X display. (pull_into_scaled_image): New method, 'does what it says on the tin'. (pan_image): New method, in timeout, checks pointer and scrolls/pans window if necessary, pulling in new image data if needed from the cached copy of the source root window.