3.6.0 - November 15, 2018

  • Added AMS::SU_MAJOR_VERSION
  • Added AMS::SU_PLUGINS_LOCATION
  • Added AMS.clamp_int and AMS.clamp_real
  • Added AMS.min_int and AMS.min_real
  • Added AMS.max_int and AMS.max_real
  • Added AMS.sign_int and AMS.sign_real
  • Added AMS.refresh_toolbars
  • Added AMS::Translate.convert_text function for translating HTML files.
  • Added AMS::Keyboard.send_mouse_input
  • Added AMS::Keyboard.send_keyboard_input
  • Added AMS::Keyboard.send_hardware_input
  • Added AMS::Window.get_class_long
  • Added AMS::Window.set_class_long
  • Added AMS::Window.set_background_color
  • Added AMS::Window.get_keyboard_focus
  • Added AMS::Window.set_keyboard_focus
  • Added AMS::Menu.is_item_checked_by_pos?
  • Added AMS::Menu.is_item_checked_by_id?
  • Added AMS::Menu.is_item_grayed_by_pos?
  • Added AMS::Menu.is_item_grayed_by_id?
  • Added AMS::Geometry.scale_matrix
  • Added AMS::Geometry.exract_matrix_w_factor
  • Added AMS::Geometry.product_vectors
  • Added AMS::Group.split
  • Revised all AMS::Group and AMS::Geometry functions, optimizing for performance.
  • Removed AMS::Lib loader functions
  • Removed swo_on_viewport_paint and swo_on_post_viewport_paint
  • Fixed bug in AMS::Geometry.blend_colors
  • Fixed bugs in AMS::ExtensionManager and made it load from stage path as the last resort in case all else fails.
  • Keyboard events are now triggered across the entire SketchUp thread. Unwanted events can be omitted with checks for active window.
  • Changed mouse move, mouse enter, and mouse leave events from SWO to SWP.
  • Compatibility with Ruby 2.5.

3.5.2 - July 25, 2017

  • Compatibility with Windows XP.

3.5.1 - July 17, 2017

  • Compatibility with SU versions prior to 2013.

3.5.0 - July 9, 2017

  • Migrated AMS, AMS::Group, AMS::Geometry, and AMS::MultiLineText to C++ extension, which includes optimizations and various fixes.
  • Removed AMS::System platform detection functions: is_windows?, is_mac?, and is_linux?; use constants instead.
  • Removed AMS::Sketchup.is_32bit? and AMS::Sketchup.is_64bit?.
  • Added AMS::IS_SKETCHUP_32BIT and AMS::IS_SKETCHUP_64BIT.
  • Added AMS::IS_RUBY_VERSION_18, AMS::IS_RUBY_VERSION_20, and AMS::IS_RUBY_VERSION_22.
  • Revised AMS::RayUtil functions and moved them to AMS::Geometry.
  • Moved AMS.scale_vector to AMS::Geometry.
  • Added AMS::Geometry.calc_cubic_bezier_point(ratio, p0, p1, p2, p3).
  • Added AMS::Geometry.calc_cubic_bezier_slope(ratio, p0, p1, p2, p3).
  • Added AMS::Geometry.scale_point(point, scale).
  • Removed AMS::Geometry.rotate_matrix1_to_matrix2.
  • Added AMS::Geometry.rotate_matrix_xaxis_to_dir(transformation, dir).
  • Added AMS::Geometry.rotate_matrix_yaxis_to_dir(transformation, dir).
  • Added AMS::Geometry.rotate_matrix_zaxis_to_dir(transformation, dir).
  • Added AMS::Geometry.rotate_vector(vector, normal, angle).
  • Added AMS::Geometry.angle_between_vectors(v1, v2, normal).
  • Reworked AMS::Geometry.transition_transformation(t1, t2, ratio) to consider scaled matrices.
  • Rearranged parameters for AMS::Geometry.blend_colors and AMS::Geometry.get_points_on_circle3d.
  • AMS::Geometry.get_points_on_circle2d and AMS::Geometry.get_points_on_circle3d now accept rot_angle in radians.
  • Revised most AMS::Group functions.
  • Replaced AMS::MultiLineText.#entity with AMS::MultiLineText.#get_entity.
  • Added AMS::MultiLineText.#set_entity(entity).
  • Added AMS::MultiLineText.#get_position.
  • Added AMS::MultiLineText.#set_position(x,y).
  • Added AMS::Window.peek_message(handle, msg_filter_min, msg_filter_max, remove_flag).
  • Added AMS::Window.peek_message2(handle, msg_filter_min, msg_filter_max, remove_flag).
  • Added AMS::Keyboard.get_key_name(vk_code).
  • Added AMS::Group.get_bounding_box_from_edges(object, recursive = true, transformation = nil, &entity_validation).
  • Added AMS::Sketchup.show_trays(state).
  • Added AMS::Sketchup.close_trays.
  • Added AMS::Sketchup.activate_scenes_bar_tab(tab_index).
  • Added AMS::Sketchup.threaded_messagebox(caption, text, type, owner_handle).
  • Added AMS::SketchupObserver.#swp_on_page_selected(page1, page2, tab_index1, tab_index2).
  • Added two additional parameters to AMS::SketchupObserver.#swo_on_page_selected.
  • Removed AMS::Win32::API as it hasn't been used since version 2.
  • Removed AMS::Lib.clean_up.
  • Added AMS::ExtensionManager to prevent overwrite issues that occur when updating loaded extensions. Thanks to ThomThom for the original version.

