F Changes from CLIM 1.0
RegionsBounding RectanglesAffine TransformationsProperties of SheetsSheet ProtocolsPorts, Grafts, and Mirrored SheetsText StylesDrawing in ColorExtended Stream OutputOutput RecordingTable FormattingGraph FormattingIncremental RedisplayExtended Stream InputPresentation TypesInput Editing and Completion FacilitiesMenusCommand ProcessingApplication FramesPanesThis appendix lists the incompatible changes from CLIM 1.0 (and CLIM 0.9 for the API related to the windowing substrate and gadgets), and the rationale for those changes. They are listed on a chapter-by-chapter basis. [annotate]
When the items say that a compatibility stub will be provided, this does not mean that this compatibility needs to be part of CLIM itself. It could be provided by a small compatibility package that defines stubs that translate from the old behavior to the new behavior at compile-time or run-time, or by some sort of conversion utility, or both. In the first case, compiler warnings should be generated to indicate that an obsolete form is being used. [annotate]
Minor issue: There are still lots of things from the windowing part, and the frames, panes, and gadgets chapters that need to be included here. --- SWM [annotate]
Bounding Rectangles
- with-bounding-rectangle* used to have optional max-x and max-y arguments. They are now required. [annotate]
- The function bounding-rectangle-set-edges has been removed, since bounding rectangles have been made immutable. There is no replacement for it. [annotate]
- bounding-rectangle-position* has been renamed to bounding-rectangle-position, since the term "position" unambiguously refers to an (x,y) coordinate pair. A compatibility function will be provided. [annotate]
- The functions bounding-rectangle-left, bounding-rectangle-top, bounding-rectangle-right, and bounding-rectangle-bottom have been replaced by bounding-rectangle-min-x, bounding-rectangle-min-y, bounding-rectangle-max-x, and bounding-rectangle-max-y. This is because left, top, right, and bottom are ill-specified. Compatibility functions will be provided. [annotate]
Affine Transformations
- The function make-3-point-transformation has had its argument list changed from (point-1 point-1-image point-2 point-2-image point-3 point-3-image) to (point-1 point-2 point-3 point-1-image point-2-image point-3-image). This was done because the original argument list did not group together inputs and output, which was confusing. [annotate]
- The function make-3-point-transformation* has had its argument list changed from (x1 y1 x1-image y1-image x2 y2 x2-image y2-image x3 y3 x3-image y3-image) to (x1 y1 x2 y2 x3 y3 x1-image y1-image x2-image y2-image x3-image y3-image). This was done because the original argument list did not group together inputs and output, which was confusing. [annotate]
- compose-scaling-transformation, compose-translation-transformation, and compose-rotation-transformation have been replaced by the six functions compose-translation-with-transformation, compose-scaling-with-transformation, compose-rotation-with-transformation, compose-transformation-with-translation, compose-transformation-with-scaling, and compose-transformation-with-rotation. This was done because the six functions implement all of the optimized useful cases of composition of transformations, and new names are required for all six. Compatibility functions will be provided for the three CLIM 1.0 functions. [annotate]
- transform-point* and untransform-point* have been renamed to transform-position and untransform-position. Compatibility functions will be provided. [annotate]
Properties of Sheets
Sheet Protocols
Ports, Grafts, and Mirrored Sheets
Text Styles
- The macros with-text-style, with-text-family, with-text-face, and with-text-size have been changed to take the medium argument first and the text style (or family, face, or size) argument second. This was done in order to be consistent with all of the other macros that take a medium argument as the first argument. Compatibility code will be provided that attempts to detect the old syntax and massages it into the new syntax, although it will probably not be able to detect all cases. [annotate]
- add-text-style-mapping has been replaced by (setf text-style-mapping) to be consistent with Common Lisp conventions. A compatibility function will be provided. [annotate]
Extended Stream Output
- stream-cursor-position* and stream-increment-cursor-position* have been renamed to stream-cursor-position and stream-increment-cursor-position. Compatibility functions will be provided. [annotate]
- The function stream-set-cursor-position* has been replaced by (setf* stream-cursor-position) to be consistent with Common Lisp conventions. A compatibility function will be provided. [annotate]
- The function stream-vsp has been replace by stream-vertical-spacing. A compatibility function will be provided. [annotate]
- The macros with-end-of-line-action and with-end-of-page-action have been changed to take the stream argument first and the action argument second. This was done in order to be consistent with all of the other macros that take a stream argument as the first argument. Compatibility code will be provided that attempts to detect the old syntax and massages it into the new syntax, although it will probably not be able to detect all cases. [annotate]
Output Recording
- The three protocol classes output-record, output-record-element, and displayed-output-record-element have been replaced by the two classes output-record and displayed-output-record. The predicates for the classes have been similarly changed. [annotate]
- output-record-position* has been renamed to output-record-position. A compatibility function will be provided. [annotate]
- The function output-record-set-position* has been replaced by (setf* output-record-position) to be consistent with Common Lisp conventions. A compatibility function will be provided. [annotate]
- The functions output-record-start-position*, output-record-set-start-position*, output-record-end-position*, output-record-set-end-position* have been replaced by output-record-start-cursor-position, (setf* output-record-start-cursor-position), output-record-end-cursor-position, (setf* output-record-end-cursor-position) to better reflect their functionality. Compatibility functions will be provided. [annotate]
- replay-1 has been renamed to replay-output-record. [annotate]
- output-record-elements and output-record-element-count have been renamed to output-record-children and output-record-count, since the term "element" is no longer used when referring to output records. Compatibility functions will be provided. [annotate]
- add-output-record-element and delete-output-record-element have been renamed to add-output-record and delete-output-record, and the argument order has been changed. Compatibility functions will be provided. [annotate]
- map-over-output-record-elements-containing-point* and map-over-output-record-elements-overlapping-region have been renamed to map-over-output-records-containing-position and map-over-output-records-overlapping-region. Compatibility functions will be provided. [annotate]
- linear-output-record and coordinate-sorted-set-output-record have been renamed to standard-sequence-output-record and standard-tree-output-record. [annotate]
- stream-draw-p and stream-record-p and their setf functions have been renamed to stream-drawing-p and stream-recording-p to better reflect their functionality. Compatibility functions will be provided. [annotate]
- output-recording-stream-output-record, output-recording-stream-current-output-record-stack, and output-recording-stream-text-output-record have been renamed to stream-output-history, stream-current-output-record, and stream-text-output-record. Compatibility functions will be provided. [annotate]
- add-output-record has been renamed to stream-add-output-record. Because of the change to add-output-record-element above, no compatibility function can be provided. [annotate]
- close-current-text-output-record has been renamed to stream-close-text-output-record. A compatibility function will be provided. [annotate]
- add-string-output-to-output-record and add-character-output-to-output-record have been renamed to stream-add-string-output and stream-add-character-output. Compatibility functions will be provided. [annotate]
- with-output-recording-options has had its :draw-p and :record-p keyword arguments changed to :draw and :record to conform to Common Lisp naming conventions. Compatibility code will be provided. [annotate]
Graph Formatting
- The function format-graph-from-root has been renamed to format-graph-from-roots, since it now takes a sequence of root objects, rather than a single root object. The function format-graph-from-root will remain as a compatibility function that takes a single root object. [annotate]
Extended Stream Input
- stream-pointer-position* has been renamed to stream-pointer-position. A compatibility function will be provided. [annotate]
- The function stream-set-pointer-position* has been replaced by (setf* stream-pointer-position) to be consistent with Common Lisp conventions. A compatibility function will be provided. [annotate]
- All of the clause arglists for tracking-pointer are specified with &key, that is, they are named arguments rather than positional ones. This should not cause any problems, except for the one case that the character argument to the :keyboard clause has been renamed to gesture. [annotate]
- The function dragging-output-record has been renamed to drag-output-record to be consistent with our naming conventions. A compatibility function will be provided. [annotate]
Presentation Types
- The argument list for with-output-as-presentation has been changed to make stream, object, and type be required arguments instead of keyword arguments. This is because it is always necessary to supply those arguments in order for with-output-as-presentation to work. Compatibility code will be provided to support the old syntax. [annotate]
- The :activation-characters, :additional-activation-characters, :blip-characters, and :additional-blip-characters keyword arguments to the accept functions have been renamed to :activation-gestures, :additional-activation-gestures, :delimiter-gestures, and :additional-delimiter-gestures. Compatibility code will be provided to support the old keyword arguments. [annotate]
- The arglists for presentation translators and their documentation and tester components have been changed to take a single positional object argument and a list of named (keyword) arguments. Except for translators that omit the object argument or have it in other than the initial position of the arglist, this will not pose a problem. This change can be detected. [annotate]
- The frame argument to find-presentation-translators has been changed to be a command-table argument. A check at run-time can detect when a frame is supplied to find-presentation-translators instead of a command table. [annotate]
- The :shift-mask keyword argument to test-presentation-translator, find-applicable-translators, presentation-matches-context-type, and find-innermost-applicable-presentation has been renamed to :modifier-state in order to be consistent with the device event terminology. Compatibility code will be provided to support the old keyword. [annotate]
- define-gesture-name is completely different from CLIM 1.1. There will be no compatibility code provided to support the old version of define-gesture-name. [annotate]
- dialog-view and +dialog-view+ have been renamed to textual-dialog-view and +textual-dialog-view+ in order to accurately reflect what they are. Likewise, menu-view and +menu-view+ have been renamed to textual-menu-view and +textual-menu-view+. Compatibility classes and constants will be provided. [annotate]
Input Editing and Completion Facilities
- *activation-characters*, *standard-activation-characters*, with-activation-characters, and activation-character-p have been renamed to *activation-gestures*, *standard-activation-gestures*, with-activation-gestures, and activation-gesture-p. Compatibility functions will remain for with-activation-characters and activation-character-p, but since the variables were not previously documented, no compatibility will be provided for them. [annotate]
- *blip-characters*, with-blip-characters, and blip-character-p have been renamed to *delimiter-gestures*, with-delimiter-gestures, and delimiter-gesture-p. Compatibility functions will remain for with-blip-characters and blip-character-p, but since *blip-characters* was not previously documented, no compatibility will be provided. [annotate]
- *abort-characters* has been renamed to *abort-gestures*. [annotate]
- *completion-characters*, *help-characters*, and *possibilities-characters* have been renamed to *completion-gestures*, *help-gestures*, and *possibilities-gestures*. [annotate]
- Input editing streams no longer use the interactive stream class. Instead, interactive streams are defined to be any stream that can potentially support input editing, and the class input-editing-stream now refers to input editor streams. [annotate]
- input-editor-buffer, input-position, insertion-pointer, and rescanning-p have been renamed to stream-input-buffer, stream-scan-pointer, stream-insertion-pointer, and stream-rescanning-p. Compatibility functions will be provided. [annotate]
Menus
- The :inter-column-spacing and :inter-row-spacing options to menu-choose have been renamed to :x-spacing and :y-spacing in order to be consistent with the pane options. Compatibility options will be provided. [annotate]
Application Frames
- The :root argument has been removed from open-window-stream and make-application-frame. [annotate]
- The :layout option has been removed, and is replaced by the more general :layouts option. A compatibility hook will be provided that handles the old :layout option. [annotate]
- The function set-frame-layout has been replaced by (setf frame-current-layout) to be consistent with Common Lisp conventions. A compatibility function will be provided. [annotate]
- The function frame-top-level-window has been renamed to frame-top-level-sheet. A compatibility function will be provided. [annotate]
- command-enabled-p, enable-command, and disable-command have been replaced by command-enabled and (setf command-enabled). Compatibility functions will be provided. [annotate]
- window-viewport-position* has been renamed to window-viewport-position. A compatibility function will be provided. [annotate]
- window-set-viewport-position* has been replaced by (setf* window-viewport-position). A compatibility function will be provided. [annotate]
Panes
- realize-pane and realize-pane-1 have been renamed to make-pane and make-pane-1. A compatibility function will be provided for realize-pane. [annotate]
- The pane options :hs, :hs+, :hs-, :vs, :vs+, and :vs- have been replaced by the options :width, :max-width, :min-width, :height, :max-height, and :min-height to be more perspicuous, and to conform the the same options for the formatted output facilities. Compatibility options will be supplied. [annotate]
- The :nchars and :nlines pane options have been removed in favor of an extended syntax to the :width and :height options. [annotate]
- The pane layout options :halign and :valign have been renamed to :align-x and :align-y to conform with table formatting. Compatibility options will be supplied. [annotate]
- The pane layout options :hspace and :vspace have been renamed to :x-spacing and :y-spacing to conform with table formatting. Compatibility options will be supplied. [annotate]
- The term "space req" has been renamed to "space requirement". All of the functions with space-req in their names have been renamed to have space-requirement instead. [annotate]
- make-space-requirement no longer takes the :hs and :vs arguments, et al. It now takes :width and :height, et al. [annotate]