3.4.1 - December 17, 2016

  • Added signature.

3.4.0 - October 31, 2016

  • Made most keyboard and midi functions compatible with Mac OS X.
  • Added AMS::MIDI.is_device_open?
  • Added AMS::MIDI.out_message(*args)

3.3.0 - July 10, 2016

  • Added more MIDI functions.
  • Added Group and Geometry modules.
  • Added AMS.round(value, precision)
  • Started making compatible with Mac OS X.

3.2.5 - May 22, 2016

  • Improved performance with observers.

3.2.4 - May 21, 2016

  • More compatibility with different encodings.

3.2.3 - May 19, 2016

  • Made compatible with different encodings.

3.2.2 - April 05, 2016

  • Fixed crash when toggling menu bar on different localization. Thanks to herojack and perroloco2000 for report.

3.2.1 - March 30, 2016

  • Fixed small bug in AMS::Window.set_pos.
  • Recompiled with optimized settings.
  • Fixed the frozen path load error on particular machines.

3.2.0 - February 28, 2016

  • Added AMS::SketchupObserver.#swo_on_page_selected(page1, page2)

3.1.4 - February 06, 2016

  • Made SU full screen function associate to the desired monitor(s). Thanks to DimaV83 for request.

3.1.3 - December 30, 2015

  • Fixed a bug that caused a crash when remove AMS observer from within an observer method.

3.1.2 - December 04, 2015

  • Made it compatible with Windows XP. Thanks for Junar Amaro for report.
  • Fixed a bug that prevented menu bar from working properly on Windows XP.
  • Fixed a bug where starting SU8, with dialogs open, the library failed to identify the main window.

3.1.1 - November 29, 2015

  • Fixed a bug that caused increase in CPU usage and lead to a crash. Thanks to Pherim for report.

3.1.0 - November 26, 2015

  • Added AMS::Sketchup.send_user_message(receiver_handle, id, data)
  • Added AMS::SketchupObserver.#swo_on_user_message(sender_handle, id, data)
  • Added AMS::Sketchup.get_other_main_windows
  • Added AMS::Sketchup.get_executable_name
  • Added AMS::Window.get_moudle_handle(handle)
  • Added AMS::Window.get_executable_path(handle)
  • Added AMS::Window.get_executable_name(handle)
  • AMS::SketchupObserver.#swp_on_command(id) no longer triggers on 24214 command. The 24214 command occurs very often and is called when the view is invalidated, rather than when the tool is activated.
  • Added AMS.inspect_element(item)

3.0.1 - September 20, 2015

  • Fixed some security issues.

3.0.0 - September 16, 2015

  • Fully rewritten library with optimizations, bug fixes, and improvements.
  • All code that deals with Windows API is now a C++ extension.
  • Unicode strings are now handled properly.
  • Removed Ruby-FFI library as it's no longer necessary.
  • Changed MIDI behaviour and renamed some of its functions:
    • AMS::MIDI.play_note no longer has the 'duration' parameter, and it returns a sound id rather than boolean.
    • AMS::MIDI.stop_note now asks for a sound id.
    • Replaced AMS::MIDI.channel_sustain_pedal with AMS::MIDI.sustain_channel_pedal.
    • Removed AMS::MIDI.play_3d_note and AMS::MIDI.set_3d_note_position.
    • Added AMS::MIDI.set_note_position(id, position, max_hearing_range)
    • Added AMS::MIDI.get_device_handle()
  • Replaced AMS::Keyboard.get_key_value with AMS::Keyboard.get_key_code.
  • Added AMS::Keyboard.get_virtual_key_codes
  • Added AMS::Keyboard.get_virtual_key_codes2
  • Added AMS::Keyboard.get_virtual_key_names
  • Added AMS::Sketchup.include_toolbar(handle)
  • Added AMS::Sketchup.ignore_toolbar(handle)
  • Added additional parameters to AMS::Sketchup.find_window_by_caption(caption, full_match = true, case_sensitive = true)
  • Added AMS::Sketchup.find_child_window_by_caption(parent_handle, caption, include_sub_childs = false, full_match = true, case_sensitive = true)
  • Added AMS::Sketchup.find_window_by_class_name(class_name, full_match = true, case_sensitive = true)
  • Added AMS::Sketchup.find_child_window_by_class_name(parent_handle, class_name, include_sub_childs = false, full_match = true, case_sensitive = true)
  • AMS::Sketchup.refresh and AMS::Sketchup.close now return boolean rather than void.
  • Removed AMS::Menu.validate
  • Replaced AMS::Menu.get_menu_item_string_by_pos with AMS::Menu.get_item_string_by_pos.
  • Replaced AMS::Menu.get_menu_item_string_by_id with AMS::Menu.get_item_string_by_id.
  • Replaced AMS::Menu.set_menu_item_string_by_pos with AMS::Menu.set_item_string_by_pos.
  • Replaced AMS::Menu.set_menu_item_string_by_id with AMS::Menu.set_item_string_by_id.
  • Fixed a bug where AMS::Menu.get_item_id failed to return -1 if given index represented a submenu.
  • Removed AMS::Window.validate
  • AMS::Window.show(handle, state) now returns boolean rather than integer.
  • AMS::Window.is_child?(parent_handle, handle) was changed to AMS::Window.is_child?(handle, parent_handle)
  • Replaced AMS::Window.bring_window_to_top with AMS::Window.bring_to_top
  • Replaced AMS::Window.get_text with AMS::Window.get_caption
  • Replaced AMS::Window.set_text with AMS::Window.set_caption
  • AMS::Window.send_message now returns message processing result rather than nil.
  • Added AMS::Window.post_message(handle, message, wParam, lParam)
  • Added AMS::Window.get_layered_attributes(handle)
  • AMS::Window.set_layered_attributes(handle, color, opacity, flags) now accepts an array of RGB values for the color parameter.
  • Added AMS::Window.get_windows(include_hidden = true)
  • Added AMS::Window.get_process_windows(process_id, include_hidden = true)
  • Added AMS::Window.get_thread_windows(thread_id, include_hidden = true)
  • Added AMS::Window.get_child_windows(parent_handle, include_sub_childs = false, include_hidden = true)
  • Added AMS::Window.find_window_by_caption(caption, full_match = true, case_sensitive = true)
  • Added AMS::Window.find_child_window_by_caption(parent_handle, caption, include_sub_childs = false, full_match = true, case_sensitive = true)
  • Added AMS::Window.find_window_by_class_name(class_name, full_match = true, case_sensitive = true)
  • Added AMS::Window.find_child_window_by_class_name(parent_handle, class_name, include_sub_childs = false, full_match = true, case_sensitive = true)
  • Added AMS::Window.is_unicode?(handle)
  • Added AMS::Window.get_related(handle, command)
  • Added AMS::Window.get_ancestor(handle, flag)
  • Added AMS::Window.client_to_screen(handle, x, y)
  • Added AMS::Window.screen_to_client(handle, x, y)
  • Added AMS::Window.map_point(handle_from, handle_to, x, y)
  • Added AMS::DLL.load_libarary(path)
  • Added AMS::DLL.free_libarary(handle)
  • NULL window/menu handles now return nil rather than zero.
  • Fixed a bug where activating/deactivating particular observer triggered swo_activate/swo_deactivate in all active observers rather than in particular observer being activated or deactivated.
  • Fixed a bug where swo_on_toolbar_container_filled/swo_on_toolbar_container_emptied was unintentionally called when toolbar container visibility state was changed.
  • Added post events for AMS::SketchupObserver: swo_on_post_enter_menu, swo_on_post_exit_menu, swo_on_post_switch_full_screen, swo_on_post_maximize, swo_on_post_minimize, swo_on_post_restore, swo_on_post_focus, swo_on_post_blur, swo_on_post_enter_size_move, swo_on_post_size_move, swo_on_post_exit_size_move, swo_on_post_caption_changed, swo_on_post_menu_bar_changed, swo_on_post_viewport_paint, swo_on_post_viewport_size, swo_on_post_viewport_border_changed, swo_on_post_scenes_bar_visibility_changed, swo_on_post_scenes_bar_filled, swo_on_post_scenes_bar_emptied, swo_on_post_status_bar_visibility_changed, swo_on_post_toolbar_container_visibility_changed, swo_on_post_toolbar_container_filled, swo_on_post_toolbar_container_emptied.

2.2.0 - January 22, 2015

  • Migrated from a C extension to a C++ extension.
  • Added an option to hide Vray dialogs. Thanks to shake1 for request.

2.1.0 - December 03, 2014

  • Added AMS::Lib.clean_up, which removes all unregistered Ruby files from the library.
  • Added AMS::System.get_metrics(index)
  • Minor bug fixes.

2.0.0 - November 20, 2014

  • Improved functionality.
  • Added support for SU 64 bit.
  • Reorganized various functions and rewrote documentation.
  • Migrated from relying on win32-api gem to using a C extension.
  • Implemented Windows MIDI.
  • Made FFI Compatible with Ruby 1.8.6. It's not compatible with Ruby 1.8.0 though.

1.0.9 - April 26, 2014

  • Added get_keys and get_values to the registry.
  • Improved MultiLineText.

1.0.8 - February 12, 2014

  • Stabilized registry readers and writers.
  • Stabilized custom shortcuts on localized SU versions.

1.0.7 - February 04, 2014

  • Added custom timers.
  • Optimized show/hide dialogs function.
  • Added swo_tbc_onFilled(bar) and swo_tbc_onEmptied(bar) observers, which are called when a certain toolbar container is emptied or filled with toolbars.
  • Added swo_mw_onCommand(id), which responds to Sketchup.send_action events.

1.0.6 - January 29, 2014

  • Figured out a way to keep all menu shortcuts working when the menu bar is removed. Yes!!!
  • Added registry accessors.
  • Added swo_mw_onEnterMenu and swo_mw_onExitMenu observers.
  • Added AMS::Windows::API - thanks to Daniel J. Berger.
  • Fixed get screen resolution function. Originally it returned resolution of the current screen. Now, it returns resolution of all monitors combined.
  • Improved observers.
  • Increased callbacks limit of AMS::Win32::API to 20 callbacks.
  • Simplified libraries.

1.0.5 - December 16, 2013

  • Fixed the observers bug that made SketchUp freeze when pressing a key in the menu.

1.0.4 - December 15, 2013

  • Improved the refresh function.

1.0.3 - December 15, 2013

  • Some fixes and improvements.
  • Added AMS::Window.invalid?
  • Added AMS::Window.set_pos
  • Added AMS::Window.set_size

1.0.2 - December 06, 2013

  • Some fixes and improvements.
  • Increased observers reaction speed.

1.0.1 - November 22, 2013

  • Improved set full screen, maximize, minimize, and restore functions.

1.0.0 - November 17, 2013

  • Initial release.