跳转到内容

Aros/开发人员/Scalos

来自 Wikibooks,开放世界中的开放书籍
用于 Aros wikibook 的导航栏
Aros 用户
Aros 用户文档
Aros 用户常见问题解答
Aros 用户应用程序
Aros 用户 DOS Shell
Aros/用户/AmigaLegacy
Aros 开发人员文档
Aros 开发人员文档
从 AmigaOS/SDL 移植软件
针对 Zune 初学者
Zune .MUI 类
针对 SDL 初学者
Aros 开发人员构建系统
特定平台
Aros x86 完整系统 HCL
Aros x86 音频/视频支持
Aros x86 网络支持
Aros 英特尔 AMD x86 安装
Aros 存储支持 IDE SATA 等
Aros Poseidon USB 支持
x86-64 支持
摩托罗拉 68k Amiga 支持
Linux 和 FreeBSD 支持
Windows Mingw 和 MacOSX 支持
Android 支持
Arm Raspberry Pi 支持
PPC Power Architecture
其他
Aros 公共许可


这是一个不完整的指南,请支持


  • scalos.library - 该库用作 Scalos 工作台替换的应用程序接口
  • scalosgfx.library - 此文档提供了有关 scalosgfx.library 的信息
  • Scalos API - 此文档提供了有关如何与 Scalos 及其窗口任务通信的信息
  • Scalos 设备列表 - 此类用于生成当前所有可用设备的列表
  • Scalos 设备窗口 - 此类实现主要工作台 (= 根) 窗口,该窗口显示已挂载设备和卷的图标
  • Scalos filetrans - 此类用于显示进度窗口,向用户显示在复制或移动文件/目录时当前正在进行的操作
  • Scalos root - 此类用于一些基本消息和事件处理
  • Scalos 窗口 - 此类实现用于图标窗口、文本窗口和设备窗口的所有通用窗口功能
  • Scalos 图标窗口 - 此类实现常用工作台图标窗口的功能
  • Scalos 文本窗口 - 此类实现纯文本的 Scalos 窗口
  • Scalos 标题 - 此类实现屏幕标题和窗口标题功能
  • preferences.library - 该库提供了一种方便的方式来存储程序的偏好设置
  • iconobject.library - 该库是 iconobject.datatype 的接口
  • iconobject.datatype - iconobject.datatype 具有一个特殊的 API 来处理图标。可以创建图像、工具提示等等

AROS icon.library 在 Scalos 上不起作用。Scalos 使用自己的 iconobject.library 和一个 iconobject 数据类型系统,支持 icon.library 或 Scalos 菜单中的其他图标


开发人员文档

[编辑 | 编辑源代码]
   --background
   SCA_AddBob
   SCA_AllocMessage
   SCA_AllocNode
   SCA_AllocStdNode
   SCA_CountWBArgs
   SCA_DisposeScalosObject
   SCA_DrawDrag
   SCA_EndDrag
   SCA_FreeAllNodes
   SCA_FreeMessage
   SCA_FreeNode
   SCA_FreeScalosClass
   SCA_FreeWBArgs
   SCA_GetDefIconObject
   SCA_InitDrag
   SCA_LockDrag
   SCA_LockWindowList
   SCA_MakeScalosClass
   SCA_MakeWBArgs
   SCA_MoveNode
   SCA_NewAddAppIcon
   SCA_NewAddAppMenuItem
   SCA_NewAddAppWindow
   SCA_NewScalosObject
   SCA_OpenDrawerByName
   SCA_OpenIconWindow
   SCA_RemoveAppObject
   SCA_ScalosControlA
   SCA_ScreenTitleMsg
   SCA_SortNodes
   SCA_SwapNodes
   SCA_UnlockDrag
   SCA_UnLockWindowList
   SCA_UpdateIcon
   SCA_WBStart


       NAME
           --background
           DESCRIPTION
           This library is used as application interface for the Scalos
           workbenchreplacement. It's only available if Scalos is running.
           This means if the library-open fails Scalos isn't running.
           For information about NodeList see SCA_SortNodes() and Node see
           SCA_AllocStdNode().


       NAME
           SCA_WBStart
       SYNOPSIS
       	succ SCA_WBStart (ArgArray, Taglist, NumArgs )
       	                   A0         A1       D0
       	BOOL SCA_WBStart ( struct WBArg *ArgArray , 
       		const struct TagItem *Taglist, ULONG NumArgs );
       	BOOL SCA_WBStartTags( struct WBArg *ArgArray , ULONG NumArgs, 
       		ULONG FirstTag, ... );


       FUNCTION
           The first argument is used as filename for the to started program.
           The Locks inside the ArgArray are automatically unlocked (use DupLock)
           and the strings are copied.
           The first element in ArgArray must contain the directory lock and
           name of the icon to start.
       INPUTS
           ArgArray - Standard Workbench Args
           NumArgs - Number of Args in the ArgArray. This must be at least
           one.
           Taglist - Pointer to a taglist.
       TAGS
           SCA_IconObject (Object *) - iconobject.library - IconObject to get
           information from it. No icon will be loaded.
           SCA_Priority (LONG) - priority for the newly started process
           SCA_Stacksize (ULONG) - stack size if no icon is available
           SCA_WaitTimeout (ULONG) - wait timeout in seconds
           SCA_Flags (ULONG) - Flags
           SCAF_WBStart_NoIcon - don't read an icon.
           SCAF_WBStart_Wait - wait until the program returns
           SCAF_WBStart_PathSearch - search through paths
           SCAF_WBStart_NoIconCheck - don't check icon type
       RESULT
           succ - FALSE if the start fails. It only fails if not enough
           memory available or the WBL task couldn't be started.
           If the program couldn't be loaded it will return TRUE, because
           of it doesn't wait for the returncode of WBL task.
       NOTE
           Locks will *NOT* be unlocked if this function fails!
       SEE ALSO
           diskobject.library


       NAME
           SCA_SortNodes
       SYNOPSIS
       	SCA_SortNodes (NodeList, CompareFunc, SortType)
       	                 A0          A1          D0
       	void SCA_SortNodes ( struct ScalosNodeList *, struct Hook *, 
       		ULONG SortType);


       FUNCTION
           Sorts a list of MinNodes and uses the CompareFunc to find differences
           between to nodes. NodeList is a pointer to a APTR which points to the
           first node. The first node has as mln_succ a NULL and the last node
           has as mln_pred a NULL. Only mln_succ, mln_pred and the address of the
           first will changed. Nothing will be reallocated or freed.
           The CompareFunc will be called with a pointer to one node in A1 (Node0)
           and a pointer to second node in A2 (Node1). You have to return a
           specific value in D0:
           0 if Node0 = Node1
           1 if Node0 < Node1
           -1 if Node0 > Node1
       INPUTS
           NodeList - Pointer to an APTR which is a pointer to the first node
           CompareFunc - Pointer to a Hook structure for the compare function
           SortType -
           SCA_SortType_Bubble : enhanced BubbleSort
           SCA_SortType_Selection : SelectionSort
           SCA_SortType_Insertion : InsertionSort
           SCA_SortType_Quick : QuickSort
           SCA_SortType_Best : The nodes will be counted and then
           the best SortType will be used.
       SEE ALSO
           SCA_AllocNode(), SCA_AllocStdNode(), SCA_FreeNode(),
           SCA_FreeAllNodes(), SCA_MoveNode(), SCA_SwapNodes()


       NAME
           SCA_NewAddAppIcon
           SCA_NewAddAppIconTags
       SYNOPSIS
       	AppObject = SCA_NewAddAppIcon (ID, UserData, IconObject, MessagePort, 
       	   D0                          D0     D1         A0          A1 
       		Taglist)
       	          A2
       	struct AppObject *SCA_NewAddAppIcon( ULONG ID, ULONG UserData, 
       		struct IconObject *, struct MsgPort *, 
       		const struct TagItem *Taglist);
       	struct AppObject *SCA_NewAddAppIconTags( ULONG ID, ULONG UserData, 
       		struct IconObject *, struct MsgPort *, 
       		ULONG FirstTag, ...);


       FUNCTION
           Adds an icon to the mainwindow of the Scalos-screen. See
           workbench.library/AddAppIconA() for more information.
       INPUTS
           ID, UserData - will be passed through the AppMessage
           IconObject - diskobject.library - IconObject, IDTM_Layout should not
           to be done.
           MessagePort - a MsgPort where you will receive the AppMessage
           Taglist - pointer to a taglist.
       TAGS
           Currently no tags are defined. With wb39.plugin, however, most of the
           V44 workbench tags are supported.
       RESULT
           AppObject - a private structure to be pass to SCA_RemoveAppObject()
           or NULL after failure
       SEE ALSO
           SCA_NewAddAppWindow(), SCA_NewAddAppMenuItem(), SCA_RemoveAppObject()
           workbench.library/AddAppIconA()


       NAME
           SCA_NewAddAppWindow
           SCA_NewAddAppWindowTags
       SYNOPSIS
       	AppObject = SCA_NewAddAppWindow (ID, UserData, Window, MessagePort, 
       	   D0                            D0     D1       A0        A1
       		Taglist)
       	          A2
       	struct AppObject *SCA_NewAddAppWindow( ULONG ID, ULONG UserData, 
       		struct Window *, struct MsgPort *, 
       		const struct TagItem *Taglist);
       	struct AppObject *SCA_NewAddAppWindowTags( ULONG ID, ULONG UserData, 
       		struct Window *, struct MsgPort *, ULONG FirstTag, ...);


       FUNCTION
           Same as workbench.library/AddAppWindowA(). See there for further
           information.
       INPUTS
           ID, UserData - will be passed through the AppMessage
           Window - Intuition Window
           MessagePort - a MsgPort where you will receive the AppMessage
           Taglist - pointer to a taglist.
       TAGS
           Currently no tags are defined.
       RESULT
           AppObject - a private structure to be pass to SCA_RemoveAppObject
           or NULL on failure
       SEE ALSO
           SCA_NewAddAppIcon(), SCA_NewAddAppMenuItem(), SCA_RemoveAppObject()
           workbench.library/AddAppWindowA()


       NAME
           SCA_NewAddAppMenuItem
           SCA_NewAddAppMenuItemTags
       SYNOPSIS
       	AppObject = SCA_NewAddAppMenuItem (ID, UserData, Text, MessagePort, 
       	   D0                              D0     D1      A0       A1
       		Taglist)
       	          A2
       	struct AppObject *SCA_NewAddAppMenuItem ( ULONG ID, ULONG UserData, 
       		CONST_STRPTR Text, struct MsgPort *, 
       		const struct TagItem *Taglist);
       	struct AppObject *SCA_NewAddAppMenuItemTags( ULONG ID, 
       		ULONG UserData, CONST_STRPTR Text, struct MsgPort *, 
       		ULONG FirstTag, ...);


       FUNCTION
           Same as workbench.library/AddAppMenuItemA(). See there for further
           information.
       INPUTS
           ID, UserData - will be passed through the AppMessage
           Text - a pointer to the menutext. Starting with V40, any menu
           text consisting entirely of '-', '_' or '~' characters will
           result in a separator bar to be added.
           MessagePort - a MsgPort where you will receive the AppMessage
           Taglist - pointer to a taglist.
       TAGS
           WBAPPMENUA_CommandKeyString (STRPTR) -- Command key to assign to
           this AppMenu. This must be a NUL-terminated string. If the
           string is empty, it will be ignored. Also, if the command key
           is already in use by a different menu item it will be ignored,
           too. In any case, only the first character of the string will
           be used (V40).
           This tag defaults to NULL.
           WBAPPMENUA_GetKey (ULONG *) -- To add menus with sub menu items,
           you need to add a menu item first which the sub items will
           be added to later. In order to do this, add the item the sub items
           should be attached to and use the WBAPPMENUA_GetKey tag to
           obtain a key value. This key value is to be used later with the
           WBAPPMENUA_UseKey tag (V40.20).
           This feature was introduced in Scalos 40.20, it
           does not work in any of the older Scalos releases.
           This tag defaults to NULL.
           WBAPPMENUA_GetTitleKey (ULONG *) -- To add new entries to the Scalos
           menu strip you first need to create a new title to which the new
           menu items can be attached later. To do this, first create a new
           menu entry and use the WBAPPMENUA_GetTitleKey tag to obtain a key
           value. This key value is to be used later with the
           WBAPPMENUA_UseKey tag (V40.20).
           This tag defaults to NULL.
           WBAPPMENUA_UseKey (ULONG) -- When adding a menu item with the
           WBAPPMENUA_UseKey tag, using a key value obtained by a previous
           invocation of AddAppMenuItemA(), the new menu item will be
           added as a sub item (V40.20).
           If the key you provide was obtained via the WBAPPMENUA_GetTitleKey
           tag, then the item you add will be attached to the respective
           menu entry (V40.20).
           This tag defaults to NULL.
       RESULT
           AppObject - a private structure to be pass to SCA_RemoveAppObject or
           NULL on failure
           Starting with V40, NULL will be returned if you attempt to
           add an AppMenu item to a menu which already contains 63
           menu items. Only a maximum of 15 sub items can be added
           to a menu item.
       SEE ALSO
           SCA_NewAddAppIcon(), SCA_NewAddAppWindow(), SCA_RemoveAppObject()
           workbench.library/AddAppMenuItemA()


       NAME
           SCA_RemoveAppObject
       SYNOPSIS
       	succ = SCA_RemoveAppObject (AppObject)
       	 D0                        A0
       	BOOL SCA_RemoveAppObject (struct AppObject *);


       FUNCTION
           Removes an AppObject from Scalos. This could be an Icon, a Window or
           a MenuItem.
       INPUTS
           AppObject - result from SCA_NewAddAppIcon(), SCA_NewAddAppWindow()
           or SCA_NewAddAppMenuItem()
       RESULT
           succ - currently it always returns TRUE
       SEE ALSO
           SCA_NewAddAppIcon(), SCA_NewAddAppWindow(), SCA_NewAddAppMenuItem()


       NAME
           SCA_AllocStdNode
       SYNOPSIS
       	Node = SCA_AllocStdNode (NodeList, NodeType)
       	 D0                        A0        D0
       	struct MinNode *SCA_AllocStdNode (struct ScalosNodeList *, 
       		ULONG NodeType);


       FUNCTION
           Allocates a standard Scalos-node. It's the only compatible why to
           allocate one of the standard nodes. NEVER allocate a node yourself and
           pass it to Scalos! The scalos.library will use a memorypool for all
           nodes to decrease the memoryfragmentation. The new node will be the
           last in your NodeList and it is cleared public memory. Don't change
           mln_succ and mln_pred yourself, use the node function instead.
           See SCA_SortNodes() for information about the NodeList.
       INPUTS
           NodeList - Pointer to an APTR which is a pointer to the first node
           NodeType - see scalos.(h|i)
       RESULT
           Node - Node at the end or the NodeList or NULL on failure.
       NOTE
           Node *MUST* be freed with SCA_FreeNode() or SCA_FreeAllNodes()
           This function preserves all registers except D0.
       SEE ALSO
           SCA_AllocNode(), SCA_FreeNode(), SCA_FreeAllNodes(),
           SCA_MoveNode(), SCA_SortNodes(), SCA_SwapNodes()


       NAME
           SCA_AllocNode
       SYNOPSIS
       	Node = SCA_AllocNode (NodeList, Size)
       	 D0                      A0      D0
       	struct MinNode *SCA_AllocNode (struct ScalosNodeList *, ULONG Size);


       FUNCTION
           Allocates a node and inserts it at the end of the NodeList. Use this
           function only for your own node-handling. Never allocate a standard
           Scalos-node, use SCA_AllocStdNode() instead. Size is the number of
           bytes that allocated after the the MinNode. This means the memsize
           of node is size+MLN_SIZE.
           See SCA_AllocStdNode() for further information.
       INPUTS
           NodeList - Pointer to an APTR which is a pointer to the first node
           Size - bytes after MLN_SIZE
       RESULT
           Node - Node at the end or the NodeList or NULL on failure.
       NOTE
           Node *MUST* be freed with SCA_FreeNode() or SCA_FreeAllNodes() !
           This function preserves all registers except D0.
       SEE ALSO
           SCA_AllocStdNode(), SCA_FreeNode(), SCA_FreeAllNodes(),
           SCA_MoveNode(), SCA_SortNodes(), SCA_SwapNodes()


       NAME
           SCA_FreeNode
       SYNOPSIS
       	SCA_FreeNode (NodeList, Node)
       	                 A0      A1
       	void SCA_FreeNode (struct ScalosNodeList *, struct MinNode *);


       FUNCTION
           Removes the Node out of the NodeList and Frees a node allocated with
           SCA_AllocStdNode() or SCA_AllocNode().
       INPUTS
           NodeList - pointer to an APTR which is a pointer to the first node
           Node - node to remove and free
       NOTE
           Node *MUST* be part of NodeList!
           This function preserves all registers.
       SEE ALSO
           SCA_AllocStdNode(), SCA_AllocNode(), SCA_FreeAllNodes(),
           SCA_MoveNode(), SCA_SortNodes(), SCA_SwapNodes()


       NAME
           SCA_FreeAllNodes
       SYNOPSIS
       	SCA_FreeAllNodes (NodeList)
       	                    A0
       	void SCA_FreeAllNodes (struct ScalosNodeList *);


       FUNCTION
           Will free the whole list of nodes.
       INPUTS
           NodeList - pointer to an APTR which is a pointer to the first node
       NOTE
           This function preserves all registers.
       SEE ALSO
           SCA_AllocStdNode(), SCA_AllocNode(), SCA_FreeNode(),
           SCA_MoveNode(), SCA_SortNodes(), SCA_SwapNodes()


       NAME
           SCA_MoveNode
       SYNOPSIS
       	SCA_MoveNode (SrcNodeList, DestNodeList, Node)
       	                  A0            A1        D0
       	void SCA_MoveNode (struct ScalosNodeList *, struct ScalosNodeList *, 
       		struct MinNode *);


       FUNCTION
           Will remove the Node from SrcNodeList and will insert the Node at
           the end of DestNodeList.
       INPUTS
           SrcNodeList - pointer to an APTR which is a pointer to the first node
           DestNodeList - pointer to an APTR which is a pointer to the first node
           Node - MinNode
       NOTE
           This function preserves all registers.
           WARNING: Node *MUST* be member of SrcNodeList or very nasty
           things will happen !!
       SEE ALSO
           SCA_AllocStdNode(), SCA_AllocNode(), SCA_FreeNode(),
           SCA_FreeAllNodes(), SCA_SortNodes(), SCA_SwapNodes()


       NAME
           SCA_SwapNodes
       SYNOPSIS
       	SCA_SwapNodes ( SrcNode, DestNode, NodeList)
       	                  A0        A1        A2
       	void SCA_SwapNodes (struct MinNode *, struct MinNode *, 
       		struct ScalosNodeList *);


       FUNCTION
           Swaps the positions of SrcNode and DestNode inside the NodeList.
       INPUTS
           SrcNode - MinNode
           DestNode - MinNode
           NodeList - pointer to an APTR which is a pointer to the first node
       NOTE
           SrcNode and DestNode *MUST* be part of NodeList!
       SEE ALSO
           SCA_AllocStdNode(), SCA_AllocNode(), SCA_FreeNode(),
           SCA_FreeAllNodes(), SCA_MoveNode(), SCA_SortNodes()


       NAME
           SCA_OpenIconWindow
           SCA_OpenIconWindowTags
       SYNOPSIS
       	succ SCA_OpenIconWindow ( TagList )
       	 D0                         A0
       	BOOL SCA_OpenIconWindow ( const struct TagItem *TagList );
       	BOOL SCA_OpenIconWindowTags(ULONG, ...);


       FUNCTION
           opens a windowtask filled with icons. All information will be given
           as tags, see below.
       INPUTS
           TagList - pointer to a taglist.
       TAGS
           SCA_IconNode (struct ScaIconNode *) - fullfilled ScaIconNode
           SCA_IconObject (Object *) - iconobject.library - iconobject
           SCA_Path (CONST_STRPTR) - the path to open
           SCA_MessagePort (struct MsgPort *) - Message port for reply
           to startup message of new icon window process, or NULL.
           SCA_WindowTitle (CONST_STRPTR) - windowtitle parsestring
           ( take a look at the prefsprogram for info)
           SCA_WindowRect (struct IBox *) - rectangle with window
           dimensions (see diskobject.library).
           SCA_XOffset,SCA_YOffset (LONG) - virtual position
           SCA_PatternNumber (ULONG) - background pattern number which is
           configured in "Scalos Pattern" prefs
           SCA_ShowAllFiles (ULONG) - TRUE or FALSE
           deprecated, use SCA_ShowAllMode instead!
           SCA_ShowAllMode (ULONG) - DDFLAGS_SHOWDEFAULT,
           DDFLAGS_SHOWICONS, or DDFLAGS_SHOWALL.
           SCA_ViewModes (ULONG) - view modes for the window
           SCAV_ViewModes_Icon
           SCAV_ViewModes_Name
           SCAV_ViewModes_Size
           SCAV_ViewModes_Date
           SCAV_ViewModes_Time
           SCAV_ViewModes_Comment
           SCAV_ViewModes_Protection
           SCAV_ViewModes_Owner
           SCAV_ViewModes_Group
           SCA_Flags (ULONG) - none available yet
           SCA_Iconify (ULONG) - TRUE or FALSE for open iconified
           SCA_NoActivateWindow (ULONG) - TRUE or FALSE. The new window
           will not be activated if this tag is set to TRUE.
           Defaults to FALSE.
           SCA_WindowStruct (struct ScaWindowStruct **) - The pointer to the
           ScaWindowStruct of the new generated Scalos window will be
           returned. If the new Scalos window couldn't be opened, NULL
           is returned.
           SCA_BrowserMode (ULONG) - TRUE or FALSE. The window will be
           opened in browser mode if set to TRUE.
           SCA_NoStatusBar (ULONG) - TRUE or FALSE. The status bar will not
           be present in the new window if set to TRUE, overriding the
           global setting for status bar.
           SCA_CheckOverlappingIcons (ULONG) - TRUE or FALSE. Defines whether
           icon windows check for overlapping icons. If enabled, an icon
           overlapping any other is repositioned on directory scan.
           Default value is TRUE for MorphOS, FALSE for all other platforms.
           SCA_TransparencyActive (ULONG) - degree of opacity in active
           window state, 0=transparent, 100=opaque.
           Semi-transparent windows are not supported on all platforms.
           SCA_TransparencyInactive (ULONG) - degree of opacity in inactive
           window state, 0=transparent, 100=opaque
           Semi-transparent windows are not supported on all platforms.
       RESULT
           succ - Success
       NOTE
           One of SCA_IconNode, SCA_IconObject or SCA_Path must be given!
       SEE ALSO


       NAME
           SCA_LockDrag
       SYNOPSIS
       	 SCA_LockDrag ( draghandle )
       	   		   D0
       	void SCA_LockDrag ( APTR draghandle );


       FUNCTION
           Locks the screen layer info that is connected to the draghandle.
           Main purpose is to temporarily unlock and lock again the screen
           layers during a dragging operiation, in order to allow some drawing to happen.
       INPUTS
           draghandle - That drag handle that is to be locked.
       SEE ALSO
           SCA_UnLockDrag(), SCA_InitDrag(), SCA_EndDrag(), SCA_DrawDrag()


       NAME
           SCA_LockWindowList
       SYNOPSIS
       	Windowlist SCA_LockWindowList ( accessmode )
       	 D0                                D0
       	struct ScaWindowList *SCA_LockWindowList ( LONG accessmode );


       FUNCTION
           Locks the windowlist and returns. This function is a main interface of
           the Scalos-API. The messageport should be used to comunicate with a
           windowtask. No window can be closed while the windowlist is locked.
           For more information take a look at the ScalosAPI documentation.
       INPUTS
           accessmode -
           SCA_LockWindowList_Shared - locks the window list for a read-
           only access. Shared access is sufficient if
           you just want to traverse the window list,
           and make sure nobody modifies the
           list inbetween.
           SCA_LockWindowList_Exclusiv - locks the window list
           exclusively for read-write access. Exclusive
           mode is required if windows are to be created
           or removed.
           SCA_LockWindowList_AttemptShared - tries to acquire a shared
           lock on the window list for read-only access.
           NULL is returned if the list cannot be locked,
           e.g. because someone else holds an exclusive
           lock on the list.
           SCA_LockWindowList_AttemptExclusive - try to acquire an
           exclusive lock on the window list.
           NULL is returned if the list cannot be locked,
           e.g. because someone else holds a lock on
           the list.
       RESULT
           windowlist - a struct ScaWindowList * - With the
           SCA_LockWindowList_Attempt*** values, it is
           possible that NULL is returned if the window
           list cannot be locked.
       NOTE
           Normally you should not use the SCA_LockWindowList_Exclusiv. If you
           lock the windowlist exclusiv you should NEVER use intuition calls!
       SEE ALSO
           SCA_UnLockWindowList()


       NAME
           SCA_UnLockWindowList
       SYNOPSIS
       	SCA_UnLockWindowList ()
       	void SCA_UnLockWindowList ( void );


       FUNCTION
           Unlocks a with SCA_LockWindowList() locked windowlist.
       SEE ALSO
           SCA_LockWindowList()


       NAME
           SCA_AllocMessage
       SYNOPSIS
       	ScalosMessage SCA_AllocMessage( messagetype, additional_size)
       	   D0                               D0            D1
       	struct ScalosMessage *SCA_AllocMessage ( ULONG messagetype, 
       		UWORD additional_size );


       FUNCTION
           Allocates a message which could be sent to Scalos. It's the only
           future-compatible way to do this. The scalos message signature and the
           the message type will be set and the returned memory is cleared.
       INPUTS
           messagetype - see ScalosAPI.doc
           additional_size - number of bytes that will be added to the size of
           the message. Normally this should be 0.
       RESULT
           ScalosMessage - a full-filled ScalosMessage of the selected type or NULL
       NOTE
           Never try to free a message yourself, it will cause a memory trashing!
           Scalos uses fast memorypool functions for its messages.
       SEE ALSO
           SCA_FreeMessage()


       NAME
           SCA_FreeMessage
       SYNOPSIS
       	SCA_FreeMessage( message )
       	                   A1
       	void SCA_FreeMessage ( struct ScalosMessage *);


       FUNCTION
           Frees a with SCA_AllocMessage() allocated message.
       INPUTS
           message - struct ScalosMessage (returned from SCA_AllocMessage())
       SEE ALSO
           SCA_AllocMessage()


       NAME
           SCA_InitDrag
       SYNOPSIS
       	DragHandle SCA_InitDrag( Screen )
       	    D0                     A0
       	struct DragHandle *SCA_InitDrag ( struct Screen *);


       FUNCTION
           Inits special bobroutines. This routines are easy to use and
           support 24bit bobs.
       INPUTS
           Screen - the screen to use for the bobs or NULL for the default
           Scalos screen
       RESULT
           DragHandle - a private structure to pass it to the other Drag functions
           or NULL on failure.
       SEE ALSO
           SCA_DrawDrag(), SCA_EndDrag(), SCA_LockDrag(), SCA_UnlockDrag()


       NAME
           SCA_EndDrag
       SYNOPSIS
       	SCA_EndDrag( DragHandle )
       	                 A0
       	void SCA_EndDrag ( struct DragHandle *);


       FUNCTION
           Removes all bobs from screen and frees it, if nessesary it unlocks
           the layers.
       INPUTS
           DragHandle - result from SCA_InitDrag()
       SEE ALSO
           SCA_DrawDrag(), SCA_InitDrag(), SCA_LockDrag(), SCA_UnlockDrag()


       NAME
           SCA_AddBob
       SYNOPSIS
       	succ SCA_AddBob( DragHandle, Bitmap, Mask, Width, Height, 
       	 D0                  A0        A1     A2     D0     D1
       		XOffset, YOffset )
       	           D2       D3
       	BOOL SCA_AddBob ( struct DragHandle *, struct BitMap *, APTR Mask, 
       		ULONG Width, ULONG Height, LONG XOffset, LONG YOffset );


       FUNCTION
           Addes a bitmap to the Boblist. Bitmap and Mask will be copied, it can
           be freed after calling this function. Mask is a planar bitplane the
           width divided by 8 and height. It must be in Chipram. X and Y offsets
           are the offset from movepoint give in SCA_DrawDrag(). Normaly it's
           the relative position to the mouse pointer.
       INPUTS
           DragHandle - result from SCA_InitDrag()
           Bitmap - a standard bitmap structure, any depth allowed
           Mask - width/8 * height mask for the bitmap
           Width - width in pixels
           Height - height in pixels
           XOffset - relative x-position to the move point
           YOffset - relative y-position to the move point
       RESULT
           succ - TRUE if anything went well, FALSE if some problem occured
       SEE ALSO


       NAME
           SCA_DrawDrag
       SYNOPSIS
       	SCA_DrawDrag( DragHandle, X, Y, Flags )
       	                  A0      D0 D1   D2
       	void SCA_DrawDrag ( struct DragHandle *, LONG X, LONG Y, ULONG Flags );


       FUNCTION
           Blits the bobs to the selected screen relative to the given position.
       INPUTS
           DragHandle - result from SCA_InitDrag()
           X - movepoint x direction
           Y - movepoint y direction
           Flags -
           SCAF_Drag_Transparent - draw all bobs transparent,
           normally it's a raster ("ghosted")
           SCAF_Drag_IndicateCopy - draw all bobs plus
           "copy" indicator
           SCAF_Drag_NoDropHere - draw all bobs plus
           "no drop" indicator
           SCAF_Drag_Hide - hide bobs
           SCAF_Drag_IndicateMakeLink - draw all bobs plus "make link"
           indicator
           SCAF_Drag_NoDrawDrag - (internal use only)
       NOTE
           Transparent drawing only works with CyberGfx installed and a
           workbench screen of more than 256 colors (depth > 8).
       SEE ALSO
           SCA_InitDrag(), SCA_EndDrag(), SCA_LockDrag(), SCA_UnlockDrag()


       NAME
           SCA_UpdateIcon
       SYNOPSIS
       	SCA_UpdateIcon( WindowType, SCA_UpdateIcon, UpdateIcon_Size )
       	                   D0           A0             D1
       	void SCA_UpdateIcon ( UBYTE WindowType, struct ScaUpdateIcon_IW *,
       		 ULONG ui_SIZE );


       FUNCTION
           Refreshes an icon specified in SCA_UpdateIcon structure. The icon
           will be loaded, removed or reloaded. The SCA_UpdateIcon struct
           depends on the windowtype.
       INPUTS
           WindowType - windowtype which should be updated
           SCA_UpdateIcon - special information, depents on WindowType
           UpdateIcon_Size - size of the SCA_UpdateIcon structure in bytes
       SEE ALSO


       NAME
           SCA_MakeWBArgs
       SYNOPSIS
       	number = SCA_MakeWBArgs( Buffer, Iconnode, ArgsSize )
       	                           A0       A1        D0
       	ULONG SCA_MakeWBArgs ( struct WBArg *Buffer, 
       		struct ScaIconNode *Iconnode, ULONG ArgsSize);


       FUNCTION
           Generates a WBArgs Array from all selected icons except the
           given Iconode.
           It is recommended to determine the required buffer size
           with SCA_CountWBArgs().
       INPUTS
           Buffer - Array of WBArg structures to save the Lock and
           Name pointers
           Iconnode - an iconnode to exclude or NULL
           ArgsSize - Number of WBArg's the buffer has room for
       RESULT
           number - number of args generated
       SEE ALSO
           SCA_FreeWBArgs() SCA_CountWBArgs()


       NAME
           SCA_FreeWBArgs
       SYNOPSIS
       	number = SCA_FreeWBArgs( Buffer, Number, Flags )
       	                           A0      D0     D1
       	void SCA_FreeWBArgs ( struct WBArg *Buffer, ULONG Number, 
       		ULONG Flags);


       FUNCTION
           Frees a WBArg array generated with SCA_MakeWBArgs.
       INPUTS
           Buffer - Array with WBArg structures
           Number - Number of WBArg's to free
           Flags -
           SCAB_FreeLocks - free the Locks
           SCAB_FreeName - free the namefields
       SEE ALSO
           SCA_MakeWBArgs(); SCA_CountWBArgs();


       NAME
           SCA_CountWBArgs
       SYNOPSIS
       	number = SCA_CountWBArgs( Iconnode )
       				    A0
       	ULONG SCA_CountWBArgs( struct ScaIconNode *Iconnode );


       FUNCTION
           Determines required size for WBArgs Array from all
           selected icons except the given Iconode.
           The returned count can be used to allocate a WBArg
           array for SCA_MakeWBArgs().
       INPUTS
           Iconnode - an iconnode to exclude or NULL
       RESULT
           number - number of args that will be generated
           by SCA_MakeWBArgs().
       SEE ALSO
           SCA_FreeWBArgs() SCA_MakeWBArgs()


       NAME
           SCA_ScreenTitleMsg
       SYNOPSIS
       	SCA_ScreenTitleMsg( Format, Args )
       	                      A0     A1
       	void SCA_ScreenTitleMsg ( CONST_STRPTR Format, APTR Args);
       	void SCA_ScreenTitleMsgArgs( CONST_STRPTR Format, ...);


       FUNCTION
           Show a message on ScreenTitle of all Scalos windows.
       INPUTS
           Format - FormatString. All RawDoFmt() args are allowed.
           special values :
           NULL to recover the standard title.
           ~0 to recover the last non-standard title (message).
           Args - the arguments for the formatstring
       SEE ALSO
           exec.library/RawDoFmt


       NAME
           SCA_MakeScalosClass
       SYNOPSIS
       	ScalosClass ( ClassName, SuperClassName, InstSize, DispFunc )
       	     D0           A0            A1          D0        A2
       	struct ScalosClass *SCA_MakeScalosClass ( CONST_STRPTR ClassName, 
       		CONST_STRPTR SuperClassName, UWORD InstSize, APTR DispFunc);


       FUNCTION
           Addes a new BOOPSI Class to the internal classlist. ClassName may be
           a new name or a classname that's already available. In this case the
           class will replace or enhance a known class.
       INPUTS
           ClassName - name of the new class or NULL for a private class
           SuperClassName - name of the super class for the new class
           InstSize - size of the instance variables
           DispFunc - pointer to your Dispatcher function
       RESULT
           ScalosClass - a ScalosClass structure or NULL if it fails
       NOTE
           If you like a add a subclass to your private class then use the
           intuition class functions.
       SEE ALSO
           SCA_FreeScalosClass(), intuition.library/MakeClass


       NAME
           SCA_FreeScalosClass
       SYNOPSIS
       	scc SCA_FreeScalosClass( ScalosClass )
       	D0                          A0
       	BOOL SCA_FreeScalosClass ( struct ScalosClass *);


       FUNCTION
           Removes a ScalosClass from the internal classlist.
       INPUTS
           ScalosClass - return value from SCA_MakeScalosClass()
       RESULT
           succ - FALSE if the class couldn't be removed, else TRUE
       SEE ALSO
           SCA_MakeScalosClass(), FreeClass()


       NAME
           SCA_NewScalosObject
           SCA_NewScalosObjectTags
       SYNOPSIS
       	Object SCA_NewScalosObject( ClassName, TagList )
       	  D0                            A0       A1
       	Object *SCA_NewScalosObject ( CONST_STRPTR ClassName, 
       		const struct TagItem *TagList);
       	Object *SCA_NewScalosObjectTags( CONST_STRPTR ClassName, 
       		ULONG FirstTag, ...);


       FUNCTION
           Allocates and inits a new BOOPSI Object.
       INPUTS
           ClassName - Scalos Classname
           TagList - taglist (depends on the class)
       RESULT
           Object - new BOOPSI Object or NULL
       SEE ALSO
           SCA_DisposeScalosObject(), NewObject()


       NAME
           SCA_DisposeScalosObject
       SYNOPSIS
       	SCA_DisposeScalosObject( Object )
       	                           A0
       	void SCA_DisposeScalosObject (Object *);


       FUNCTION
           Disposes a object created with SCA_NewScalosObject().
       INPUTS
           Object - BOOPSI Object
       SEE ALSO
           SCA_NewScalosObject(), DisposeObject()


       NAME
           SCA_ScalosControlA -- Query or modify Scalos options (V40)
           SCA_ScalosControl
       SYNOPSIS
       	ULONG SCA_ScalosControlA( Name, TagList )
       	  D0                        A0     A1
       	ULONG SCA_ScalosControlA( CONST_STRPTR Name, 
       		const struct TagItem *TagList);
       	ULONG SCA_ScalosControl( CONST_STRPTR Name, ULONG FirstTag, ...);


       FUNCTION
           With this function you can query or modify global Scalos parameters.
       INPUTS
           name -- Name of an object to query or modify.
           tags -- Additional options.
       TAGS
           SCALOSCTRLA_GetDefaultStackSize (ULONG *) -- Get the default stack
           size used by Scalos when launching Shell programs
           or programs without a valid stack size number.
           The default stack size is 8192 bytes.
           SCALOSCTRLA_SetDefaultStackSize (ULONG) -- Set the default stack
           size used by Scalos when launching Shell programs
           or programs without a valid stack size number. You cannot
           set a stack size number smaller than 8192 bytes.
           SCALOSCTRLA_GetProgramList (struct List **) -- You can obtain a list
           of currently running Workbench programs; every entry of this
           list will have the complete path to the program and the
           program name in its Node->ln_Name. When you no longer need
           the list, don't forget to free it again using the tag
           WBCTRLA_FreeProgramList.
           SCALOSCTRLA_FreeProgramList (struct List *) -- With this tag you can
           free the list allocated by the SCALOSCTRLA_GetProgramList tag.
           SCALOSCTRLA_GetCloseWBDisabled (ULONG *) -- Get the current disable
           state for the intuition.library/CloseWorkBench() function.
           If TRUE, intuition.library/CloseWorkBench() always returns FALSE
           and Scalos will never close.
           SCALOSCTRLA_SetCloseWBDisabled (ULONG) -- Set the disable
           state for the intuition.library/CloseWorkBench() function.
           If TRUE, intuition.library/CloseWorkBench() always returns FALSE
           and Scalos will never close.
           SCALOSCTRLA_GetSplashEnable (ULONG *) -- Get the current disable
           state for the Scalos startup splash window. If TRUE, Scalos shows
           its splash window on startup.
           SCALOSCTRLA_SetSplashEnable (ULONG) -- Set the disable
           state for the Scalos startup splash window. If TRUE, Scalos shows
           its splash window on startup.
           SCALOSCTRLA_GetToolTipEnable (ULONG *) -- Get the current enable
           state for icon tool tips. If TRUE, icon tool tips will show up
           if the mouse pointer kept over an icon for some seconds.
           SCALOSCTRLA_SetToolTipEnable (ULONG) -- Set the enabled
           state for icon tool tips. If TRUE, icon tool tips will show up
           if the mouse pointer kept over an icon for some seconds.
           SCALOSCTRLA_GetToolTipDelay (ULONG *) -- Set the delay time until
           the icon tool tips pop up (in seconds).
           SCALOSCTRLA_SetToolTipDelay (ULONG) -- Set the delay time until
           the icon tool tips pop up (in seconds). You must specify a
           number between 1 and 599 seconds. Default delay time is 2 seconds.
           SCALOSCTRLA_GetOldDragIconMode (ULONG *) -- Enable old (workbench-
           like) icon dragging mode, i.e. all icons are visibly dragged.
           If turned OFF (=0), the new "icon stack" method is used.
           Default value is OFF (0).
           SCALOSCTRLA_SetOldDragIconMode (ULONG) -- Get the current icon
           dragging mode.
           0 New "icon stack" icon dragging method is used.
           1 Old (workbench-like) icon dragging mode, i.e. all icons
           are visibly dragged
           SCALOSCTRLA_GetTypeRestartTime (ULONG *) -- Get the number of seconds
           that have to pass before typing the next character in a drawer
           window will restart with a new file name.
           SCALOSCTRLA_SetTypeRestartTime (ULONG) -- Set the number of seconds
           that have to pass before typing the next character in a drawer
           window will restart with a new file name. You must specify a
           number greater than 0. Default type restart time is 3 seconds.
           SCALOSCTRLA_GetEmulationMode (ULONG *) -- get a BOOL variable telling
           whether which mode Scalos is running in.
           TRUE emulation mode
           FALSE preview mode
           SCALOSCTRLA_GetStatusBarEnable (ULONG *) -- get a BOOL variable
           telling whether Scalos displays a status bar in every
           non-backdrop window.
           SCALOSCTRLA_SetStatusBarEnable (ULONG) -- Telling whether Scalos to
           display a status bar in every non-backdrop window (any non-zero
           value) or to display no status bars. Changes only apply to
           windows opened thereafter.
           TRUE show status bar
           FALSE don't show status bar
           NOTE: Changes only apply to windows opened thereafter.
           SCALOSCTRLA_GetStripedTextWindows (ULONG *) -- get a BOOL variable
           telling whether Scalos displays horizontally striped lines in
           text windows.
           SCALOSCTRLA_SetStripedTextWindows (ULONG) -- Tell whether Scalos to
           display horizontally striped lines in text windows.
           TRUE show stripes in text window
           FALSE show standard background.
           NOTE: Changes only apply to windows opened thereafter.
           SCALOSCTRLA_GetDisplayDragCount (ULONG *) -- get a BOOL variable
           telling whether Scalos shows the number of dragged objects
           during Drag and Drop.
           SCALOSCTRLA_SetDisplayDragCount (ULONG) -- Tell whether Scalos to
           display the number of dragged objects during Drag and Drop.
           TRUE show number of objects while dragging
           FALSE don't show number of objects
           SCALOSCTRLA_GetWindowDropMarkMode (ULONG *) - get a ULONG variable
           telling when Scalos shows window drop marks during D&D
           IDTV_WinDropMark_Never - never
           IDTV_WinDropMark_WindowedOnly - only on non-backdrop windows
           IDTV_WinDropMark_Always - always
           SCALOSCTRLA_SetWindowDropMarkMode (ULONG) - Set when Scalos will
           show window drop marks during D&D
           IDTV_WinDropMark_Never - never
           IDTV_WinDropMark_WindowedOnly - only on non-backdrop windows
           IDTV_WinDropMark_Always - always
           SCALOSCTRLA_GetCopyHook (struct Hook **) - Obtain the current hook
           that will be invoked when Scalos starts copying files and
           data (V40).
           SCALOSCTRLA_SetCopyHook (struct Hook *) - Install a new hook that
           will be invoked when Scalos starts copying files and data (V40).
           The hook will be invoked exactly the same way as Workbench
           does with its WBCTRLA_SetCopyHook hook.
           SCALOSCTRLA_GetDeleteHook (struct Hook **) - Obtain the current hook
           that will be invoked when Scalos deletes files and drawers or
           empties the trashcan (V40).
           SCALOSCTRLA_SetDeleteHook (struct Hook *) - Install a new hook that
           will be invoked when Scalos deletes files and drawers or empties
           the trashcan (V40).
           The hook will be invoked exactly the same way as Workbench
           does with its WBCTRLA_SetDeleteHook hook.
           NOTE: this hook will take precedence over the
           installed "Delete.module".
           SCALOSCTRLA_GetTextInputHook (struct Hook **) - Obtain the current
           hook that will be invoked when Scalos requests the user to enter
           text, i.e. when a file is to be renamed or a new drawer is to
           be created (V40).
           SCALOSCTRLA_SetTextInputHook (struct Hook *) - Install a new hook
           that will be invoked when Scalos requests the user to enter text,
           i.e. when a file is to be renamed or a new drawer is to
           be created (V40).
           The hook will be invoked exactly the same way as Workbench
           does with its WBCTRLA_SetTextInputHook hook.
           NOTE: this hook will take precedence over the installed
           "NewDrawer.module", "Execute.module" and "Rename.module".
           SCALOSCTRLA_AddCloseWBHook (struct Hook *) - Add a hook that will
           be invoked when Scalos is about to close (cleanup), and when
           Scalos has opened again (setup) (V40).
           The hook will be invoked exactly the same way as Workbench
           does with its WBCTRLA_AddSetupCleanupHook hook.
           SCALOSCTRLA_RemCloseWBHook (struct Hook *) - Remove a hook that has
           been installed with the SCALOSCTRLA_AddCloseWBHook tag (V40).
           SCALOSCTRLA_GetSupportedIconTypes (ULONG *) - Get bit mask
           of all currently enabled icon types
           IDTV_IconType_NewIcon - display NewIcons
           IDTV_IconType_ColorIcon - display OS3.5 color icons
           SCALOSCTRLA_SetSupportedIconTypes (ULONG) - Select which
           icon types are enabled :
           IDTV_IconType_NewIcon - display NewIcons
           IDTV_IconType_ColorIcon - display OS3.5 color icons
           SCALOSCTRLA_GetMenuCommandList (struct List **) -- You can obtain a list
           of all supported menu command names. When you no longer need
           the list, don't forget to free it again using the tag
           WBCTRLA_FreeMenuCommandList.
           SCALOSCTRLA_FreeMenuCommandList (struct List *) -- With this tag you can
           free the list allocated by the SCALOSCTRLA_GetMenuCommandList tag.
           SCALOSCTRLA_GetCopyBuffSize (ULONG *) -- Query the size of the buffer
           used for moving and copying files.
           SCALOSCTRLA_SetCopyBuffSize (ULONG) -- Set the size of the buffer used
           for moving and copying files. The size can be changed
           between 4 KBytes and 4 MBytes (40.30).


       RESULT
           Returns the number of tags successfully processed. If the returned
           value is less than the number of tags supplied, you can query the error
           code using dos.library/IoErr().
           NOTES
           This function may only be called by a Process.


       SEE ALSO
           dos.library/IoErr
           <dos/dosextens.h>


       NAME
           SCA_GetDefIconObject
           SCA_GetDefIconObjectA
           SCA_GetDefIconObjectTags
       SYNOPSIS
       	IconObject SCA_GetDefIconObject( dirLock, name )
       	  D0                              A0       A1
       	IconObject SCA_GetDefIconObjectA( dirLock, name, tagList )
       	  D0                               A0       A1    A2
       	Object *SCA_GetDefIconObject(BPTR dirLock, CONST_STRPTR name)
       	Object *SCA_GetDefIconObjectA(BPTR dirLock,
       		CONST_STRPTR name, struct TagItem *tagList)
       	Object *SCA_GetDefIconObjectTags(BPTR dirLock, CONST_STRPTR name, ...)


       FUNCTION
           Returns default IconObject for the file system object
           (tool/project/drawer/device) described by dirLock and name.
           A filetype-specific default icon is selected according
           to the object type.
       INPUTS
           dirlock - Lock on the parent directory of the object.
           name - Name of the object.
           tagList - additional tags for creation of IconObject.
       RESULT
           IconObject - new IconObject or NULL


       NAME
           SCA_OpenDrawerByName
           SCA_OpenDrawerByNameTags
       SYNOPSIS
       	ScaWindow = SCA_OpenDrawerByName( path, tagList )
       	  D0                             A0    A1
       	struct ScaWindowStruct *SCA_OpenDrawerByName(CONST_STRPTR path,
       		struct TagItem *tagList);
       	struct ScaWindowStruct *SCA_OpenDrawerByNameTags(CONST_STRPTR path,
       		ULONG firstTag, ...);


       FUNCTION
           Tries to open the named drawer.
       INPUTS
           path - Full path name of the drawer to be opened.
           TagList - taglist
       RESULT
           ScaWindow - ScaWindowStruct of the newly opened drawer window or NULL.
       SEE ALSO
           SCA_OpenIconWindow()


       NAME
           SCA_UnlockDrag
       SYNOPSIS
       	 wasLocked = SCA_UnlockDrag ( draghandle )
       	   		   D0
       	ULONG SCA_LockDrag ( APTR draghandle );


       FUNCTION
           Unlocks the screen layer info that is connected to the draghandle.
           Main purpose is to temporarily unlock and lock again the screen
           layers during a dragging operiation, in order to allow some drawing to happen.
       INPUTS
           draghandle - That drag handle that is to be locked.
       RESULT
           wasLocked - Flag that indicated whether the screen layer was locked
           before calling. The result can be used to decide if you need to
           call SCA_LockDrag() when you are finished drawing.
       SEE ALSO
           SCA_LockDrag(), SCA_InitDrag(), SCA_EndDrag(), SCA_DrawDrag()


Scalos GFX

[编辑 | 编辑源代码]
   ScalosGfxCreateEmptySAC
   ScalosGfxCreateSAC
   ScalosGfxFreeSAC
   ScalosGfxCreateARGB
   ScalosGfxFreeARGB
   ScalosGfxARGBSetAlpha
   ScalosGfxARGBSetAlphaMask
   ScalosGfxCreateARGBFromBitMap
   ScalosGfxFillARGBFromBitMap
   ScalosGfxWriteARGBToBitMap
   ScalosGfxMedianCut
   ScalosGfxScaleARGBArray
   ScalosGfxScaleBitMap
   ScalosGfxCalculateScaleAspect
   ScalosGfxBlitARGB
   ScalosGfxFillRectARGB
   ScalosGfxSetARGB
   ScalosGfxNewColorMap
   ScalosGfxARGBRectMult
   ScalosGfxBlitARGBAlpha
   ScalosGfxBlitARGBAlphaTagList
   ScalosGfxBlitIcon


       NAME
           ScalosGfxCreateEmptySAC -- Allocate an empty ScalosBitMapAndColor
       SYNOPSIS
       	sac = ScalosGfxCreateEmptySAC( )
       	D0
       	struct ScalosBitMapAndColor *ScalosGfxCreateEmptySAC( void );


       FUNCTION
           Allocates an empty ScalosBitMapAndColor structure, with NULL
           sca_BitMap and sac_ColorTable.
       INPUTS
           none
       RESULT
           sac - new created ScalosBitMapAndColor, or NULL on failure
       SEE ALSO
           ScalosGfxFreeSAC(), ScalosGfxCreateSAC()


       NAME
           ScalosGfxCreateSAC -- Allocate ScalosBitMapAndColor
       SYNOPSIS
       	sac = ScalosGfxCreateSAC(width, height, depth, friendBM, tagList);
       	D0                       D0     D1      D2     A0        A1
       	struct ScalosBitMapAndColor *ScalosGfxCreateSAC(ULONG, ULONG, ULONG,
       		struct BitMap *, struct TagItem *)
       	struct ScalosBitMapAndColor *ScalosGfxCreateSACTags(ULONG, ULONG, ULONG,
       		struct BitMap *, ULONG, ...)


       FUNCTION
           Allocate a ScalosBitMapAndColor structure. sac_BitMap and sac_ColorTable
           are allocated according to specified dimensions.
       INPUTS
           width - Desired width of new ScalosBitMapAndColor BitMap.
           height - Desired height of new ScalosBitMapAndColor BitMap.
           depth - Desired depth of new ScalosBitMapAndColor BitMap. Must be less
           than 256. sac_ColorTable will be allocated to hold 2^depth entries.
           friendBM - Friend BitMap to use for BitMap allocation.
           tagList - pointer to list of Tags, or NULL.
       TAGS
           None defined yet.
       RESULT
           sac - new created ScalosBitMapAndColor, or NULL on failure
       SEE ALSO
           ScalosGfxFreeSAC(), ScalosGfxCreateEmptySAC()


       NAME
           ScalosGfxFreeSAC -- free a previously allocated ScalosBitMapAndColor
       SYNOPSIS
       	ScalosGfxFreeSAC(sac);
       	                A0
       	void ScalosGfxFreeSAC((struct ScalosBitMapAndColor *);


       FUNCTION
           Frees and deallocates a previously allocated ScalosBitMapAndColor,
           including sac_BitMap and sac_ColorTable.
       INPUTS
           sac - previously allocated ScalosBitMapAndColor, or NULL
       RESULT
           nothing
       SEE ALSO
           ScalosGfxCreateSAC(), ScalosGfxCreateEmptySAC()


       NAME
           ScalosGfxCreateARGB -- Allocate a gfxARGB with specified size
       SYNOPSIS
       	argb = ScalosGfxCreateARGB(width, height, tagList)
       	D0                         D0     D1      A0
       	struct gfxARGB *ScalosGfxCreateARGB(ULONG, ULONG, struct TagItem *)


       FUNCTION
           Allocates an array of struct gfxARGB with sufficient size for
           specified width and height.
       INPUTS
           width - width of gfxARGB array
           height - height of gfxARGB array
           tagList - pointer to list of Tags, or NULL.
       TAGS
           None defined yet.
       RESULT
           argb - new allocated gfxARGB, or NULL on failure.
       SEE ALSO


       NAME
           ScalosGfxFreeARGB -- Free a previously allocated gfxARGB
       SYNOPSIS
       	ScalosGfxFreeARGB(argb)
       	D0                A0
       	VOID ScalosGfxFreeARGB(struct gfxARGB **)


       FUNCTION
       INPUTS
           argb - pointer to storage of previously allocated gfxARGB.
           argb may point to NULL.
       RESULT
           nothing
       SEE ALSO
           ScalosGfxCreateARGB()


       NAME
           ScalosGfxARGBSetAlpha -- Set all pixels to specified Alpha value.
       SYNOPSIS
       	ScalosGfxARGBSetAlpha(src, alpha);
       			      A0   D0
       	VOID ScalosGfxARGBSetAlpha(struct ARGBHeader *, UBYTE)


       FUNCTION
           Alpha value of all pixels in the ARGBHeader and its previously
           allocated gfxARGB array is set to the specified value.
       INPUTS
           src - Header of gfxARGB rectangle to modify.
           alpha - Alpha (transparency) value to set.
       RESULT
       SEE ALSO
           ScalosGfxARGBSetAlphaMask()


       NAME
           ScalosGfxARGBSetAlphaMask -- Set alpha value according to mask plane
       SYNOPSIS
       	ScalosGfxARGBSetAlphaMask(argbh, maskPlane)
       				  A0     A1
       	VOID ScalosGfxARGBSetAlphaMask(struct ARGBHeader *, PLANEPTR)


       FUNCTION
           Alpha values of all pixels in the ARGBHeader and its previously
           allocated gfxARGB array are set according to mask plane, i.e. for
           every bit set in mask plane, alpha is maximum (255), and for every
           cleared bit, alpha is set to minimum (0).
       INPUTS
           argbh - Header of gfxARGB rectangle to modify.
           maskPlane - Single bit mask plane. Dimensions must match size of argbh, with
           width rounded up to next 16-bit.
       RESULT
           nothing
       SEE ALSO
           ScalosGfxARGBSetAlpha()


       NAME
           ScalosGfxCreateARGBFromBitMap -- Create gfxARGB array from a BitMap
       SYNOPSIS
       	argb = ScalosGfxCreateARGBFromBitMap(bm, width, height, numberOfColors, colorTable, maskPlane
       	D0                                   A0  D0     D1      D2              A1          A2
       	struct gfxARGB *ScalosGfxCreateARGBFromBitMap(struct BitMap *, ULONG, ULONG, ULONG,
       		const ULONG *, PLANEPTR)


       FUNCTION
           Allocates and a gfxARGB array with specified dimensions, and fills it from
           provided BitMap, with optional mask plane. Works only with standard BitMaps with
           less than 256 colors.
       INPUTS
           bm - source BitMap to fill gfxARGB array from,
           Depth must be less than 256 colors.
           width - Width of gfxARGB array
           height - Height of gfxARGB array
           numberOfColors - number of entries in colorTable
           colorTable - Color table to use for BitMap
           maskPlane - Single bit mask plane. Dimensions must match width and
           height, with width rounded up to next 16-bit. May be NULL.
       RESULT
           argb - allocated gfxARGB array or NULL on failure.
           NOTES
           Use ScalosGfxFillARGBFromBitMap() for high-color or true-color BitMaps.
       SEE ALSO
           ScalosGfxFillARGBFromBitMap()


       NAME
           ScalosGfxFillARGBFromBitMap -- Fill previously allocated gfxARGB array from CGFX BitMap
       SYNOPSIS
       	ScalosGfxFillARGBFromBitMap(argbh, srcBM, maskPlane)
       				    A0     A1     A2
       	VOID ScalosGfxFillARGBFromBitMap(struct ARGBHeader *, struct BitMap *, PLANEPTR)


       FUNCTION
           Fill a previously allocated gfxARGB array from a CyberGraphics BitMap. Can only
           be used for high-color or true-color BitMaps.
           If maskPlane if given, alpha information in argbh is created from maskPlane. If
           maskPlane if NULL, alpha channel from source BitMap is used if available,
           otherwise alpha is set to opaque.
       INPUTS
           argbh - completely initialized gfxARGB array
           srcBM - source BitMap to use for filling, depth must be at least 65536 colors
           maskPlane - Single bit mask plane. Dimensions must match width and height, with
           width rounded up to next 16-bit. May be NULL.
       RESULT
           nothing
           NOTES
           Use ScalosGfxARGBSetAlpha() for standard BitMaps (i.e. less than 256 colors).
       SEE ALSO
           ScalosGfxCreateARGBFromBitMap()


       NAME
           ScalosGfxWriteARGBToBitMap -- Copy gfxARGB array to BitMap
       SYNOPSIS
       	ScalosGfxWriteARGBToBitMap(argbh, bm, numberOfColors, colorTable)
       				   A0     A1  D0              A2)
       	VOID ScalosGfxWriteARGBToBitMap(struct ARGBHeader *, struct BitMap *, ULONG, const ULONG *)


       FUNCTION
           Creates a copy of gfxARGB array in destination BitMap,
           using pre-defined colorTable. Works only with standard BitMaps, i.e. with
           less than 256 colors. No sophisticated color reduction is performed, but
           bit-fit pens are decided via FindBestPen().
       INPUTS
           argbh - gfxARGB array to read from
           bm - Standard BitMap to write to. BitMap must
           have less than 256 colors.
           numberOfColors - Number of entries in colorTable
           colorTable - color table to use for BitMap.
       RESULT
           nothing
       SEE ALSO


       NAME
           ScalosGfxMedianCut -- Create color-reduced BitMap from gfxARGB array
       SYNOPSIS
       	sac = ScalosGfxMedianCut(argbh, depth, tagList)
       	D0                       A0     D0     A1
       	struct ScalosBitMapAndColor *ScalosGfxMedianCut(struct ARGBHeader *, ULONG, struct TagItem *)
       	struct ScalosBitMapAndColor *ScalosGfxMedianCutTags(struct ARGBHeader *, ULONG, ULONG, ...)


       FUNCTION
           Allocate and fill a color-reduced BitMap and a best-match color table from gfxARGB array.
           Either ordered dithering or Floyd-Steinberg dithering will be used for best results.
       INPUTS
           argbh - gfxARGB array to read from
           depth - desired depth of generated BitMap, must be less than 256.
           tagList - array of tagItems, as desribed below, or NULL.
       TAGS
           SCALOSGFX_MedianCutFlags - Flags as described below.
           SCALOSGFX_MedianCutFriendBitMap - struct BitMap *, friend BitMap to use
           for allocating result BitMap
           SCALOSGFX_MedianCutReservedColors - ULONG, number of reserved (unused) color
           entries at start of generated color table.
           FLAGS
           SCALOSGFXFLAGF_MedianCut_FloydSteinberg - If set, Floyd-Steinberg dithering
           will be used for color reduction.
       RESULT
           sac - created ScalosBitMapAndColor pointer, or NULL on failure.
       SEE ALSO


       NAME
           ScalosGfxScaleARGBArray -- Scale given gfxARGB array
       SYNOPSIS
       	argb = ScalosGfxScaleARGBArray(src, destWidth, destHeight, tagList)
       	D0                             A0   A1         A2          A3
       	struct gfxARGB *ScalosGfxScaleARGBArray(const struct ARGBHeader *, ULONG *,
       		ULONG *, struct TagItem *)
       	struct gfxARGB *ScalosGfxScaleARGBArrayTags(const struct ARGBHeader *, ULONG *,
       		ULONG *, ULONG, ...)


       FUNCTION
           Scales given gfxARGB array to a new size. Supports both enlarging and shrinking
           gfxARGB arrays.
       INPUTS
           src - source gfxARGB array, will not be modified
           destWidth - desired width, might be internally corrected
           if SCALEFLAGF_CORRECTASPECT is set.
           destHeight - desired height, might be internally corrected
           if SCALEFLAGF_CORRECTASPECT is set.
           tagList - pointer to list of Tags, or NULL.
       TAGS
           SCALOSGFX_ScaleARGBArrayFlags - ULONG, specify some operation flags as listed below.
           FLAGS
           SCALEFLAGF_BICUBIC - allow bicubic scaling
           SCALEFLAGF_BILINEAR - allow bilinear scaling
           SCALEFLAGF_AVERAGE - allow average scaling
           SCALEFLAGF_DOUBLESIZE - allow intermediate step via double size, to improve quality
           SCALEFLAGF_CORRECTASPECT - allow correction of destWidth and destHeight to
           meet source aspect ratio.
       RESULT
           argb - Scaled copy of the source gfxARGB array
       SEE ALSO


       NAME
           ScalosGfxScaleBitMap -- Scale given BitMap
       SYNOPSIS
       	bm = ScalosGfxScaleBitMap(sbma, tagList)
       	D0                        A0    A1
       	struct BitMap *ScalosGfxScaleBitMap(struct ScaleBitMapArg *, struct TagItem *)
       	struct BitMap *ScalosGfxScaleBitMapTags(struct ScaleBitMapArg *, ULONG, ...)


       FUNCTION
           Scales given gfxARGB array to a new size. Supports both enlarging and shrinking
           gfxARGB arrays.
       INPUTS
           sbma - Structure with scaling parameters:
           sbma_SourceBM - The original BitMap. This BitMap is not modified.
           sbma_SourceWidth - Width of the source BitMap.
           sbma_SourceHeight - Height of the source BitMap
           sbma_DestWidth - Pointer to Width of resized BitMap, might be internally
           corrected if SCALEFLAGF_CORRECTASPECT is set.
           sbma_DestHeight - Pointer to Height of resized BitMap, might be internally
           corrected if SCALEFLAGF_CORRECTASPECT is set.
           sbma_NumberOfColors - number of entries in color table
           sbma_ColorTable - Color table for both source and resized BitMap.
           sbma_Flags - scaling flags:
           SCALEFLAGF_BICUBIC - allow bicubic scaling
           SCALEFLAGF_BILINEAR - allow bilinear scaling
           SCALEFLAGF_AVERAGE - allow average scaling
           SCALEFLAGF_DOUBLESIZE - allow intermediate scaling step with
           double size, to improve quality
           SCALEFLAGF_CORRECTASPECT - allow correction of destWidth and
           destHeight to meet source aspect ratio.
           sbma_ScreenBM - Firend BitMap used when allocating resized BitMap.
           tagList - pointer to list of Tags, or NULL.
       TAGS
           none defined yet.
       RESULT
           bm - Scaled copy of the original BitMap
       SEE ALSO


       NAME
           ScalosGfxCalculateScaleAspect -- Adjust scaling dimensions to source aspect
       SYNOPSIS
       	ScalosGfxCalculateScaleAspect(sourceWidth, sourceHeight, *destWidth, *destHeight)
       				      D0           D1            A0          A1
       	VOID ScalosGfxCalculateScaleAspect(ULONG, ULONG, ULONG *, ULONG *)


       FUNCTION
           Adjusts either destWidth or destHeight according to aspect ratio of
           sourceWidth and soureHeight.
       INPUTS
           sourceWidth - Unscaled width.
           sourceHeight - Unscaled Height;
           destWidth - Pointer to desired scaled width.
           destHeight - Pointer to desired scaled width.
       RESULT
           nothing
       SEE ALSO


       NAME
           ScalosGfxBlitARGB -- Blit rectangle between two gfxARGB array rectangles.
       SYNOPSIS
       	ScalosGfxBlitARGB(destARGB, srcARGB, destLeft, destTop, srcLeft, srcTop, width, height)
       			  A0        A1       D0        D1       D2       D3      D4     D5
       	VOID ScalosGfxBlitARGB(struct ARGBHeader *, const struct ARGBHeader *,
       		LONG, LONG, LONG, LONG, LONG, LONG)


       FUNCTION
           Blits user-defined rectangle from srcARGB at specified position into destARGB.
           No alpha handling is performed, destination pixel values are simply
           replaced by source pixels.
       INPUTS
           destARGB - destination gfxARGB array
           srcARGB - source gfxARGB array
           destLeft - Left start position in destARGB.
           destTop - Top start position in destARGB.
           srcLeft - Left start position in srcARGB.
           srcTop - Top start position in srcARGB.
           width - Width of blitted rectangle.
           height - Height of blitted rectangle.
       RESULT
           nothing
       SEE ALSO


       NAME
           ScalosGfxFillRectARGB -- Blit two gfxARGB array rectangles
       SYNOPSIS
       	ScalosGfxFillRectARGB(destARGB, fillARGB, left, top, width, height)
       			      A0        A1        D0    D1   D2     D3
       	VOID ScalosGfxFillRectARGB(struct ARGBHeader *, const struct gfxARGB *,
       		LONG, LONG, LONG, LONG)


       FUNCTION
           Blits fillARGB at specified position into destARGB. No alpha handling is
           performed, destination pixel values are just replaced by source pixels.
           Blit always starts at (0,0) in fillARGB.
       INPUTS
           destARGB - destination gfxARGB array.
           fillARGB - source gfxARGB array.
           left - Left start position in destARGB.
           top - Top start position in destARGB.
           width - Width of blitted rectangle.
           height - Height of blitted rectangle.
       RESULT
           nothing
       SEE ALSO


       NAME
           ScalosGfxSetARGB -- Set entire gfxARGB array to given ARGB color
       SYNOPSIS
       	ScalosGfxSetARGB(destARGB, fillARGB)
       			A0         A1
       	VOID ScalosGfxSetARGB(struct ARGBHeader *, const struct gfxARGB *)


       FUNCTION
           Set all pixels in entire gfxARGB array to the given ARGB color.
       INPUTS
           destARGB - gfxARGB array to be changed.
           fillARGB - ARGB value to set pixels to.
       RESULT
           nothing
       SEE ALSO


       NAME
           ScalosGfxNewColorMap -- Allocate new color table for ScalosBitMapAndColor
       SYNOPSIS
       	success = ScalosGfxNewColorMap(sac, colorMap, colorEntries)
       	D0                             A0   A1        D0
       	BOOL ScalosGfxNewColorMap(struct ScalosBitMapAndColor *, const ULONG *, ULONG)


       FUNCTION
           Allocates a new color table for ScalosBitMapAndColor. The new color table is
           filled with the RGB values from colorMap.
           Any previously color table in ScalosBitMapAndColor is freed.
       INPUTS
           sac - ScalosBitMapAndColor where to store new color table.
           colorMap - RGB values for new color table
           colorEntries - Desired number of entries in new color table
       RESULT
           success - TRUE if new color table was successfully allocated,
           FALSE on failure.
       SEE ALSO


       NAME
           ScalosGfxARGBRectMult -- Multiply RGB value with given factor
       SYNOPSIS
       	ScalosGfxARGBRectMult(rp, numerator, denominator, xMin, yMin, xMax, yMax)
       			      A0  A1         A2           D0    D1    D2    D3
       	VOID ScalosGfxARGBRectMult(struct RastPort *, const struct gfxARGB *,
       		const struct gfxARGB *, WORD, WORD, WORD, WORD)


       FUNCTION
           Multiplies RGB values of pixels within a specified rectangle
           with (numerator/denominator). Overflow is clipped to maximum RGB value (255).
           Works only with CyberGraphics generated, high-color or true-color BitMaps.
           Takes Layers in RastPort into account.
       INPUTS
           rp - RastPort with the BitMap to be modified.
           numerator - Scaling factor as numerator:denominator
           denominator - Scaling factor as numerator:denominator
           xMin - Left start of modified rectangle.
           yMin - Top start of modified rectangle.
           xMax - Right end of modified rectangle.
           yMax - Bottom end of modified rectangle.
       RESULT
           nothing
       SEE ALSO


       NAME
           ScalosGfxBlitARGBAlpha -- Alpha blit from gfxARGB array into RastPort
       SYNOPSIS
       	ScalosGfxBlitARGBAlpha(rp, srcH, destLeft, destTop, srcLeft, srcTop, width, height)
       			       A0  A1    D0        D1       D2       D3      D4     D5
       	VOID ScalosGfxBlitARGBAlpha (struct RastPort *, const struct ARGBHeader *,
       		ULONG, ULONG, ULONG, ULONG, ULONG, ULONG)


       FUNCTION
           Blit a rectangular area from source gfxARGB array into
           destination RastPort. Alpha (transparency) information in
           source gfxARGB array is fully accounted for.
           Destination RastPort may have Layers.
       INPUTS
           rp - Destination, this RastPort is been drawn to.
           srcH - Source gfxARGB array
           destLeft - Left offset in destination RastPort.
           destTop - Top offset in destination RastPort.
           srcLeft - Left offset in source gfxARGB array.
           srcTop - Left offset in source gfxARGB array.
           width - Width of blit rectangle.
           height - Height of blit rectangle.
       RESULT
           nothing
           NOTES
       SEE ALSO
           ScalosGfxBlitARGBAlphaTagList()


       NAME
           ScalosGfxBlitARGBAlphaTagList -- Alpha blit from gfxARGB array into RastPort
       SYNOPSIS
       	ScalosGfxBlitARGBAlphaTagList(rp, srcH, destLeft, destTop, srcSize, tagList)
       				      A0  A1    D0        D1       A3       A2
       	VOID ScalosGfxBlitARGBAlphaTagList(struct RastPort *, const struct ARGBHeader *,
       		ULONG, ULONG, const struct IBox *, struct TagItem *)
       	VOID ScalosGfxBlitARGBAlphaTags(struct RastPort *, const struct ARGBHeader *,
       		ULONG, ULONG, const struct IBox *, ULONG, ...)


       FUNCTION
       INPUTS
           rp - Destination, this RastPort is been drawn to.
           srcH - Source gfxARGB array
           destLeft - Left offset in destination RastPort.
           destTop - Top offset in destination RastPort.
           srcSize - IBox defining both left/top offset in source gfxARGB
           array, and size of blit rectangle.
           tagList - pointer to list of Tags, or NULL.
       TAGS
           SCALOSGFX_BlitIconHilight - const struct ARGB *, ARGB value to use
           for highlighting.Its RGB values are added
           to the destination pixels, with clipping
           to 0..255 range.
           SCALOSGFX_BlitIconAlpha - const UBYTE *, specify alpha array for icon.
           SCALOSGFX_BlitIconTransparency - ULONG, specify alpha for icon, 0...255.
       RESULT
           nothing
       SEE ALSO
           ScalosGfxBlitARGBAlpha()


       NAME
           ScalosGfxBlitIcon -- Alpha blit from RastPort to RastPort
       SYNOPSIS
       	ScalosGfxBlitIcon(rpBackground, rpIcon, left, top, width, height, tagList)
       			  A0            A1      D0    D1   D2     D3      A2
       	VOID ScalosGfxBlitIcon(struct RastPort *, struct RastPort *,
       		ULONG, ULONG, ULONG, ULONG, struct TagItem *)
       	VOID ScalosGfxBlitIconTags(struct RastPort *, struct RastPort *,
       		ULONG, ULONG, ULONG, ULONG, ULONG, ...)


       FUNCTION
           Blit a rectangular area from rpIcon into rpBackground, with full
           alpha (transparency) support.
           This function supports RastPorts with Layers.
       INPUTS
           rpBackground - Target RastPort.
           rpIcon - Source RastPort. The BitMap of this RastPort is
           not modified.
           left - left start of blit in rpBackground
           top - top start of blit in rpBackground
           width - width of the blitting rectangle
           height - height of the blitting rectangle
           tagList - pointer to list of Tags, or NULL.
       TAGS
           SCALOSGFX_BlitIconHilight - const struct ARGB *, ARGB value to use
           for highlighting. Its RGB values are
           added to the destination pixels, with
           clipping to 0..255 range.
           SCALOSGFX_BlitIconAlpha - const UBYTE *, specify alpha array for icon.
           SCALOSGFX_BlitIconTransparency - ULONG, specify alpha for icon, 0...255.
       RESULT
           nothing
       SEE ALSO



Scalos API

[编辑 | 编辑源代码]
   --background
   --Scalos_Message
   --Modules
   --PlugIn's
   --MenuPlugIn's
   SM_AddIcon
   SM_AppSleep
   SM_AppWakeup
   SM_CloseWindow
   SM_DeltaMove
   SM_DoPopupMenu
   SM_Iconify
   SM_NewPreferences
   SM_NewPattern
   SM_NewWindowPath
   SM_PrefsChanged
   SM_Redraw
   SM_RedrawIcon
   SM_RedrawIconObj
   SM_RemIcon
   SM_Requester
   SM_RunMenuCmd
   SM_RunProcess
   SM_SetThumbnailImage_ARGB
   SM_SetThumbnailImage_Remapped
   SM_ShowPopupMenu
   SM_ShowStatusBar
   SM_ShowTitle
   SM_Sleep
   SM_UnIconify
   SM_Update
   SM_UpdateIcon
   SM_Wakeup


       NAME
           --background
           DESCRIPTION
           This documentation gives you information how to communicate with
           Scalos and its windowtasks. There are not many MessageTypes
           currently available, but it will be more in future.


       NAME
           --Scalos_Message
           DESCRIPTION
           If you send a message to scalos you should use the SCA_AllocMessage()
           and SCA_FreeMessage() calls from the scalos.library. The returned
           message will look like this:
           struct ScalosMessage
           {
           struct Message sm_Message;
           ULONG sm_Signature; /* "IMSG" */
           ULONG sm_MessageType;
           };
           The message ports where to sent the messages to are available via
           the SCA_LockWindowList() / SCA_UnLockWindowList() calls from
           scalos.library.
           Additional data depends upon MessageType.
           SYNOPSIS will give you information about this data. INPUTS means the
           message for PutMsg() and RESULT the one that was replied.


       NAME
           --Modules
           DESCRIPTION
           Modules are programs with a standard wb-start enviroment. The
           arguments are additional values (e.g. Execute_Command: the dir and
           the filename as default value for the string-gadget).


       NAME
           --PlugIn's
           DESCRIPTION
           PlugIn's are external BOOPSI Classes that will enhance or replace
           internal classes. The only thing you have to do is to write a little
           shared library with only one offset. The library base should have at
           least a structure of a Library structure followed by a longword
           (four bytes). These four bytes are used to store an identifier so that
           Scalos can know that it is a Scalos plugin. The value for these four
           bytes should be 'PLUG' (which you should set in the initialisation
           routine of your plugin, or the auto initialisation).
           The one specific offset (it must be the first public function of your
           library if you decide to have more functions) has to return a ScaClassInfo
           struct. Your PlugIn can be added automatically on startup if you
           add it to the PlugIn list in Scalos Prefs.
       SYNOPSIS
       	ScaClassInfo SCAGetClassInfo()
       		D0
       	struct ScaClassInfo *SCAGetClassInfo( void );


   NAME
       --MenuPlugIn's
       DESCRIPTION
       A MenuPlugIn is a little library with one function. As with the standard
       plugins, your plugin function must be the first public function of the
       library. Menu plugins also require an identifier in the four bytes
       following the Library structure of the library base. In the case of menu
       plugins, the value for these four bytes should be 'OOPP'.
       This functions have to be full reentrant. The windowtask is blocked until
       your function returns. Never open a requester or block the task for a
       long time use SCCM_AsyncRoutine instead.
   SYNOPSIS
   	SCAMenuFunction( WindowTask, IconNode)
   					 A0          A1
   	void SCAMenuFunction( struct ScaWindowTask *, struct ScaIconNode *);
       NOTES
   	In order to get a pointer to the IconNode, your plugin must be
   	called from an popup menu. When called from a screen menu, the IconNode
   	pointer is always NULL.


名称


   SM_DeltaMove

概要

LONG smdm_DeltaX; LONG smdm_DeltaY; ULONG smdm_AdjustSlider;


功能

   Moves window interior by (deltaX,deltaY) and adjusts
   scrollers accordingly.

输入

   smdm_DeltaX - number of pixels to scroll the window contents
   in horizontal direction.
   smdm_DeltaY - number of pixels to scroll the window contents
   in vertical direction.
   smdm_AdjustSlider - Flags to use for correction of virtual size
   SETVIRTF_AdjustRightSlider = adjust right (vertical) slider
   SETVIRTF_AdjustBottomSlider = set bottom (horizontal) slider

结果

   nothing

另请参见

   IconWindow.sca/SCCM_IconWin_DeltaMove
   IconWindow.sca/SCCM_IconWin_SetVirtSize


名称


   SM_CloseWindow

概要



功能

   Closes the window of the selected messageport.

输入

   none

结果

   nothing

另请参见



名称


   SM_DoPopupMenu

概要



功能

   Trigger opening of a window or icon popup menu.

输入

   smdpm_InputEvent - InputEvent that triggered the popup menu.
   The mouse coordinates from the InputEvent are ignored,
   and the screen->MouseX, MouseY are used instead.

结果

   nothing

另请参见



名称


   SM_NewPattern

概要

APTR nmnp_PatternNode


功能

   Sets a new pattern for the window

输入

   snmp_PatternNode - the new pattern or NULL for no pattern.

结果

   nothing

另请参见



名称


   SM_NewWindowPath

概要



功能

   Change contents in existing window to display the given new path.

输入

   STRPTR smnwp_Path - Path of the new drawer to display in the window
   struct TagItem *smnwp_TagList - additional tags
   Supported tags are:
   SCA_ShowAllMode - one of the workbench DDFLAGS_* values.
   SCA_ViewModes - one of the workbench DDVM_BY* values
   SCA_XOffset - (LONG) Window X offset
   SCA_YOffset - (LONG) Window Y offset
   SCA_IconList - (struct ScaIconNode *) pregenerated icon list

结果

   nothing

另请参见

   IconWindow.sca/SCCM_IconWin_NewPath


名称


   SM_PrefsChanged

概要

ULONG Flags


功能

   Inform existing window about changed preferences. The window is
   responsible to perform any required updating.

输入

   ULONG Flags - future flags. Set to 0 for upwards compatibility.

结果

   nothing

另请参见


名称


   SM_Sleep

概要



功能

   The windowtask that receives this message will be sleep. Only the
   window will be closed, no icon will be displayed.

输入

   none

结果

   nothing
   NOTES
   Never send this message to a the main_messageport!

另请参见

   SM_Wakeup


名称


   SM_Wakeup

概要

ULONG smwu_ReLayout


功能

   Wakeup the selected window_task. It's the opposite to SM_Sleep.

输入

   smwu_ReLayout - BOOL
   TRUE if all icons of the window should be relayouted.
   This is especially important when WorkBench screen has changed.

结果

   nothing
   NOTES
   Never send this message to a the main_messageport!

另请参见

   SM_Sleep


名称


   SM_AppSleep

概要



功能

   All windowtasks and all ScalosApplications will fall asleep.

输入

   none

结果

   nothing
   NOTES
   This message must be sent to the main_messageport!

另请参见

   SM_AppWakeup


名称


   SM_AppWakeup

概要

ULONG smaw_ReLayout


功能

   Wakeup all thing that sleeps since SM_AppSleep.

输入

   smaw_ReLayout - TRUE if all icons should be relayouted.
   This is especially important when WorkBench screen has changed.

结果

   nothing
   NOTES
   This message must be sent to the main_messageport!

另请参见

   SM_AppSleep


名称


   SM_Redraw

概要

ULONG smmr_Flags


功能

   Redraws the icons inside of the window. This method could be uses to
   refresh the window after adding or selecting/deselecting icons.

输入

   smmr_Flags -
   REDRAWB_DontEraseWindow : don't erase window before redraw
   REDRAWB_ReLayoutIcons : relayout icons

结果

   nothing

另请参见



名称


   SM_RedrawIcon

概要

struct ScaIconObject *smri_Icon


功能

   Redraws the specified icon inside of the window.
   The window icon list semaphore must not be kept locked for this
   message to work! Before actually trying to redraw, an explicit
   check is done whether the icon is really member of the
   window's icon list.

输入

   smri_Icon - the icvon to be redrawn

结果

   nothing

另请参见



名称


   SM_RedrawIconObj

概要

Object *smrio_IconObject ULONG smrio_Flags


功能

   Redraws the specified iconobject inside of the window.
   The window icon list semaphore must not be kept locked for this
   message to work! Before actually trying to redraw, an explicit
   check is done whether the icon is really member of the
   window's icon list.
   Optionally, the icon can be explicitly erased before redrawing,
   and a new icon icon layout may be requested (IDTM_FreeLayout
   / IDTM_Layout).

输入

   smrio_IconObject - the iconobject to be redrawn
   smrio_Flags
   SMRIOFLAGF_EraseIcon - the iconobject is erased before redraw
   SMRIOFLAGF_FreeLayout - the iconobject is forced to refresh its
   layout (with IDTM_FreeLayout and IDTM_Layout).
   SMRIOFLAGF_Highlight - indicates that there is only a change
   in icon highlighting state.
   SMRIOFLAGF_IconListLocked - the window icon list is
   currently locked.
   SMRIOFLAGB_HightlightOn - set ICONOBJ_USERFLAGF_DrawHighlite
   before drawing. Useful in combination
   with SMRIOFLAGF_Highlight.
   SMRIOFLAGB_HightlightOff - clear ICONOBJ_USERFLAGF_DrawHighlite
   before drawing. Useful in combination
   with SMRIOFLAGF_Highlight.

结果

   nothing

另请参见



名称


   SM_SetThumbnailImage_ARGB

概要

Object *smtia_IconObject struct ARGBHeader smtia_NewImage


功能

   Attach a new ARGB image to an existing icon. The sender of this
   message is responsible to make sure that destination icon is able
   to handle true-color ARGB images.

输入

   smtia_IconObject - the icon to attach the new image to.
   smtia_NewImage -- the new ARGB image.
   ARGBHeader contents (BitMap) is supposed to be freed
   by message receiver.

结果

   nothing

另请参见



名称


   SM_SetThumbnailImage_Remapped

概要

Object *smtir_IconObject; // 要附加新图像的图标 struct ScalosBitMapAndColor *smtir_NewImage; // 新图像。ScalosBitMapAndColor 内容由消息处理程序释放


功能

   Attach a new color-mapped image to an existing icon.
   The sender of this message is responsible to make sure
   that destination icon is able to handle the color-mapped image.

输入

   smtir_IconObject -- the icon to attach the new image to.
   smtir_NewImage -- the new image. ScalosBitMapAndColor
   contents is supposed to be freed by message receiver.

结果

   nothing

另请参见



名称


   SM_ShowPopupMenu

概要

struct PopupMenu *pm struct ScaIconNode *in ULONG Flags struct FileTypeDef *fType


功能

   Show a popup menu and execute the user's menu command.

输入

   pm - Popup menu to display.
   in - Scalos icon node the popup menu should be associated to.
   Can be NULL for window popup menus.
   Flags - Show which items are still locked and HAVE TO BE UNLOCKED
   during processing.
   SHOWPOPUPFLGF_IconSemaLocked - wt_IconSemaphore is still locked
   SHOWPOPUPFLGF_WinListLocked - Scalos window list is still locked.
   fType - Private data structure for support of file type specific
   popup menus. Should be NULL if unused.

结果

   nothing

另请参见



名称


   SM_ShowStatusBar

概要

BOOL 可见


功能

   Show or hide the status bar on a Scalos window.

输入

   Visible - TRUE to display the status bar, FALSE to hide it.

结果

   nothing

另请参见



名称


   SM_Update

概要



功能

   Causes the window to reread its icons.

输入

   none

结果

   nothing

另请参见



名称


   SM_UpdateIcon

概要

BPTR smui_DirLock CONST_STRPTR smui_IconName


功能

   Refresh a selected icon.

输入

   smui_DirLock - Lock to parent dir of icon.
   smui_IconName - Name of the icon.

结果

   nothing
   NOTES
   You must create copies of smui_DirLock and smui_IconName before
   sending this message. Those copies will be deleted by Scalos.
   Example:
   smui_DirLock = DupLock(myLock);
   smui_IconName = AllocVec(1 + strlen(myName), MEMF_PUBLIC);


另请参见

   scalos.library/SCA_UpdateIcon()


名称


   SM_AddIcon

概要

UWORD smai_x UWORD smai_y BPTR smai_DirLock STRPTR smai_IconName


功能

   Causes a window task to load a selected icon.

输入

   smai_x
   smai_y - the position where the icon should appear or 0x8000 for any
   smai_DirLock - Lock to parent dir of icon.
   smai_IconName - Name of the icon.

结果

   nothing

另请参见



名称


   SM_RemIcon

概要

BPTR smri_DirLock STRPTR smri_IconName


功能

   Removes an icon from window.

输入

   smri_DirLock - Lock to parent dir of icon.
   smri_IconName - Name of the icon.

结果

   nothing

另请参见



名称


   SM_Iconify

概要



功能

   Set the window to sleep and adds an icon to the main window.

输入

   none
   NOTES
   Never send this message to the main window!

结果

   nothing

另请参见

   SM_UnIconify


名称


   SM_UnIconify

概要



功能

   Removes the appicon from main window and reopens the window.

输入

   none

结果

   nothing
   NOTES
   Never send this message to the main window!

另请参见

   SM_Iconify


名称


   SM_RunMenuCmd

概要

APTR smrm_MenuItem struct ScaIconNode *smrm_IconNode ULONG smrm_Flags


功能

   This message is used to execute a Scalos menu command in some
   other window task's context.

输入

   smrm_MenuItem - internal Scalos menu item descriptor
   smrm_IconNode - Iconnode to execute the command with.
   smrm_Flags - none defined yet.

结果

   nothing

另请参见


名称


   SM_ShowTitle

概要

ULONG smst_showTitle


功能

   This message is used to set the screen title bar display mode.

输入

   smst_showTitle - Screen title bar mode
   If TRUE, the screen's title bar will be shown in front of
   WFLG_BACKDROP windows.
   If FALSE, the title bar will be rendered behind all windows.


结果

   nothing

另请参见


名称


   SM_Requester

概要

union { ULONG smrq_ReqResult; struct Window *smrq_ParentWindow; }; APTR smrq_ArgList; struct EasyStruct smrq_ez; UBYTE smrq_ArgListBuffer[0];


功能

   Asynchronously pops up a requester and returns the result.

输入

   smrq_ParentWindow - designates which screen to open the requester on.
   smrq_ReqResult - Here the result from EaysRequest() is returned.
   smrq_ArgList - pointer to ArgList for EasyRequestArgs().
   smrq_ez - Contains information for EasyRequestArgs()
   smrq_ArgListBuffer - buffer for ArgList - allocated as large as needed.
   Put the required buffer length into the additional_size
   parameter of the SCA_AllocMessage() call.

结果

   nothing

另请参见

   intuition.library/EasyRequestArgs()
   scalos/SCA_AllocMessage()


名称


   SM_NewPreferences

概要

ULONG smnp_PrefsFlags


功能

   Triggers re-reading and checking of preferences files used by
   Scalos. Multiple invocations of SM_NewPreferences accumulate
   the bits for changes subsystems.
   When there are no more SM_NewPreferences for 0.5s, all marked
   preferences are re-read and check for changes. If changes are
   detected, Scalos reinitializes subsystems as required by the
   preferences changes.

输入

   smnp_PrefsFlags - Bitmask with one bit set for each changed
   preferences file. .

结果

   nothing

另请参见


设备列表

[编辑 | 编辑源代码]
   --background
   SCCM_DeviceList_Generate
   SCCM_DeviceList_FreeDevNode
   SCCM_DeviceList_Filter


       NAME
           --background
           DESCRIPTION
           This class is used to generate a list of all currently available
           devices. The list will be used to load or update diskicons. You may
           use this class to filter the devices.


       NAME
           SCCM_DeviceList_Generate
       SYNOPSIS
       	DoMethod(obj,SCCM_DeviceList_Generate,APTR NodeList);


       FUNCTION
           Generates the full list of devices.
           Scans through the DosList and adds a ScaDeviceIcon to the
           NodeList for every appropriate device/volume found.
           When finished scanning, applies SCCM_DeviceList_Filter to the
           NodeList of generated icons.
       INPUTS
           NodeList - pointer to an empty ScalosNodeList
       SEE ALSO


       NAME
           SCCM_DeviceList_FreeDevNode
       SYNOPSIS
       	DoMethod(obj,SCCM_DeviceList_FreeDevNode,APTR Node);


       FUNCTION
           Frees anything inside of this node, but not the node itself.
       INPUTS
           Node - DeviceNode
       SEE ALSO


       NAME
           SCCM_DeviceList_Filter
       SYNOPSIS
       	DoMethod(obj,SCCM_DeviceList_Filter,APTR NodeList);


       FUNCTION
           Filters the list of DeviceNodes. You can hide some devices or restore
           the nodelist. Default: all DOS-Devices without a volume will be
           filtered. Checkout the flags field in the DeviceNode structure.
       INPUTS
           NodeList - pointer to a ScalosNodeList
       SEE ALSO


设备窗口

[编辑 | 编辑源代码]

Content-Type: text/html DeviceWin.sca

   --background
   SCCM_DeviceWin_ReadIcon
   SCCM_DeviceWin_RemIcon


       NAME
           --background
           DESCRIPTION
           This class implements the main Workbench (= root) window, which
           shows the icons for the mounted devices and volumes.


       NAME
           SCCM_DeviceWin_ReadIcon
       SYNOPSIS
       	void DoMethod(obj,SCCM_DeviceWin_ReadIcon,
       		struct ScaDeviceIcon *DeviceNode);


       FUNCTION
           Read icon for device (DeviceNode) into window. Depending on prefs
           settings "DefIcons First", it tries to read :
           DefIconsFirst enabled:
           1. default volume icon "<DefIconPath>/def_<VolumeName>.info"
           2. default device icon "<DefIconPath>/def_<DeviceName>.info"
           3. disk icon "<VolumeName>:disk.info"
           DefIconsFirst disabled:
           1. disk icon "<VolumeName>:disk.info"
           2. default volume icon "<DefIconPath>/def_<VolumeName>.info"
           3. default device icon "<DefIconPath>/def_<DeviceName>.info"
           If everything else fails, a default icon if type WBDISK is read.
       INPUTS
           DeviceNode - info about what device to read icon for.
       RESULT
           nothing
       SEE ALSO


       NAME
           SCCM_DeviceWin_RemIcon
       SYNOPSIS
       	void DoMethod(obj,SCCM_DeviceWin_RemIcon,struct ScaIconNode *icon);


       FUNCTION
           Remove specified icon from window
       INPUTS
           icon - Icon to remove from window
       RESULT
           nothing
       SEE ALSO


filetrans

[编辑 | 编辑源代码]
   --background
   SCCM_Window_ChangeWindow
   SCCM_Window_Close
   SCCM_Window_DynamicResize
   SCCM_Window_GetIconFileType
   SCCM_Window_Iconify
   SCCM_Window_InitClipRegion
   SCCM_Window_LockUpdate
   SCCM_Window_NewPath
   SCCM_Window_RemClipRegion
   SCCM_Window_Open
   SCCM_Window_SetTitle
   SCCM_Window_SetInnerSize
   SCCM_Window_UnIconify
   SCCM_Window_UnlockUpdate


       NAME
           --background
           DESCRIPTION
           This class implements all common window functionality used for icon
           windows, text windows and device windows.
           All window methods are invoked with mt_WindowObject.


       NAME
           SCCM_Window_ChangeWindow
       SYNOPSIS
       	DoMethod(obj,SCCM_Window_ChangeWindow);


       FUNCTION
           Notifies that a Scalos window may have changed either
           position, or size, or both.
       INPUTS
           none
       RESULT
           nothing
       SEE ALSO


       NAME
           SCCM_Window_Close
       SYNOPSIS
       	DoMethod(obj,SCCM_Window_Close);


       FUNCTION
           Closes a scalos window
       INPUTS
           none
       RESULT
           nothing
       SEE ALSO


       NAME
           SCCM_Window_DynamicResize
       SYNOPSIS
       	DoMethod(obj,SCCM_Window_DynamicResize);


       FUNCTION
           Handles dynamic window resizing, including recalculation of window
           inner size, and re-sorting of unpositioned icons (if enabled).
       INPUTS
           none
       RESULT
           nothing
       SEE ALSO


       NAME
           SCCM_Window_GetIconFileType
       SYNOPSIS
       	DoMethod(obj,SCCM_Window_GetIconFileType, struct ScaIconNode *in);


       FUNCTION
           Fills the in_FileType element of the Scalos icon with a TypeNode
           according to the file type of the icon.
       INPUTS
           in - Scalos icon that gets its in_FileType updated.
       RESULT
           nothing
       SEE ALSO


       NAME
           SCCM_Window_Iconify
       SYNOPSIS
       	DoMethod(obj,SCCM_Window_Iconify);


       FUNCTION
           Iconifies a scalos window
       INPUTS
           none
       RESULT
           TRUE if window could be iconified successfully or
           has already been iconified.
           FALSE if something went wrong.
       SEE ALSO


       NAME
           SCCM_Window_UnIconify
       SYNOPSIS
       	DoMethod(obj,SCCM_Window_UnIconify);


       FUNCTION
           Uniconifies an iconified scalos window
       INPUTS
           none
       RESULT
           nothing
       SEE ALSO


       NAME
           SCCM_Window_InitClipRegion
       SYNOPSIS
       	struct Region *oldRegion = DoMethod(obj,SCCM_Window_InitClipRegion);


       FUNCTION
           Initializes window clip region so that all rendering is limited to
           the window interior.
           All window drawing - especially icon rendering - should be done
           inside a SCCM_Window_InitClipRegion / SCCM_Window_RemClipRegion call.
       INPUTS
           none
       RESULT
           oldRegion - original clip region (to be supplied
           to SCCM_Window_RemClipRegion)
       SEE ALSO
           SCCM_Window_RemClipRegion


       NAME
           SCCM_Window_LockUpdate
       SYNOPSIS
       	void DoMethod(obj,SCCM_Window_LockUpdate)


       FUNCTION
           Holds all icon updates for that window.
       INPUTS
           none
       RESULT
           nothing
       SEE ALSO
           SCCM_Window_UnlockUpdate


       NAME
           SCCM_Window_NewPath
       SYNOPSIS
       	void DoMethod(obj,SCCM_Window_NewPath,CONST_STRPTR path,ULONG tags,...);


       FUNCTION
           Inform window object about new path.
           No-op in standard window classes.
       INPUTS
           path - command name
           tags - tag list. Supported tags are:
           SCA_ShowAllMode - one of the workbench DDFLAGS_* values.
           SCA_ViewModes - one of the workbench DDVM_BY* values
           SCA_XOffset - (LONG) Window X offset
           SCA_YOffset - (LONG) Window Y offset
           SCA_IconList - (struct ScaIconNode *) pregenerated icon list
       RESULT
           Success - FALSE on failure, TRUE to indiciate success.
       SEE ALSO
           scalosAPI/SM_NewWindowPath
           IconWindow.sca/SCCM_IconWin_NewPath


       NAME
           SCCM_Window_RemClipRegion
       SYNOPSIS
       	void DoMethod(obj,SCCM_Window_RemClipRegion, 
       		struct Region *oldRegion);


       FUNCTION
           Resets window clip region to oldRegion.
       INPUTS
           oldRegion - original clip region
           (Result from SCCM_Window_InitClipRegion)
       RESULT
           nothing
       SEE ALSO
           SCCM_Window_InitClipRegion


       NAME
           SCCM_Window_Open
       SYNOPSIS
       	struct Window *win = DoMethod(obj,SCCM_Window_Open);


       FUNCTION
           Opens a scalos window
       INPUTS
           none
       RESULT
           win - Pointer to Intuition Window if window could be opened,
           NULL if something went wrong.
       SEE ALSO


       NAME
           SCCM_Window_SetTitle
       SYNOPSIS
       	void DoMethod(obj,SCCM_Window_SetTitle, CONST_STRPTR title)


       FUNCTION
           Sets window title to (title).
       INPUTS
           title - window title string.
       RESULT
           nothing
       SEE ALSO


       NAME
           SCCM_Window_SetInnerSize
       SYNOPSIS
       	void DoMethod(obj,SCCM_Window_SetInnerSize)


       FUNCTION
           Update internal Scalos variables according to the current
           window size and setup a new window clip region.
       INPUTS
           none
       RESULT
           nothing
       SEE ALSO


       NAME
           SCCM_Window_UnlockUpdate
       SYNOPSIS
       	void DoMethod(obj,SCCM_Window_UnlockUpdate)


       FUNCTION
           Enabled window updates stopped by SCCM_Window_LockUpdate.
       INPUTS
           none
       RESULT
           nothing
       SEE ALSO
           SCCM_Window_LockUpdate


图标窗口

[编辑 | 编辑源代码]
   --background
   SCCM_IconWin_ActivateIconDown
   SCCM_IconWin_ActivateIconLeft
   SCCM_IconWin_ActivateIconNext
   SCCM_IconWin_ActivateIconPrevious
   SCCM_IconWin_ActivateIconRight
   SCCM_IconWin_ActivateIconUp
   SCCM_IconWin_AddGadget
   SCCM_IconWin_AddIcon
   SCCM_IconWin_AddToControlBar
   SCCM_IconWin_AddToStatusBar
   SCCM_IconWin_Browse
   SCCM_IconWin_CleanUp
   SCCM_IconWin_CleanUpByDate
   SCCM_IconWin_CleanUpByName
   SCCM_IconWin_CleanUpBySize
   SCCM_IconWin_CleanUpByType
   SCCM_IconWin_ClearIconFileTypes
   SCCM_IconWin_CountWBArg
   SCCM_IconWin_DeltaMove
   SCCM_IconWin_DragDrop
   SCCM_IconWin_DragEnter
   SCCM_IconWin_DragQuery
   SCCM_IconWin_DragLeave
   SCCM_IconWin_DrawIcon
   SCCM_IconWin_GetDefIcon
   SCCM_IconWin_GetIconFileType
   SCCM_IconWin_History_Back
   SCCM_IconWin_History_Forward
   SCCM_IconWin_ImmediateCheckUpdate
   SCCM_IconWin_LayoutIcon
   SCCM_IconWin_MakeWBArg
   SCCM_IconWin_MenuCommand
   SCCM_IconWin_NewPath
   SCCM_IconWin_NewPatternNumber
   SCCM_IconWin_NewViewMode
   SCCM_IconWin_Open
   SCCM_IconWin_RawKey
   SCCM_IconWin_ReadIcon
   SCCM_IconWin_ReadIconList
   SCCM_IconWin_Redraw
   SCCM_IconWin_RemFromControlBar
   SCCM_IconWin_RemFromStatusBar
   SCCM_IconWin_RemIcon
   SCCM_IconWin_ScheduleUpdate
   SCCM_IconWin_SetVirtSize
   SCCM_IconWin_ShowGadgetToolTip
   SCCM_IconWin_ShowIconToolTip
   SCCM_IconWin_ShowPopupMenu
   SCCM_IconWin_Sleep
   SCCM_IconWin_StartNotify
   SCCM_IconWin_Update
   SCCM_IconWin_UpdateIcon
   SCCM_IconWin_UpdateControlBar
   SCCM_IconWin_UpdateStatusBar
   SCCM_IconWin_WakeUp


       NAME
           --background
           DESCRIPTION
           This class implements the functionality for the common workbench
           icon windows.
           ATTRIBUTES
           SCCA_IconWin_Reading - (BOOL) [SG]
           currently reading directory
           SCCA_IconWin_SelectedCount - (ULONG) [SG]
           number of selected icons in window
           SCCA_IconWin_Typing - (BOOL) [SG]
           user is currently tying icon name
           SCCA_IconWin_ShowType - (ULONG) [SG]
           DDFLAGS_SHOWDEFAULT, DDFLAGS_SHOWICONS, or DDFLAGS_SHOWALL
           SCCA_IconWin_InnerWidth - (ULONG) [.G]
           icon window inner width
           SCCA_IconWin_InnerHeight - (ULONG) [.G]
           icon window inner height
           SCCA_IconWin_IconFont - (struct TextFont *) [.G]
           icon window icon font
           SCCA_IconWin_LayersLocked - (ULONG) [.G]
           Flag: icon window has Layers locked
           SCCA_IconWin_StatusBar - (BOOL) [SG]
           Flag: Status bar is present
           SCCA_IconWin_ThumbnailView - (ULONG) [SG]
           Thumbnail display mode. One of THUMBNAILS_Never,
           THUMBNAILS_Always, or THUMBNAILS_AsDefault.
           Any other value makes the window use the default value,
           as set in Scalos preferences.


       NAME
           SCCM_IconWin_ActivateIconDown
       SYNOPSIS
       	DoMethod(obj,SCCM_IconWin_ActivateIconDown);


       FUNCTION
           Starting from the first icon currently selected, the icon located
           directly below the selected will be activated.
           If there is no icon selected, or the selected icon is located in
           the bottommost row, the method is a no-op.
       INPUTS
           None
       RESULT
           nothing
       SEE ALSO
           SCCM_IconWin_ActivateIconUp
           SCCM_IconWin_ActivateIconLeft
           SCCM_IconWin_ActivateIconRight


       NAME
           SCCM_IconWin_ActivateIconLeft
       SYNOPSIS
       	DoMethod(obj,SCCM_IconWin_ActivateIconLeft);


       FUNCTION
           Starting from the first icon currently selected, the icon located
           directly left of the selected will be activated.
           If there is no icon selected, or the selected icon is located in
           the leftmost column, the method is a no-op.
       INPUTS
           None
       RESULT
           nothing
       SEE ALSO
           SCCM_IconWin_ActivateIconDown
           SCCM_IconWin_ActivateIconUp
           SCCM_IconWin_ActivateIconRight


       NAME
           SCCM_IconWin_ActivateIconNext
       SYNOPSIS
       	DoMethod(obj,SCCM_IconWin_ActivateIconNext);


       FUNCTION
           Starting from the first icon currently selected, the icon which
           alphabetically follows the name of the selected one
           will be activated.
           If there is no icon selected, the alphabetically first
           icon will be selected.
           If the currently activated icon is the alphabetically last one in
           the window, this method will wrap around and activate the
           alphabetically first one.
       INPUTS
           None
       RESULT
           nothing
       SEE ALSO
           SCCM_IconWin_ActivateIconPrevious


       NAME
           SCCM_IconWin_ActivateIconPrevious
       SYNOPSIS
       	DoMethod(obj,SCCM_IconWin_ActivateIconPrevious);


       FUNCTION
           Starting from the first icon currently selected, the icon which
           alphabetically precedes the name of the selected one
           will be activated.
           If there is no icon selected, the alphabetically last
           icon will be selected.
           If the currently activated icon is the alphabetically first one in
           the window, this method will wrap around and activate the
           alphabetically last one.
       INPUTS
           None
       RESULT
           nothing
       SEE ALSO
           SCCM_IconWin_ActivateIconNext


       NAME
           SCCM_IconWin_ActivateIconRight
       SYNOPSIS
       	DoMethod(obj,SCCM_IconWin_ActivateIconRight);


       FUNCTION
           Starting from the first icon currently selected, the icon located
           directly right of the selected will be activated.
           If there is no icon selected, or the selected icon is located in
           the rightmost column, the method is a no-op.
       INPUTS
           None
       RESULT
           nothing
       SEE ALSO
           SCCM_IconWin_ActivateIconDown
           SCCM_IconWin_ActivateIconUp
           SCCM_IconWin_ActivateIconLeft


       NAME
           SCCM_IconWin_ActivateIconUp
       SYNOPSIS
       	DoMethod(obj,SCCM_IconWin_ActivateIconUp);


       FUNCTION
           Starting from the first icon currently selected, the icon located
           directly above the selected will be activated.
           If there is no icon selected, or the selected icon is located in
           the topmost row, the method is a no-op.
       INPUTS
           None
       RESULT
           nothing
       SEE ALSO
           SCCM_IconWin_ActivateIconDown
           SCCM_IconWin_ActivateIconLeft
           SCCM_IconWin_ActivateIconRight


       NAME
           SCCM_IconWin_AddGadget
       SYNOPSIS
       	DoMethod(obj,SCCM_IconWin_AddGadget,struct Gadget *g);


       FUNCTION
           Inserts a user-supplied Intuition Gadget at the front
           of the internal Gadget list.
       INPUTS
           Gadget - User-supplied Gadget
       SEE ALSO


       NAME
           SCCM_IconWin_AddIcon
       SYNOPSIS
       	struct ScaIconNode *icon = DoMethod(obj,SCCM_IconWin_AddIcon,
       		WORD x,WORD y,BPTR Lock,CONST_STRPTR Name);


       FUNCTION
           Causes a window task to load the specified selected icon.
       INPUTS
           x - icon x position or $8000 for any position
           y - icon y position
           Lock - Lock on icon directory
           Name - icon name
       RESULT
           icon - newly added ScaIconNode or NULL if something went wrong.
       SEE ALSO


       NAME
           SCCM_IconWin_AddToControlBar
       SYNOPSIS
       	DoMethod(obj,SCCM_IconWin_AddToControlBar,struct Gadget *g,
       		ULONG Tag, ...);


       FUNCTION
           Adds a new BOOPSI gadget to the window control bar.
       INPUTS
           g - new Gadget to be added
           Tag - Taglist
       RESULT
           nothing
       SEE ALSO
           SCCM_IconWin_RemFromControlBar


       NAME
           SCCM_IconWin_AddToStatusBar
       SYNOPSIS
       	DoMethod(obj,SCCM_IconWin_AddToStatusBar,struct Gadget *g,
       		ULONG Tag, ...);


       FUNCTION
           Adds a new BOOPSI gadget to the window status bar.
       INPUTS
           g - new Gadget to be added
           Tag - Taglist
       RESULT
           nothing
       SEE ALSO
           SCCM_IconWin_RemFromStatusBar


       NAME
           SCCM_IconWin_Browse
       SYNOPSIS
       	DoMethod(obj,SCCM_IconWin_Browse);


       FUNCTION
           Opens an ASL requester that allows selection of a new
           path to display in the current window.
       INPUTS
           none
       RESULT
           nothing
       SEE ALSO


       NAME
           SCCM_IconWin_ScheduleUpdate
       SYNOPSIS
       	void DoMethod(obj,SCCM_IconWin_ScheduleUpdate);


       FUNCTION
           Schedule a check of the window for updated files and perform
           updates, including adding and removing icons.
           This real update check will be delayed for about 2 seconds in
           order to avoid many rapidly repeated window updates, and is done
           via the SCCM_IconWin_ImmediateCheckUpdate method.
           These 2 seconds are restarted with each new
           SCCM_IconWin_ScheduleUpdate invokation.
       INPUTS
           none
       RESULT
           nothing
       SEE ALSO
           SCCM_IconWin_ImmediateCheckUpdate


       NAME
           SCCM_IconWin_CleanUp
       SYNOPSIS
       	void DoMethod(obj,SCCM_IconWin_CleanUp);


       FUNCTION
           Fits all window icons to free positions, including icons in
           wt_LateIconList. Prevents icons from overlapping each other.
       INPUTS
           none
       RESULT
           nothing
       SEE ALSO


       NAME
           SCCM_IconWin_CleanUpByDate
       SYNOPSIS
       	void DoMethod(obj,SCCM_IconWin_CleanUpByDate);


       FUNCTION
           Sorts all window icons descending by date, and fits them to free
           positions, including icons in wt_LateIconList.
           Prevents icons from overlapping each other.
       INPUTS
           none
       RESULT
           nothing
       SEE ALSO
           SCCM_IconWin_CleanUpByName
           SCCM_IconWin_CleanUpBySize
           SCCM_IconWin_CleanUpByType


       NAME
           SCCM_IconWin_CleanUpByName
       SYNOPSIS
       	void DoMethod(obj,SCCM_IconWin_CleanUpByName);


       FUNCTION
           Sorts all window icons ascending by name, and fits them to free
           positions, including icons in wt_LateIconList.
           Prevents icons from overlapping each other.
       INPUTS
           none
       RESULT
           nothing
       SEE ALSO
           SCCM_IconWin_CleanUpByDate
           SCCM_IconWin_CleanUpBySize
           SCCM_IconWin_CleanUpByType


       NAME
           SCCM_IconWin_CleanUpBySize
       SYNOPSIS
       	void DoMethod(obj,SCCM_IconWin_CleanUpBySize);


       FUNCTION
           Sorts all window icons ascending by size, and fits them to free
           positions, including icons in wt_LateIconList.
           Prevents icons from overlapping each other.
       INPUTS
           none
       RESULT
           nothing
       SEE ALSO
           SCCM_IconWin_CleanUpByDate
           SCCM_IconWin_CleanUpByName
           SCCM_IconWin_CleanUpByType


       NAME
           SCCM_IconWin_CleanUpByType
       SYNOPSIS
       	void DoMethod(obj,SCCM_IconWin_CleanUpByType);


       FUNCTION
           Sorts all window icons ascending by type, and fits them to free
           positions, including icons in wt_LateIconList.
           Prevents icons from overlapping each other.
       INPUTS
           none
       RESULT
           nothing
       SEE ALSO
           SCCM_IconWin_CleanUpByDate
           SCCM_IconWin_CleanUpByName
           SCCM_IconWin_CleanUpBySize


       NAME
           SCCM_IconWin_ClearIconFileTypes
       SYNOPSIS
       	void DoMethod(obj,SCCM_IconWin_ClearIconFileTypes);


       FUNCTION
           Clears the filetype information for all windows in the icon
           window. Useful if filetype information hasd changed
           and has to be re-read.
       INPUTS
           none
       RESULT
           nothing
       SEE ALSO


       NAME
           SCCM_IconWin_CountWBArg
       SYNOPSIS
       	ULONG Count = DoMethod(obj,SCCM_IconWin_CountWBArg,
       		struct ScaIconNode *icon);


       FUNCTION
           Count arguments that will be crated by SCCM_IconWin_MakeWBArg.
           Useful to allocate a WBArg buffer for SCCM_IconWin_MakeWBArg.
       INPUTS
           icon - icon to make WBArg from
           if icon = NULL, return WBArg with wa_Lock = copy of
           window lock and wa_Name = NULL
       RESULT
           Count - number of WBArg's that SCCM_IconWin_MakeWBArg will create
       SEE ALSO
           SCCM_IconWin_MakeWBArg


       NAME
           SCCM_IconWin_DeltaMove
       SYNOPSIS
       	void DoMethod(obj,SCCM_IconWin_DeltaMove,LONG deltaX,LONG deltaY);


       FUNCTION
           Moves window interior by (deltaX,deltaY) and adjusts
           scrollers accordingly.
       INPUTS
           deltaX - movement in horizontal direction
           deltaY - movement in vertical direction
       RESULT
           nothing
       SEE ALSO


       NAME
           SCCM_IconWin_DragDrop
       SYNOPSIS
       	void DoMethod(obj,SCCM_IconWin_DragDrop,struct Window *dropWindow,
       		ULONG mouseX,ULONG mouseY,ULONG Qualifier);


       FUNCTION
           Drops all dragged icons into (dropWindow) at coordinates
           (mouseX,MouseY).
       INPUTS
           dropWindow - Intuition window to drop in
           mouseX - mouse x position from IntuiMessage
           mouseY - mouse y position from IntuiMessage
           Qualifier - qualifier position from IntuiMessage
       RESULT
           nothing
       SEE ALSO


       NAME
           SCCM_IconWin_DragEnter
       SYNOPSIS
       	void DoMethod(obj,SCCM_IconWin_DragEnter, struct ScaWindowStruct *StartWin,
       		struct ScaIconNode *Icon, ULONG MouseX, ULONG MouseY)


       FUNCTION
           Signals destination window that mouse pointer with attached
           icons has entered the window area (drage_Icon = NULL) or
           now points to icon (drage_Icon).
       INPUTS
           StartWin - scalos window from which dragging started
           Icon -icon under mouse pointer
           MouseX, MouseY - mouse coordinates.
       RESULT
           nothing
       NOTE
           It is VERY IMPORTANT that every SCCM_IconWin_DragEnter (icon
           or window) is paired with a corresponding
           SCCM_IconWin_DragLeave method (icon or window) call !!!
       SEE ALSO
           SCCM_IconWin_DragLeave


       NAME
           SCCM_IconWin_DragQuery
       SYNOPSIS
       	BOOL DoMethod(obj,SCCM_IconWin_DragQuery, struct ScaWindowStruct *StartWin,
       		struct ScaIconNode *Icon, ULONG MouseX, ULONG MouseY)


       FUNCTION
           Check whether icons may be dropped into our window
           or onto specified icon.
       INPUTS
           StartWin - scalos window from which dragging started
           Icon -icon under mouse pointer
           MouseX, MouseY - mouse coordinates.
       RESULT
           BOOL
           TRUE yes, we may drop here
           FALSE no, dropping not allowed
       SEE ALSO


       NAME
           SCCM_IconWin_DragLeave
       SYNOPSIS
       	void DoMethod(obj,SCCM_IconWin_DragLeave, struct ScaWindowStruct *StartWin,
       		struct ScaIconNode *Icon, ULONG MouseX, ULONG MouseY);


       FUNCTION
           Signals destination window that mouse pointer with attached
           icons has left the window area (drage_Icon = NULL) or
           now points no longer to icon (drage_Icon).
       INPUTS
           StartWin - scalos window from which dragging started
           Icon -icon under mouse pointer
           MouseX, MouseY - mouse coordinates.
       RESULT
           nothing
       NOTE
           It is VERY IMPORTANT that every SCCM_IconWin_DragEnter (icon
           or window) is paired with a corresponding
           SCCM_IconWin_DragLeaveDrag method (icon or window) call !!!
       SEE ALSO
           SCCM_IconWin_DragEnter


       NAME
           SCCM_IconWin_DrawIcon
       SYNOPSIS
       	ULONG Result = DoMethod(obj,SCCM_IconWin_DrawIcon,Object *IconObject);


       FUNCTION
           Draws (IconObject) in window by invoking IDTM_Draw method with icon
       INPUTS
           IconObject - Icon to be drawn
       RESULT
           Result - result from IDTM_Draw
       SEE ALSO


       NAME
           SCCM_IconWin_GetDefIcon
       SYNOPSIS
       	Object *icon = DoMethod(obj,SCCM_IconWin_GetDefIcon,CONST_STRPTR Name,
       		LONG Type,ULONG Protection);


       FUNCTION
           Tries to get a default icon for the specified file. Calls
           iconobject.library/GetDefIconObject and returns result.
       INPUTS
           Name - file name
           Type - file type (fib_DirEntryType from FileInfoBlock)
           Protection - file protection (fib_Protection from FileInfoBlock)
       RESULT
           icon - default Icon IconObject
       SEE ALSO
           iconobject.library/GetDefIconObject


       NAME
           SCCM_IconWin_GetIconFileType
       SYNOPSIS
       	Object *icon = DoMethod(obj,SCCM_IconWin_GetIconFileType,
       		struct ScaIconNode *icon);


       FUNCTION
           Identifies object for icon, find the appropriate filetype
           and setup the in_FileType member of ScaIconNode.
       INPUTS
           icon - icon to find filetype for.
       RESULT
           icon - default Icon IconObject
       SEE ALSO
           iconobject.library/GetDefIconObject


       NAME
           SCCM_IconWin_History_Back
       SYNOPSIS
       	Object *icon = DoMethod(obj,SCCM_IconWin_History_Back);


       FUNCTION
           Move one step backwards in the history of the window contents,
           and switch to display the contents of the path from the history
           using the current view mode.
           Does nothing if the current view is already the oldest one
           in the window history.
       INPUTS
           None.
       RESULT
           None.
       SEE ALSO
           SCCM_IconWin_History_Forward


       NAME
           SCCM_IconWin_History_Forward
       SYNOPSIS
       	Object *icon = DoMethod(obj,SCCM_IconWin_History_Forward);


       FUNCTION
           Move one step forward in the history of the window contents,
           and switch to display the contents of the path from the history
           using the current view mode.
           Does nothing if the current view is already the most recent one
           in the window history.
       INPUTS
           None.
       RESULT
           None.
       SEE ALSO
           SCCM_IconWin_History_Back


       NAME
           SCCM_IconWin_ImmediateCheckUpdate
       SYNOPSIS
       	Object *icon = DoMethod(obj,SCCM_IconWin_ImmediateCheckUpdate);


       FUNCTION
           Scan directory associated to this window and check for any changes
           between the display and the disk contents. If any changes are found,
           icons are added, removed, or replaced as necessary.
       INPUTS
           None
       SEE ALSO
           SCCM_IconWin_ScheduleUpdate


       NAME
           SCCM_IconWin_LayoutIcon
       SYNOPSIS
       	ULONG Result = DoMethod(obj,SCCM_IconWin_LayoutIcon,Object *IconObject,
       		ULONG LayoutFlags);


       FUNCTION
           Prepares an IconObject to be rendered.
       INPUTS
           IconObject - icon to be layouted
           LayoutFlags
           IOLAYOUTB_NormalImage // Layout normal Image
           IOLAYOUTB_SelectedImage // Layout selected Image
       RESULT
           Result - result from IDTM_Layout
       SEE ALSO


       NAME
           SCCM_IconWin_MakeWBArg
       SYNOPSIS
       	ULONG Count = DoMethod(obj,SCCM_IconWin_MakeWBArg,
       		struct ScaIconNode *icon, struct WBArg *Buffer);


       FUNCTION
           Fill a WBArg structure (wa_Lock and wa_Name) from the given icon or
           from the window.
       INPUTS
           icon - icon to make WBArg from
           if icon = NULL, return WBArg with wa_Lock = copy of
           window lock and wa_Name = NULL
           Buffer - Result buffer with at least enough room for one WBArg.
       RESULT
           Count - number of successfully created WBArg's in (Buffer)
       SEE ALSO
           SCCM_IconWin_CountWBArg


       NAME
           SCCM_IconWin_MenuCommand
       SYNOPSIS
       	void DoMethod(obj,SCCM_IconWin_MenuCommand,CONST_STRPTR CmdName, 
       		struct ScaIconNode *icon, BOOL state);


       FUNCTION


       INPUTS
           CmdName - command name
           icon - icon to apply command to
           state - ?
       RESULT
           nothing
       SEE ALSO


       NAME
           SCCM_IconWin_NewPath
       SYNOPSIS
       	void DoMethod(obj,SCCM_IconWin_NewPath,CONST_STRPTR path,ULONG tags,...);


       FUNCTION
           Change contents in existing window to display the given new path.
       INPUTS
           path - command name
           tags - tag list. Supported tags are:
           SCA_ShowAllMode - one of the workbench DDFLAGS_* values.
           SCA_ViewModes - one of the workbench DDVM_BY* values
           SCA_XOffset - (LONG) Window X offset
           SCA_YOffset - (LONG) Window Y offset
           SCA_IconList - (struct ScaIconNode *) pregenerated icon list
       RESULT
           Success - FALSE on failure, TRUE to indiciate success.
       SEE ALSO
           scalosAPI/SM_NewWindowPath


       NAME
           SCCM_IconWin_NewPatternNumber
       SYNOPSIS
       	void DoMethod(obj,SCCM_IconWin_NewPatternNumber,ULONG NewPatternNumber);


       FUNCTION


       INPUTS
           NewPatternNumber - Instruct Scalos to use a new background for the
           current icon window. Special constant can be specified to
           use one of the predefined default patterns:
           PATTERNNR_WorkbenchDefault use default Workbench
           window background.
           PATTERNNR_IconWindowDefault use default icon window
           background pattern.
           PATTERNNR_TextWindowDefault use default text window
           pattern.
       RESULT
           nothing
       SEE ALSO


       NAME
           SCCM_IconWin_NewViewMode
       SYNOPSIS
       	Object *WindowObj = DoMethod(obj,SCCM_IconWin_NewViewMode,
       		ULONG ViewMode);


       FUNCTION
           changes window view mode from text to icon and vice versa.
       INPUTS
           ViewMode - new window view mode
       RESULT
           WindowObj - IconWindow.sca subclass object if window class
           changes from text to icon or vice versa
           NULL if window class is not changed.
       SEE ALSO


       NAME
           SCCM_IconWin_Open
       SYNOPSIS
       	BOOL Success = DoMethod(obj, SCCM_IconWin_Open, struct ScaIconNode *icon, ULONG Flags);


       FUNCTION
           perform "open" function on (icon)
       INPUTS
           icon - icon to open
           Flags - ICONWINOPENF_IgnoreFileTypes -- always OPEN icon, ignore
           file type settings.
           ICONWINOPENF_NewWindow -- open drawers in new window, regardless
           of browser mode.
       RESULT
           Success - TRUE if new window could be opened
           FALSE if anything went wrong
       SEE ALSO


       NAME
           SCCM_IconWin_RawKey
       SYNOPSIS
       	void DoMethod(obj,SCCM_IconWin_RawKey,struct IntuiMessage *iMsg);


       FUNCTION
           Processes Intuition IDCMP_RAWKEY events.
       INPUTS
           iMsg - IntuiMessage
       RESULT
           nothing
       SEE ALSO


       NAME
           SCCM_IconWin_ReadIcon
       SYNOPSIS
       	struct ScaIconNode *icon = DoMethod(obj,SCCM_IconWin_ReadIcon,
       			CONST_STRPTR name, struct ScaReadIconArg *ria);


       FUNCTION
           Read one icon, add it to the window icon list, and display it.
           If an icon with the same name already exists it is replaced.
           If no icon could be created, i.e. because the file system
           object is no longer present, any existing icon is removed
           from the window.
           The intended use of this method is to update icon window after
           change in file system, i.e. add file, remove file, or change file.
       INPUTS
           name - name of the icon
           ria - pointer to struct ScaReadIconArg with information about x/y icon
           position, and optional Lock on parent directory.
           ria may be NULL.
       RESULT
           icon - newly created ScaIconNode or NULL if something went wrong.
       SEE ALSO


       NAME
           SCCM_IconWin_ReadIconList
       SYNOPSIS
       	BOOL Error = DoMethod(obj,SCCM_IconWin_ReadIconList,ULONG flags);


       FUNCTION
           Read all icons in directory into window.
       INPUTS
           flags - SCCV_IconWin_ReadIconList_ShowAll = show all files
       RESULT
           Error - non-zero value if anything went wrong
       SEE ALSO


       NAME
           SCCM_IconWin_Redraw
       SYNOPSIS
       	void DoMethod(obj,SCCM_IconWin_Redraw,ULONG flags);


       FUNCTION
           redraws window
       INPUTS
           flags
           REDRAWB_DontEraseWindow : don't erase window before redraw
           REDRAWB_ReLayoutIcons : relayout icons
           REDRAWB_DontRefreshWindowFrame : do not refresh window frame
       RESULT
           nothing
       SEE ALSO


       NAME
           SCCM_IconWin_RemIcon
       SYNOPSIS
       	void DoMethod(obj,SCCM_IconWin_RemIcon,BPTR Lock, CONSTR_STRPTR Name);


       FUNCTION
           Remove specified icon from window
       INPUTS
           Lock - Lock on icon directory
           Name - Name of icon to remove
       RESULT
           nothing
       SEE ALSO


       NAME
           SCCM_IconWin_RemFromControlBar
       SYNOPSIS
       	DoMethod(obj,SCCM_IconWin_RemFromControlBar,struct Gadget *g);


       FUNCTION
           Remove specified Gadget from window control bar, and disposes it.
       INPUTS
           g - Gadget to remove from control bar
       SEE ALSO
           SCCM_IconWin_AddToControlBar


       NAME
           SCCM_IconWin_RemFromStatusBar
       SYNOPSIS
       	DoMethod(obj,SCCM_IconWin_RemFromStatusBar,struct Gadget *g);


       FUNCTION
           Remove specified Gadget from window status bar, and disposes it.
       INPUTS
           g - Gadget to remove from status bar
       SEE ALSO
           SCCM_IconWin_AddToStatusBar


       NAME
           SCCM_IconWin_SetVirtSize
       SYNOPSIS
       	void DoMethod(obj,SCCM_IconWin_SetVirtSize,ULONG Flags);


       FUNCTION
           Calculate bounding rectangle of all icons in window and optionally
           adjust window scrollers accordingly.
       INPUTS
           Flags
           SETVIRTF_AdjustRightSlider = adjust right (vertical) slider
           SETVIRTF_AdjustBottomSlider = set bottom (horizontal) slider
       RESULT
           nothing
       SEE ALSO


       NAME
           SCCM_IconWin_ShowIconToolTip
       SYNOPSIS
       	void DoMethod(obj,SCCM_IconWin_ShowGadgetToolTip, ULONG gadgetID);


       FUNCTION
           Display tool tip window for (gadgetID).
       INPUTS
           gadgetID - GadgetID of gadget to display tool tip for.
       RESULT
           nothing
       SEE ALSO


       NAME
           SCCM_IconWin_ShowIconToolTip
       SYNOPSIS
       	void DoMethod(obj,SCCM_IconWin_ShowIconToolTip,
       		struct ScaIconNode *icon);


       FUNCTION
           Display icon tool tip window for (icon).
       INPUTS
           icon - icon to display tool tip for.
       RESULT
           nothing
       SEE ALSO


       NAME
           SCCM_IconWin_Sleep
       SYNOPSIS
       	void DoMethod(obj,SCCM_IconWin_Sleep);


       FUNCTION
           Iconify window and add AppIcon to Workbench.
       INPUTS
           none
       RESULT
           nothing
       SEE ALSO


       NAME
           SCCM_IconWin_StartNotify
       SYNOPSIS
       	void DoMethod(obj,SCCM_IconWin_StartNotify);


       FUNCTION
           Cancel any existing drawer notification for this window,
           and install a new notification.
       INPUTS
           none
       RESULT
           Success - TRUE if notification successfully started, FALSE on failure.
       SEE ALSO


       NAME
           SCCM_IconWin_Update
       SYNOPSIS
       	DoMethod(obj,SCCM_IconWin_Update);


       FUNCTION
           Re-read all icons into window and redraw window.
       INPUTS
           none
       RESULT
           ?
       SEE ALSO


       NAME
           SCCM_IconWin_UpdateIcon
       SYNOPSIS
       	DoMethod(obj,SCCM_IconWin_UpdateIcon,BPTR Lock,CONST_STRPTR Name);


       FUNCTION
           Update and redisplay icon.
       INPUTS
           Lock - Lock to icon directory
           Name - name of icon
       RESULT
           ?
       SEE ALSO


       NAME
           SCCM_IconWin_UpdateControlBar
       SYNOPSIS
       	DoMethod(obj,SCCM_IconWin_UpdateControlBar,struct Gadget *g,ULONG Tags,...);


       FUNCTION
           Update window control bar member gadget. Applies OM_SET method with
           the supplied taglist to member gadget.
       INPUTS
           g - Control bar member gadget to update
           Tags - Taglist
       SEE ALSO


       NAME
           SCCM_IconWin_UpdateStatusBar
       SYNOPSIS
       	DoMethod(obj,SCCM_IconWin_UpdateStatusBar,struct Gadget *g,ULONG Tags,...);


       FUNCTION
           Update window status bar member gadget. Applies OM_SET method with
           the supplied taglist to member gadget.
       INPUTS
           g - Status bar member gadget to update
           Tags - Taglist
       SEE ALSO


       NAME
           SCCM_IconWin_WakeUp
       SYNOPSIS
       	void DoMethod(obj,SCCM_IconWin_WakeUp,ULONG ReLayout);


       FUNCTION
           Uniconify and open iconified window.
       INPUTS
           ReLayout - TRUE if all icons of the window should be relayouted
       RESULT
           nothing
       SEE ALSO


       NAME
           SCCM_IconWin_ShowPopupMenu
       SYNOPSIS
       	void DoMethod(obj,SCCM_IconWin_ShowPopupMenu,
       		struct PopupMenu *pm, struct ScaIconNode *in, 
       		ULONG Flags, struct FileTypeDef *fType);


       FUNCTION
           Show a popup menu and execute the user's menu command.
       INPUTS
           pm - Popup menu to display.
           in - Scalos icon node the popup menu should be associated to.
           Can be NULL for window popup menus.
           Flags - Show which items are still locked and HAVE TO BE UNLOCKED
           during processing.
           SHOWPOPUPFLGF_IconSemaLocked - wt_IconSemaphore is still locked
           SHOWPOPUPFLGF_WinListLocked - Scalos window list is still locked.
           fType - Private data structure for support of file type specific
           popup menus. Should be NULL if unused.
       RESULT
           nothing
       SEE ALSO



文本窗口

[编辑 | 编辑源代码]
   --background
   SCCM_TextWin_BeginUpdate
   SCCM_TextWin_DrawColumnHeaders
   SCCM_TextWin_EndUpdate
   SCCM_TextWin_InsertIcon
   SCCM_TextWin_ReAdjust


       NAME
           --background
           DESCRIPTION
           This class implements the text-only Scalos windows. Most
           functionality is derived from IconWindow.sca but there are
           some special methods described below.


       NAME
           SCCM_TextWin_BeginUpdate
       SYNOPSIS
       	DoMethod(obj,SCCM_TextWin_BeginUpdate);


       FUNCTION
           hold all visible updates until SCCM_TextWin_EndUpdate
       INPUTS
           none
       RESULT
           nothing
       SEE ALSO
           SCCM_TextWin_EndUpdate


       NAME
           SCCM_TextWin_DrawColumnHeaders
       SYNOPSIS
       	DoMethod(obj,SCCM_TextWin_DrawColumnHeaders);


       FUNCTION
           Redraws text window column headers.
       INPUTS
           nothing
       RESULT
           nothing
       SEE ALSO


       NAME
           SCCM_TextWin_EndUpdate
       SYNOPSIS
       	DoMethod(obj,SCCM_TextWin_EndUpdate,ULONG RefreshFlag);


       FUNCTION
           Unlock window updates and optionally rebuild window contents.
       INPUTS
           RefreshFlag - if TRUE,
           forces window to perform SCCM_TextWin_ReAdjust.
       RESULT
           nothing
       SEE ALSO
           SCCM_TextWin_BeginUpdate


       NAME
           SCCM_TextWin_InsertIcon
       SYNOPSIS
       	DoMethod(obj,SCCM_TextWin_InsertIcon,struct ScaIconNode *in);


       FUNCTION
           The ScaIconNode is inserted into the text window icon list,
           according to the current sorting order.
           If an icon with the same name already exists, it is replaced.
       INPUTS
           in - ScaIconNode which is to inserted into the
           sorted icon list if the text window.
       RESULT
           nothing


       NAME
           SCCM_TextWin_ReAdjust
       SYNOPSIS
       	void DoMethod(obj,SCCM_TextWin_ReAdjust);


       FUNCTION
           Rebuilds text window. Entries are re-sorted, all column headers
           and text gadgets are redrawn and the scrollers are adjusted.
       INPUTS
           none
       RESULT
           nothing
       SEE ALSO



   --background
   SCCM_Title_Generate
   SCCM_Title_Query
   SCCM_Title_QueryTitle
   SCCM_Title_Translate


       NAME
           --background
           DESCRIPTION
           This class implements the screen title and window title functionality.


       TAGS
           SCCA_Title_Format (CONST_STRPTR) -- Format string for the title.
           This string is processed, replacing all the "%" variables
           with their values.
           Standard title variables:
           "%os" Kickstart release (e.g. "3.1")
           "%wb" Scalos release (e.g. "1.3")
           "%ov" Kickstart version (e.g. "40.68")
           "%wv" Scalos version (e.g. "40.6")
           "%fc" * Free chip RAM in bytes
           "%ff" * Free fast RAM in bytes
           "%ft" * Total free RAM in bytes
           "%pa" Window's path
           "%df" * Free disk space in bytes
           "%DF" Free disk space, displayed in GBytes/MBytes/KBytes
           "%du" * Used disk space in bytes
           "%DU" Used disk space, displayed in GBytes/MBytes/KBytes
           "%d(" start: don't show if no disk inserted
           "%d)" stop: don't show if no disk inserted
           "%dp" percentage of disk space used
           "%cs" Chip set
           "%cp" Processor
           "%pr" CoProzessor
           "%nt" number of tasks
           "%nl" number of libraries
           "%np" number of message ports
           "%nd" number of devices
           "%ns" number of screens
           Variables marked with "*" may optionally immediately be followed
           by a scaling modifier "0" .. "6" :
           0 Values is displayed in bytes.
           1 Values is displayed in KBytes.
           2 Values is displayed in MBytes.
           3 Values is displayed in GBytes.
           4 Values is displayed in TBytes.
           5 Values is displayed in PBytes.
           6 Values is displayed in HBytes.
           Applicability is (IS).


           SCCA_Title_Type (ULONG) -- type of title
           SCCV_Title_Type_Screen -- Screen title (default)
           SCCV_Title_Type_Window -- Window title
           Applicability is (I).


       NAME
           SCCM_Title_Generate
       SYNOPSIS
       	STRPTR GeneratedTitle = DoMethod(obj,SCCM_Title_Generate);


       FUNCTION
           Parses internal TitleFormat string and generates ready-to-use title
           text in internal buffer.
       INPUTS
           -
       RESULT
           GeneratedTitle - String pointer to generated title
       SEE ALSO


       NAME
           SCCM_Title_Query
       SYNOPSIS
       	BOOL NeedRefresh = DoMethod(obj,SCCM_Title_Query, UWORD ParseID);


       FUNCTION
           Check whether variable text has changed and needs to be refreshed.
       INPUTS
           ParseID - contains the two-character variable name, e.g. "os"
       RESULT
           NeedRefresh - non-zero value if title string has changed, i.e.
           needs to be refreshed.
       SEE ALSO


       NAME
           SCCM_Title_QueryTitle
       SYNOPSIS
       	BOOL NeedRefresh = DoMethod(obj,SCCM_Title_QueryTitle);


       FUNCTION
           Check whether title has changed and needs to bed refreshed.
       INPUTS
           -
       RESULT
           NeedRefresh - non-zero value if title string has changed, i.e.
           needs to be refreshed.
       SEE ALSO


       NAME
           SCCM_Title_Translate
       SYNOPSIS
       	BOOL Success = DoMethod(obj,SCCM_Title_Translate, STRPTR Buffer, 
       		CONST_STRPTR TitleFormat, UWORD ParseID, UWORD Length);


       FUNCTION
           Processes one title format variable and generates expanded text
           into buffer provided by caller.
       INPUTS
           Buffer - Pointer to a buffer where the expanded text will be stored.
           This pointer gets updated during method execution !!
           TitleFormat - pointer into title format string, immediately after the
           variable name.
           This pointer gets updated during method execution !!
           ParseID - contains the two-character variable name, e.g. "os"
           Length - The number of bytes that fit into Buffer. Beware of writing
           more than (Length) Bytes into Buffer!
       RESULT
           Success - a non-zero value indicates translation was successful.
           a zero value signals some kind of error (e.g. unknown
           ParseID or insufficient Length).
       SEE ALSO


preferences.library

[编辑 | 编辑源代码]

iconobject.library

[编辑 | 编辑源代码]

iconobject.datatype

[编辑 | 编辑源代码]

AROS 的技术概述

[编辑 | 编辑源代码]
Additions/changes:

 40.32	20040917	JL	- Bugfix: simple-refresh window redraw failed when 
				  issueing some menu commands, e.g. "open parent".
	20040908	JL	- Bugfix: renaming left-out icons sometimes caused random 
				  memory to be trashed. fixed.
				- Bugfix: renaming left-out icons caused Scalos processes 
				  to hang due to semaphore deadlocks.
				- Bugfix: cured semaphore deadlock that sometimes occured 
				  when automatic window update collided with some user 
				  action, e.g. opening a popup menu.
	20040828	JL	- Bugfix: with TrueType fonts, having one softlink in a 
				  text window caused all entries to be displayed underlined.
				- Added new internal commands "iconproperties" and 
				  "windowproperties" (Requires iconproperties.module 
				  and windowproperties.nodule).
				- Bugfix: drag&drop left garbage on screen if custom bob 
				  routines were used and "special" bob (e.g. "forbidden" 
				  or "copying") was visible and was larger than main bob.
	20040716	JL	- Added new qualifier during D&D to force moving of 
				  file system objects (instead of copying).
				- Implemented the long-planned "Create link" on D&D feature.
				- Bugfix: default icons were not shown transparent if 
				  D&D "real transparency" wasn't turned on.
	20040625	JL	- When copying icons, the "replace all", "skip all", 
				  and "abort" buttons of the overwrite request didn't work.
	20040612	JL	- Automatic update of windows caused enforcer hit and 
				  crashes if the modified files containes special 
				  pattern-matching characters in their names (e.g. "()[]#?|").
	20040602	JL	- Fixed long-standing bug that caused Scalos to lockup 
				  when an icon was selected while a new window was 
				  initially reading its icons.
				- About dialog sometimes opened with maximum screen width, 
				  but without any contents in the scrolling field. Fixed.
	20040527	JL	- Closing an icon window while it was initially reading 
				  its directory caused Enforcer hits and crashed 
				  Scalos. Fixed.
	20040523	JL	- Added TrueType font support. TT Fonts can be used for 
				  icons, text windows, tooltips, and the "About" window.
	20040519	JL	- Menu selection "leave out" (not from popup menu) 
				  caused enforcer hits when issued from "View all" 
				  text window. Fixed.
	20040425	JL	- Added CRC checks over prefs files. Now writing 
				  a prefs file only causes re-reading of prefs and 
				  reinitialization if file contents has actually changed.
	20040424	JL	- Disk Read-Only status display is now updated when 
				  disk is inserted.
	20040419	JL	- Icons without associated object were displayed 
				  incorrectly after window update. Fixed.
				- Bumped revision to 40.32.

 40.31	20040322	JL	- Default icons were not recognized on main window. This 
				  bug could show up after dragging default icons from 
				  some drawer window onto the desktop.
	20040221	JL	- Improved caching of filetype descriptors. With "env-handler", 
				  all filetypes were flushed from cache whenever a new 
				  filetype was loaded from ENVARC: to ENV:.
	20040216	JL	- Internal command "reset" didn't work correctly. Fixed.
	20040214	JL	- Icons were not updated correctly after change of file 
				  comment of rename with change of case 
				  only (e.g. "amiga" to "Amiga").
	20040211	JL	- Icon selection marks for popup menu could be drawn in 
				  incorrect window when "Apply to every selected icon" 
				  is enabled.
				- Fixed various problems with left-out icons (different 
				  icons with same name were not handled correctly, 
				  left-out icons were not updated as intended).
	20040210	JL	- "Mac-like selection" was broken. Fixed.
	20040206	JL	- "Snapshot window" didn't work if there was no 
				  icon present for window.
	20040126	JL	- Main window didn't allow multiple icons with same 
				  name (e.g. left-out icons from different paths). Fixed.
				- Bumped revision to 40.31.

 40.30	20040123	JL	- In "view all" text windows, "Leave out" icon "xxx" now 
				  removes both "xxx" and "xxx.info" from text window, and 
				  "Put away" causes both entries to reappear.
				- Now text window SCCM_IconWin_ReadIcon method correctly 
				  handles increase in column width.
				- All "cleanup**" menu commands are now disabled 
				  in text windows.
				- Fixed enable/disable state of "leave out" and "put away" 
				  menu commands for "view all" text windows.
				- "selectall" menu command is now disabled if 
				  all icons are selected.
				- "clearselection" menu command is now disabled if no 
				  icon is selected.
	20040122	JL	- Text windows now automatically update object associated 
				  entries if an icon is removed or added.
	20040118	JL	- Fixed internal locking during reading and parsing 
				  of Scalos filetypes descriptions.
				- AppIcons no longer can get "Default Icon" attribute.
	20040111	JL	- Default icons may be drawn with adjustable
				  degree of transparency.
				- Added support for MorphOS-style iconify gadgets. This 
				  fixed any visual distortion of iconify Gadgets under MorphOS.
	20040109	JL	- When loading default icons, Scalos now adds information 
				  about the original object (Path+Name) for usage by 
				  the iconobject datatypes.
	20040105	JL	- Made icon dd_Flags handling more flexible, so OS3.9 CD 
				  drawers open with correct viewmodes (WB handles 
				  invalid values of "3" like DDFLAGS_SHOWALL).
				- Scalos didn't handle default icons from icon drawer 
				  (e.g. def_drawer.info) correctly. Without separate 
				  DefIcons installed, only the icon.library built-in 
				  icons were used.
	20040104	JL	- Added "skip all" gadget to standard copy/move 
				  "replace" dialog.
				- Fixed enforcer hits/crashes when starting Scalos 
				  while Scalos is already running.
				- Added new ScalosControlA() tags 
				  SCALOSCTRLA_GetCopyBuffSize and 
				  SCALOSCTRLA_SetCopyBuffSize.
	20040101	JL	- Added preferences item to set default stack size.
				- FileTypes code assumed that popupmenu.library was open, 
				  leading to crashes on machines where that library was 
				  not installed.
				- Bumped revision to 40.30.
		
 40.29	20031230	JL	- Added full support for alpha channel icon drawing, 
				  including drag&drop ("Custom" bob routines only).
				- Memory for default action in filetype descriptions was 
				  freed while not in use. Fixed.
				- Filetype descriptions are now cached, in order to 
				  improve performance.
				- Starting WB programs left 2 locks dangling. Fixed.
	20031226	JL	- updated "%os" title function to recognize OS 3.5 
				  and OS 3.9.
				- Made localizable string for "BUSY" disks.
				- Popupmenu items now show default action (the action 
				  that is taken upon double-click) in bold text.
	20031222	JL	- Optimization of Drag-and-Drop bobs was broken, leading 
				  to very sluggish drawing of bobs when dragging 
				  multiple icons.
	20031208	JL	- Changed directory for Scalos filetype descriptors
				  from "Scalos:FileTypes/" to "ENV:Scalos/FileTypes/". For 
				  compatibility, Scalos still looks in the old place if the
				  new directory cannot be found.
	20031202	JL	- In Text window, icon update erroneously changed type 
				  from "WBGARBAGE" to "WBDRAWER".
	20031117	JL	- Fixed incorrect update of icons in text windows 
				  in "view all" mode.
	20030727	JL	- To provide a visual hint that popup menu commands only 
				  apply to the icon under the pointer, all other selected 
				  icons are temporarily deselected while the popup menu 
				  is open.
				- Added keyboard qualifier to apply popup menu commands to 
				  every selected icon, instead of only the icon under 
				  the mouse pointer.
	20030711	JL	- Fixed long delay upon startup when splash window was 
				  turned off.
				- Bugfix: selecting an icon in one window, then changing 
				  to another window, and hitting "enter" caused Scalos 
				  to crash with "invalid semaphore state" errors.
	20030628	JL	- Fixed several memory leaks associated with 
				  filetype-dependent popup menus and tooltips.
	20030618	JL	- In Window popup menus, "view by text/name" never 
				  displayed a checkmark.
	20030616	JL	- Drawers opened from text view windows did not correctly 
				  inherit the "view all" attribute.
				- Corrected minor typo in About window "100%" was lacking 
				  the percent sign.
	20030615	JL	- Bumped revision to 40.29.
		

 40.28	20030612	JL	- Major improvement in text view window update - now works 
				  the same way as icon window update, only the changed 
				  items are redrawn.
	20030531	JL	- Bugfix; In text view windows, it was erronously 
				  possible to "snapshot" and "unsnapshot" icons. 
	20030529	JL	- Bugfix: In text view windows, no file comments 
				  were displayed.
	20030525	JL	- In text view windows, Scalos had problems recognizing 
				  default tool entries for project icons. Fixed.
	20030517	JL	- Text icon IDTA_Type returned wrong icon type 
				  for WBGARBAGE (Trashcan) icons.
	20030502	JL	- Major improvements to SCA_OpenIconWindow(). Now Scalos 
				  tries hard to find the appropriate icon for the window 
				  to be opened. If an icon is to be found, the window 
				  settings are taken from the icon.
	20030423	JL	- Text windows didn't recognize window resize events 
				  during reading of icons. Fixed.
	20030421	JL	- Rewrote context-sensitive disabling of menu items.
	20030420	JL	- Added requester to ask user what to do when a project 
				  icon without default tool is encountered.
				 - Added Polish catalog to developer archive, translation 
				   by Paweî Szczodry.
	20030418	JL	- Fixed file count routine in filetransclass. The bug 
				  caused incorrect calculation of total byte/item count 
				  and lead to display of more than 100% completion with 
				  nonsense values for "remaining time".
				- Removed display of every single item copied in 
				  filetrans copy/move requester. This optimization greatly 
				  improved copying speed.
	20030327	JL	- Added new method "SCCM_FileTrans_OverwriteRequest"
				  for FileTrans.sca class.
	20030301	JL	- Bugfix: Filetype wasn't set correctly for trashcan.
				- Bugfix: AsyncWB hook wasn't called correctly 
				  for "Empty Trashcan".
	20030218	JL	- Bugfix: Program name wasn't handed over to 
				  execute_command.module on icon double-click.
	20030216	JL	- Bugfix: Improved window clipping, now application-drawn 
				  AppIcons no longer draw across non-backdrop Workbench 
				  window border.
	20030211	JL	- Bugfix: When a drawer window was created in iconified 
				  state, it could not be uniconified by double-clicking 
				  its parent drawer.
	20030208	JL	- Bugfix: In 40.27, WBStartup execution of ARexx type 
				  icons was broken. Fixed.
				- Feature: Added display of estimated remaining 
				  time to file copy/move progress dialog.
				- Bumped revision to 40.28.
			
 40.27	20030130	JL	- Bugfix: Window backfill pattern re-layout didn't occur 
				  when "backdrop" was turned on and off.
	20030129	JL	- Bugfix: fixed enforcer hits/crashes during window 
				  zoom/resize when "always relayout" was enabled (code 
				  tried to use ptn_bitmap after FreeBitMap()).
	20030126	JL	- Bugfix: added locking mechanism for asynchronous 
				  backfill to avoid crashes when windows are closed while 
				  async backfill process hasn't finished.
	20030118	JL	- Bugfix: fixed enforcer hits when CLI project icon 
				  contained no default tool.
				- Improvement: Program list now contains full path for 
				  each program started instead of only program name.
				- New feature: Added SCA_ScalosControl() subcommand to 
				  get/free list of menu commands.
	20030111	JL	- Bugfix: Cut+Paste didn't work when AsyncWB was 
				  installed. Fixed.
				- New features: Added new FONT and VALIGN attributes 
				  to TOOLTIP STRING.
				- Bumped revision to 40.27.
		
 40.26	20030104	JL	- Bugfix: "about" produced 2 enforcer hits when no 
				  Scalos logo found.
				- Bugfix: Splash resizing / text positioning was broken 
				  when no Scalos logo was found.
				- Bugfix: window process hung when one of the standard 
				  modules could not be started.
	20030103	JL	- Bugfix: Snapshotting a window which had no icon created 
				  an ".info" instead of an icon with the drawer's name.
				- Bugfix: Windows with virtual width or height > 32768 
				  could produce problems from graphical screen 
				  corruption to system crash.
	20030102	JL	- New feature: Icon tooltips can now be user-defined in 
				  the file type description files. Scalos now supports 
				  file type information plugins, e.g. to display size 
				  information about image files.
	20021221	JL	- Bugfix: During file copy operations, icons could be 
				  overwritten without warning.
	20021209	JL	- Bugfix: TextInputHook wasn't used to run program 
				  without icon - instead always execute_command.module 
				  was called.
				- Bugfix: automatic disabling didn't work for some 
				  main menu items (e.g. "sizetofit" didn't get disabled 
				  in backdrop root window).
				- Bumped revision to 40.26.
			
			
 40.25	20021206	JL	- Added "viewbytype", "cleanupbyname", "cleanupbydate", 
				  "cleanupbysize", and "cleanupbytype" menu commands.
	20021205	JL	- Fixed Enforcer hits which occured when an ARexx program 
				  ended that had been started from an icon window, and 
				  the icon window had been closed.
	20021130	JL	- Added support for cyling through icons in window 
				  via TAB key.
				- Rebuilt about window code to make use of the 
				  TT layout engine.
				- Fixed bug in SCA_SortNode() - lists with less than 
				  3 entries were not sorted.
	20021116	JL	- Fixed broken close-window abort recognition during 
				  GenerateIcons() icon drawing in window.
	20021019	JL	- The user-defined path for default icons was never 
				  used for iconified Scalos window icons. Now it is taken 
				  as fall-back if there are no theme-specific icons.
	20021018	JL	- Changed sizing method for splash window.
	20021014	JL	- Added new methods SCCM_AddToClipboard and 
				  SCCM_ClearClipboard to root class.
	20021013	JL	- Copy/paste didn't work for volumes/disks. Fixed.
				- Fixed another source for erroneous error messages 
				  during SCCM_FileTrans_Copy and SCCM_FileTrans_Move 
				  operations.
	20021009	JL	- Changes in icon font were not recognized in desktop 
				  window. Fixed.
				- The menu "copy" and "paste" commands trashed the 
				  destination file name. Fixed.
	20021008	JL	- Fixed some enforcer hits and crashed when selecting 
				  some device icons, and then pressing "enter" twice.
	20021006	JL	- Changed location of icons for iconified Scalos window 
				  from "ENV:Sys/def_iconify" to "THEME:window/def_iconify".
				- LoadWB.scalos now waits until Scalos opens its first
				  window on the Workbench screen before exiting.
				- Now Scalos first tries to load deficons from 
				  "THEME:DefIcons/". If that fails, the standard 
				  path "ENV:Sys/" is used.
	20021003	JL	- Now uses "titlebarimageclass" for iconify 
				  image if available.
				- changed all makefiles to work with GNU make.
				- Bumped revision to 40.25.
			
			
 40.24	20021003	JL	- Fixed broken ARexx menu command support.
	20021003	JL	- Major improvement of Tooltip layout engine.
				- Added tooltips for several Scalos gadgets, including 
				  the status bar images.
	20020929	JL	- Fixed menu bug where every menu item got a hotkey
				  mark. Now only the menu items which have got hotkeys
				  are shown with hotkey marks.
				- Icon positions were messed up during "cut", "copy" 
				  and "paste" operations. Fixed.
				- Changed file name for default device icons from 
				  ".info" to "def_.info" in 
				  order to match OS3.9 behaviour.
				- Changed file name for default volume icons from 
				  ".info" to "def_.info" in 
				  order to match OS3.9 behaviour.
				- Added missing SHADOWPEN vertical line to the left 
				  of the window iconify image.
				- The assign "THEME:" isn't touched any more if 
				  it exists prior to Scalos startup.
				- The assign "Scalos:" is created (pointing to PROGDIR:) 
				  on startup if it doesn't exist.
				- Tooltips are no longer displayed if ICandy == 0.
				- Bumped revision to 40.24.
			
			
 40.23	20020928	JL	- Improved handling of "cut" icons (shadowed display got 
				  corrupted). Needs iconobject.datatype 40.7 .
	20020926	JL	- Fixed bug that caused Scalos to crash when an icon
				  was removed during Drag&Drop (e.g. an AppIcon was 
				  removed by its application).
	20020923	JL	- Changed default setting for icon frame type from 
				  MF_FRAME_BUTTON to MF_FRAME_NONE.
	20020921	JL	- Moved special pointer icons ("forbidden", "copying", 
				  "makelink") from ENV:Scalos/ to THEME:PointerIcons/.
	20020915	JL	- Environment variable "scalos/icandy" is recognized
				  if set before Scalos startup. ATM, icandy < 2 turns
				  off splash screen and window status bars.
				  If not set, "Scalos/icandy" gets set with a default
				  value of "2".
	20020914	JL	- Changing "Fullbench" and "Poptitle" now works 
				  on-the-fly and doesn't require rebooting anymore.
				- Locale (language) preferences can now be changed 
				  on-the-fly, no reboot required anymore.
	20020913	JL	- Fixed erronous message "This drawer cannot be opened"
				  when trying to open a drawer which is already open.
	20020831	JL	- Icon position now always is set to NO_ICON_POSITION
				  for default icons loaded via DefIcons.
	20020825	JL	- Changed default for Workbench "backdrop" to TRUE.
				- Changed tool tip placement - now tool tips are displayed
				  below mouse pointer if space allows.
	20020822	JL	- Added optional process priority field for filetype 
				  specific popup menu commands.
	20020817	JL	- Bugfix in FileCommands.c: since ExNext() result
				  ERROR_NO_MORE_ENTRIES was erronously remembered as
				  error, an incorrect error reason could be displayed 
				  when a "real" error occured.
				- Bumped revision to 40.23.
			
			
 40.22	20020812	JL	- Bugfix with "Show All" windows: icon list was read
				  before window was opened, leading to problems with
				  icon layout (invisible icons).
	20020803	JL	- Fixed problems with file type-specific popup menus 
				  and STACK parameter.
	20020801	JL	- Finished conversion of Scalos Pattern Prefs 
				  from ASM to C.
	20020720	JL	- First implementation of new filetype-specific popup 
				  menu system.
				- Removed obsoleted scalos.library 
				  function SCA_RemapBitmap().
	20020711	JL	- CheckMouseIcon() didn't take window borders into 
				  account, i.e. clicking on window border could cause
				  icon to be selected.
	20020703	JL	- Text icon font changes now take effect immediately,
				  Reboot is not required anymore.
	20020624	JL	- Fixed problem in wbl.c - spawned processes incorrectly
				  inherited the ConsoleTask pointer.
	20020623	JL	- Now SCCM_IconWin_Redraw also refreshes window frame
				  and status bar.
	20020622	JL	- Added image "THEME:Window/StatusBar/ShowAll" to status
				  bar, which visualises the "Show All Files" window 
				  setting.
	20020612	JL	- Fixed bug introduced by optimized pen allocation.
	20020601	JL	- Improved pen allocation in LockScalosPens() - pens 
				  which are members of dri_Pens are no longer allocated 
				  a second time.
				- Upon startup, Scalos should give a warning Requester 
				  if not all defined pens could be allocated.
	20020529	dm	- Finished converting cleanup code to C.
	20020526	JL	- Fixed bug in the scalos.library expunge code which was 
				  trying to FreeMem() an incorrect library base pointer 
				  when quitting Scalos.
				- When "quit Scalos" is requested, memory is flushed 
				  before checking scalos.library open count, so unused
				  libraries still resident in memory no longer prevent 
				  Scalos from closing.
				- Added optional background image for tooltips 
				  "THEME:TooltipBackground".
				- Added optional background image for window status bar
				  "THEME:Window/StatusBar/Background".
				- Added forgotten "PDTA_DestMode, PMODE_V43" in about.c
				  and GadgetBarImageClass.c. Now the entries for the 
				  Scalos processes in "PicTD" prefs are no longer required.
	20020525	JL	- Fixed a serious bug in the new C SCA_MoveNode() function 
				  which caused Scalos to crash when trying to "cleanup" a 
				  window which had already been cleaned up.
	20020513	JL	- Fixed an icon drag bug: When an icon was clicked with LMB 
				  and the mouse button held for several seconds without 
				  moving the icon, a DisplayBeep() was triggered when the
				  mouse button was released.
	20020504	JL	- Many minor changes to allow Scalos to cpiled with GCC.
				- Replaced handmade CLI startup detaching code by standard
				  cback.o and detach.o mdoules.
	20020414	JL	- Corrected error in scalos_lib.sfd - order of parameters 
				  for SCA_WBStartTags() was incorrect.
	20020412	JL	- When icons were selected purely via keyboard, the
				  "IconActive" variable was not updated and selected 
				  icons could not be opened by pressing "return".
				- When trying to open an disk/drawer icon via wb39/ARexx, 
				  under certain circumstances the Scalos main task could 
				  hang, waiting for a message reply. Fixed.
	20020405	JL	- When prefEnableSplash was turned off after splash window 
				  has opened, the splash window never closed. Fixed.
				- After removing an entry from the hidden device list,
				  that device used to appear multiple times on the Scalos
				  screen. Fixed.
	20020404	JL	- When AppIcon was replaced via AppChange, Scalos tried 
				  to free invalid memory while removing AppIcon. Fixed.
	20020403	JL	- ScalosMain() was called with seglist in d1 instead of 
				  d0, leading to enforcer hits or crash on exit when 
				  started from workbench via icon double-click.
				- Bumped revision to 40.22.
			
			
 40.21	20020402	JL	- Fixed lockup problem when a window opened or closed 
				  during drag/drop operations.
	20020329	JL	- Fixed problem in scalos library code - Expunge() never 
				  got called.
				- Fixed init problem with prefTextModeTextAttr.ta_Name, 
				  after unsuccessful startup, Scalos tried to 
				  FreeVecPooled() static string.
				- Added safeguard to AllocVecPooled() and FreeVecPooled() 
				  against being called with MemPool of NULL.
	20020309	JL	- SCCM_DeviceList_Generate now works fully asynchronous way, 
				  avoiding most sources of hangs connected to weird 
				  file systems.
	20020212	JL	- Finished converting Scalos startup and shutdown code to C.
	20020209	JL	- DefIcons support now integrated into Scalos, including 
				  automatic reload of DefIcons.prefs after 
				  external changes. Filetypes.plugin and Deficons.plugin 
				  are now obsolete.
	20020204	JL	- Programs started by Scalos were never removed from the 
				  internal program list. Fixed.
	20020203	JL	- Now displays message on screen title when user tries to 
				  double-click a drawer icon without associated directory.
	20020202	JL	- ToolTip sometimes didn't show used/total/percent 
				  correctly for disk icons. Fixed.
				- Bumped revision to 40.21.
			
			
 40.20	20020201	JL	- Dragged icons were corrupted on screens with 
				  interleaved bitmaps. Fixed.
				- Dragging icons with text didn't always work, depending 
				  on icon text colour settings. Fixed.
	20020127	JL	- UnSnapshot function was thoroughly broken - Should now 
				  again work as expected.
	20020126	JL	- Now supports adding submenus and new menus 
				  via SCA_NewAddAppMenuItem().
				- The Rename() patch now tries to update (i.e. remove) 
				  the old object's icon.
				- CopyCommand() now quietly returns OK if source of copy 
				  operation cannot be found, so copying of orphan icons 
				  (icons w/o associated objects) should work now.
	20020125	JL	- Plugged memory leak when reloading menu prefs.
				- Bumped revision to 40.20.
			
			
 40.19	20020121	JL	- Snapshot/Unsnapshot didn't free Lock on icons. Fixed.
				- Unsnapshot failed to move icon to wt_LateIconList. Fixed.
	20020119	JL	- ReLayoutIcons() forgot to update IDTA_TextPenShadow and 
				  IDTA_TextPenOutline pens. Fixed.
				- SCA_ScreenTitleMsg() was broken and couldn't display 
				  the last message. Fixed.
	20020115	JL	- Fixed problem in DragDropBobs.c : newiconobject.library 
				  didn't return image mask for special icons because 
				  IDTM_Layout was only called for normal image and 
				  IDTM_Mask_Selected was requested. Fixed.
	20020114	JL	- Fixed problem with MOS and SameLock() NULL Locks in 
				  Functions.c. Now it should be possible to open SYS: 
				  volume.
				- Bumped revision to 40.19.
			
		
 40.18	20020113	JL	- Undid most changes in DragDropBobs.c from 40.17. Now 
				  frames around icons work in a more compatible way, 
				  together with 40.2 icon datatypes.
	20020109	JL	- Commands "rename", "execute", "newdrawer" now support 
				  global TextInputHook.
	20020107	JL	- Built .sfd files for all Scalos components. All pragma 
				  and proto includes and .fd files are now created 
				  from those .sfd files.
	20020106	JL	- Several window backfill functions didn't check properly 
				  for non-existing background images (FileTransfer, 
				  Splash). Fixed.
				- INF_File was not set for text icons when file system 
				  returned non-standard fib_DirEntryType. Now INF_File is 
				  always set if fib_DirEntryType < 0.
				- The PenArray delivered by the workbench OpenScreen patch 
				  always contained -1 in the first entry, rendering it 
				  pretty useless. Fixed.
				- Adapted to now (NDK3.9) officially supported Workbench 
				  hooks (CopyHook, DeleteHook, SetupCleanupHook).
				- Now requires includes Release 45.1 to compile.
				- "Empty Trash" menu command now uses DeleteHook 
				  if available.
				- The PenArray delivered by the workbench OpenScreen patch 
				  always contained -1 in the first entry, rendering it 
				  pretty useless. Fixed.
	20020105	JL	- When changing icon attributes (e.g. border), AppIcons 
				  didn't get refreshed properly. Fixed.
	20020104	JL	- Automatic icon update on file system notification didn't 
				  work properly for left-out icons. Fixed.
				- Bumped revision to 40.18.
		
		
 40.17	20020101	JL	- Added separate pens for selected icon text, icon text 
				  outline, and icon text shadow.
	20011231	JL	- Several changes in DragDropBobs.c to enable frames 
				  around masked icons. Requires latest icon datatypes!!!
	20011229	JL	- Device icons got a name of "" (empty string) when tool
				  type SCALOS_NOTEXT was found, whereas other 
				  icons got NULL. Fixed.
	20011228	JL	- When Scalos tries to quit and there were still foreign 
				  windows on WB screen, a retry requester occurs. After 
				  clicking "Retry", Scalos tried to free PenShareMap more 
				  than once. Fixed.
	20011225	JL	- Non-DOS disk icons are now ghosted (just like WB3.9).
				- Many menu items (e.g. "Open", "Information") are now 
				  disabled for non-DOS disks.
				- Unreadable disks are now labeled as "DF0:Unreadable" 
				  instead of "DF0:????".
	20011221	JL	- OpenWorkBench() return ULONG instead of Workbench screen
				  address in case of success. Fixed.
				- Window status bar text now always uses text window font.
	20011215	JL	- Many changes and fixes in FileCommand.c (File 
				  moving/copying code). Moving objects to a different 
				  volume (copy-and-delete) now works.
	20011214	JL	- Added timeout (default=10s) to file transfer counting.
				- Added Win***s-like "Copy", "Cut", "Paste" menu commands 
				  to transfer files.
	20011213	JL	- Added workaround kludge for broken "delete.module" 
				  implementations that rely on wa_Name being empty 
				  for directories.
				- Fixed a memory trashing bug in CLIStart(). Only occured 
				  when file name was longer than default tool name.
	20011212	JL	- LeaveOutIcon() trashed the CurrentDir of the Scalos 
				  window task. Fixed.
				- Scalos window tasks now have their directory namess 
				  appended to the task name, 
				  e.g. "Scalos_Window_Task ".
				- (old) SCA_RemoveAppObject() failed to remove icons in 
				  wt_LateIconList, leading to crashes with MUI 
				  applications on CloseWorkBench()/OpenWorkBench(). Fixed.
				- Added new pen for status bar text.
	20011208	JL	- Popup menus now can also be opened by keyboard
				  (Right Alt +Right Amiga).
				- SCCM_IconWin_CheckUpdate did not recognize changes 
				  between default icon and non-default icon (e.g. an icon
				  associated to an object was deleted - display didn't 
				  change). Fixed.
				- Added optional THEME:FileTransBackground background 
				  image to copy/move progress window.
				- Display of window drop marks is now settable into 3 
				  modes - none, non-backdrop windows only, always.
				- Added GBTDTA_SoftStyle to set text style 
				  for GadgetBarTextClass gadgets.
				- Bumped revision to 40.17.
		
		
 40.16	20011207	JL	- Scalos.c/RefreshTextWindow didn't check if window 
				  exists. Fixed.
				- Scalos.c/ReportError didn't propagate RESULT_UserAborted
				  if the user clicked the "Abort" button. Should 
				  be fixed now.
				- Major rewrite of FileTransfer class. Redesigned 
				  copy/move progress window with progress gauge and 
				  cancel button.
	20011205	JL	- Fixed another bug in window backfilling - filled area 
				  was exactly 1 pixel too small in x- and y-direction.
				- With window scrollbar arrows, the detection of shift 
				  key was reversed. Fixed.
				- Changed scrolling step for window scrollbar arrows 
				  to 10 pixel.
	20011204	JL	- Added SCCM_IconWin_AddToStatusBar, 
				  SCCM_IconWin_RemFromStatusBar, and 
				  SCCM_IconWin_UpdateStatusBar methods to make status bar
				  interfacing easier.
				- More changes in OpenWorkBench() / CloseWorkBench(). Now
				  also uses icon.library V44+ ICONCTRLA_SetGlobalScreen 
				  tag. Closing/reopening Scalos (e.g. via screen mode 
				  change) should now work.
	20011203	JL	- Rewrote OpenWorkBench() / CloseWorkBench() patches in C.
				  Problems with wrong colors after OpenWorkBench() should 
				  now be fixed.
	20011202	JL	- Added support for WB3.9-compatible (undocumented) 
				  CloseWB hook. Now e.g. AmiDock iconifies automagically 
				  on CloseWorkbench() and uniconifies afer OpenWorkBench().
				- With status bar enabled, Scalos window heights grew 
				  each time a window was iconified and re-opened. Fixed.
	20011201	JL	- Fixed broken FreePatternNode() - now reloading pattern 
				  prefs should work again.
				- Finally fixed long-standing bug in icon update code 
				  that sometimes lead to duplicate icons.
	20011130	JL	- Disk without icons now get default icon of type WBDISK 
				  instead of WBKICK.
				- Fixed problem with removed nodes in 
				  SCCM_DeviceList_Generate, leading to corrupted device 
				  icon list.
	20011129	JL	- Added file version information to tooltips.
	20011128	JL	- Implemented global copy and delete hooks for 
				  compatibility with AsyncWB.
				- Fixed inverted NoRemap checking in backfill functions.
	20011127	JL	- Finished converting all menu functions to C.
	20011124	JL	- Fixed wrong SCA_FreeNode() parameter 
				  in DevListClass_Generate().
				- LockScalosPens() produces lots of enforcer hits when 
				  no palette prefs could be found. Fixed.
	20011123	JL	- Finished converting all IDCMP handlers to C.
	20011120	JL	- Completed converting window background rendering 
				  code to C.
	20011117	JL	- Menu command "backdrop" didn't work. Fixed.
	20011116	JL	- Fixed missing Argument for WaitReply() in A5. This 
				  resulted in crashes when running modules with simple 
				  refresh windows.
				- Bumped revision to 40.16.
			
		
 40.15	20011113	JL	- INF_File was not set for backdrop icons. Fixed.
				- Devices are now counted and displayed separately 
				  during D&D.
	20011112	JL	- Changed screen pop-title algorithm so it should always 
				  get switched on if necessary.
				- Changed rendering of Logo in splash window back from 
				  DTM_DRAW to blitting functions.
				- Fixed error in DevListClass_Filter() - missing 
				  parentheses lead to wrong exception calculation.
				- Bumped revision to 40.15.
		
		
 40.15	20011112	JL	- Changed path for status bar images 
				  to "THEME:Window/StatusBar/".
	20011111	JL	- Added SCA_NoStatusBar attribute to SCA_OpenWindow() 
				  library function and SCALOS_NOSTATUSBAR tooltype to 
				  suppress status bar display on a single window.
	20011110	JL	- Fixed most serious error : failed to reserve memory for 
				  IconWindowClass instance data.
	20011108	JL	- Fixed wrong position for "iconify" gadget (overlapped 
				  zip gadget).
				- Horizontal scroller height was too small. Fixed.
				- Added special detection of Screen titlebar to circumvent 
				  problem with MagicMenu which lead to screen bar staying 
				  visible in spite of cleared SHOWTITLE flag.
	20011107	JL	- Added "Typing" symbol to status bar.
				- Icon selection by typing icon name didn't work for 
				  AppIcons and device icons. Fixed.
				- Removed LockIBase() in Window.c/QueryObjectUnderPointer(),
				  hopefully avoiding window lockups.
				- Converted automatic Screen bar switching code to C (see 
				  Scalos_Cx.c). Added additional checks for locked Layers 
				  to avoid deadlocks.
	20011106	DM		- Added two new preference variables, prefWindowHScroll and
				  prefWindowVScroll for the default distances of scrolling
				  icon windows by the keyboard (main_prefs.s, variables.h,
				  imports.i, exports.i).
				- Added parts of cleanup code converted to C to the source files
				  (cleanup.c, main_subroutines.s)
				- Added two missing includes to scalos_structures.h file
				  (graphics/gels.h and workbench/startup.h)
				- Can use shift+cursor keys in icon windows to scroll by a whole
				  page (well, inner height and width of icon window - IconWindowClass.c)
				- Can also use Return to open active icon in icon windows
				  (IconWindowClass.c)
				- Fixed problem with reading Workbench preferences and then showing
					  Scalos main window in wrong mode/sizes (WindowClass.c)
	20011104	JL	- Icon menu didn't get enabled when icon was selected via 
				  keyboard input (first letter(s) of icon name). Fixed.
	20011102	JL	- Replaced blitting function in Splash.c by DTM_DRAW.
				- Fixed old problems with pen allocations - ObtainPen() 
				  didn't check for success.
	20011101	JL	- Bumped revision to 40.14.
		
		
 40.13	20011020	JL	- During D&D, window dropmarks are no longer erased when 
				  mouse is over icon, but remain visible until mouse 
				  leaves window.
				- Added SCALOSCTRLA_GetEmulationMode tag 
				  for ScalosControl().
	20011013	JL	- Now MenuItems get disabled if they have SubItems and 
				  every SubItem is disabled.
				- Since redrawing of partially overlapped icons seems to 
				  work well, I disabled the strict icon overlap checking 
				  while D&D.
	20011012	JL	- Added support for AppIcons sending select/unselect 
				  notification messages and 
				  WBAPPICONA_NotifySelectState tag.
				- CLIStart() didn't work with WBPROJECT icons. Fixed.
	20011011	JL	- Icon window crashed after D&D when redrawing previously 
				  obscured icons - Fixed.
				- Sometimes IDCMP_INTUITICKS messages were not 
				  replied. Fixed.
				- Automatic change of default window patterns failed when 
				  switching between icon and text mode. Pattern numbers 
				  sometimes were treated as unsigned instead of signed 
				  numbers. Fixed.
	20011010	JL	- Added new Tags SCALOSCTRLA_GetTypeRestartTime and
				  SCALOSCTRLA_SetTypeRestartTime for ScalosControl().
	20011008	JL	- Menu commands "snapshotwindow" and "snapshotall" stayed 
				  disabled forever. Fixed name compare error 
				  in Prefs.c/CompareCommand().
				- Replaced remaining 64bit integer arithmetic code 
				  by C version.
	20011007	JL	- Finished converting "Title.sca" to C.
				- Updated SCA_Title" autodocs for "Title.sca" class.
	20011006	JL	- Finished converting "FileTransfer.sca" to C.
	20011005	JL	- Replaced fixed version/revision strings in about window 
				  by text macros "%v" and "%r".
				- Added feature: Icons may now be selected by typing the 
				  first character(s) of their names, just as in WB 3.9.
				- Added feature: Cursors key can be used to select icon 
				  right/left/below/above the currently selected one.
				- Finished converting "DeviceList.SCA" to C.
	20011005	JL	- Bumped revision to 40.13.
			
			
 40.12	20011004	JL	- When converting WindowClass to C, I somehow dropped one 
				  line of code and forgot to clear a window's UserPort 
				  before closing the window. So it could happen that 
				  IntuiMessages in the wt_IconPort already had got freed 
				  by Intuition on closing the corresponding window, 
				  leading to corrupted messages.
	20011001	JL	- SCA_WBStart() didn't work for icons with "CLI" or 
				  "REXX" tooltypes. Fixed.
	20010930	JL	- Wbstartup sometimes skiped icons with free 
				  positions (Unshapshot). Fixed.
	20010929	JL	- Finished converting Root class to C.
	20010928	JL	- Now all window, menu and wbl processes inherit the 
				  original workbench path.
	20010926	JL	- Added support for WBAPPMENUA_CommandKeyString (OS3.9) 
				  and separator bars to SCA_NewAddAppMenuItem().
	20010924	JL	- Finished converting TextWindow class to C.
	20010922	JL	- Finished converting IconWindow class to C.
	20010916	JL	- Finally fixed long-standing problems with simultaneous 
				  multiple window updates (Enforcer hits, icons 
				  appearing twice, etc.).
	20010910	JL	- Fixed problem reading large directories containing icons with 
				  both fixed and free positions. Icons with "free" 
				  positions were placed at the end of each block read, and 
				  could be overlapped by an icon read later with a fixed position.
	20010908	JL	- Bumped revision to 40.12.

 40.11	20010907	JL	- In Icon windows, icons without associated objects were not 
				  displayed with "Show all files" setting. Fixed.
	20010906	JL	- Text windows now show "Trashcan" in size column for 
				  trashcan drawers.
				- Icons of type WBDISK are hidden in text windows with 
				  "Show only icons".
	20010904	JL	- Major changes in text window directory scanning. Now 
				  icons without associated object are displayed in text 
				  windows with "Show only icons".
	20010903	JL	- Text windows now show "Drawer" in the size column for drawers.
	20010902	JL	- Changed number format for file sizes to "%lU", using localized
				  display format.
				- Finished converting window class to C.
				- Finished converting text icon class to C.
	20010901	JL	- Deleting left-out object now always updates ".backdrop" files.
				- Left-out icons got the "put away" menu item disabled when 
				  updated (e.g. by adding tooltypes). Fixed.
	20010831	JL	- Windows can now be scrolled with the arrow keys (only if no
				  icons are selected in window).
	20010830	JL	- Did some changes to the asm class macros to make the class
				  engine more "C-friendly".
	20010828	JL	- Moved Scalos .catalog files in archive from catalogs//
				  to catalogs//Scalos/.
				- Now .catalog files are ignored if their version is <40, avoiding
				  trouble with wrong messages.
	20010819	JL	- Added distinct pens for the dragging info text.
				- Additional checks on plugin initialization - Now erroneously 
				  added menu plugins should no longer cause Scalos to crash on startup.
				- CloseWorkBench() from VisualPrefs Task didn't work. Fixed.
				- CloseWorkBench() will not close Scalos while there are 
				  active "Scalos_Async_Backfill" processes.
				- Bumped revision to 40.11.

 40.10	20010817	JL	- Repaired bug in updateicon which sometimes caused icons to 
				  appear in incorrect windows.
	20010815	JL	- Duplicating/cloning items now pops up the file copying progress 
				  window.
				- Dragging multiple icons now shows one or two text lines under pointer 
				  telling how many files and drawers are being dragged.
				- Fixed severe bug in wbl.c : WBNode's were allocated with AllocVecPooled()
				  and freed with FreeVec().
	20010814	JL	- Added a varargs version of SCA_ScreenTitleMsg().
				- Added flag to switch between Flag: old dragging (all 
				  icons visible) and new "icon stack".
				- Added new SCA_ScalosControl() tags 
				  SCALOSCTRLA_GetOldDragIconMode
				  and SCALOSCTRLA_SetOldDragIconMode.
				- IconWinCheckUpdate() now correctly updates INF_DefaultIcon 
				  flag and INF_SupportsLeaveOut attribute.
	20010811	JL	- Missed a CurrentDir() when renaming objects, leading 
				  to a directory lock getting never UnLock()ed.
				- When D&D copying or moving icons, "Replace All" and 
				  "Abort" now should work correctly.
				- Message strings "xxx already exists" are now different
				  when moving and copying objects.
				- When moving icons inside window and new position overlaps 
				  other icon, the moved icons now jump back to their 
				  original positions.
				- Bumped revision to 40.10.

 40.9	20010811	JL	- THEME:SplashBackground was never freed, leaving a 
				  Lock on it. Fixed.
				- CLI and ARexx default tools icons didn't work 
				  in text windows. fixed.
	20010809	JL	- Enabled deadlock detection for lasso operations.
	20010808	JL	- Additional check for NULL wt_LateIconList in cleanup().
				- Text windows now again display "#?.info" files (icons).
				- Forbid drag-copying or -moving icon into own sibling 
				  window or on sibling icon to avoid move errors 
				  or endless recursion.
	20010807	JL	- Fixed multiple problems with text window updates.
	20010806	JL	- Added semaphore locking to protect from two or more Scalos 
				  tasks opening or closing windows at the same time.
				- Fixed broken "copy by dragging on drawer icon".
				- Added additional checking to prefs file notification.
				- Bumped revision to 40.9.

 40.8	20010804	JL	- Worked around semaphore deadlock in SetIconMenuOnOff(). This 
				  one occured when copying multiple directories between 
				  text windows.
	20010803	JL	- Copying/moving of (left-out) drawers, tools, or projects 
				  from main window to any drawer window didn't work. Fixed.
				- Dragging a device icon into an icon window (copying device 
				  into directory) no longer results in requester "DEVICE: 
				  already exists ....".
				- Bug #29 : Dragging a device icon into an icon window where 
				  a drawer with the name of the device (w/o ":") already 
				  existed: Nothing happened. Fixed.
				- left-out icons no longer show up in text icon windows.
				- "leave out" and "put away" now correctly update text windows.
				- Increased size of text window + tooltip date and time fields 
				  from 16 to 80 bytes.
				- Added date/time string length checking to ScaFormatDate().
	20010802	JL	- Fixed a race condition between DrawDrag() and DragEnter() that
				  could block window when trying to auto-remove icons.
				- Finally fixed icon masking problem with PAL Hires-Laced screen. When 
				  "Auto Remove Icons" was turned on, dragged icons left garbage at their
				  original position until finally dropped.
				  Problem finally solved without setting friend BitMap to NULL.
	20010731	JL	- Added preferences selectable pens for ToolTip text and background.
				- Due to an incompatibility in Palette.prefs, I renamed it to
				  "Palette13.prefs" . Scalos uses old "Palette.prefs" if 
				  no "Palette13.prefs" found. To create new prefs file, either 
				  copy old "Palette.prefs" to new "Palette13.prefs" or load 
				  Palette prefs editor and use "Save" button to generate 
				  new "Palette13.prefs".
	20010729	JL	- Added check for deleting files of an undefined DirEntryType.
				- For SoftLinks, ToolTips showed name of link target 
				  instead of link name. Fixed.
				- Bumped revision to 40.8.

 40.7	20010729	JL	- Dropped Popupmenu.library for icon ToolTip display and added
				  own layouting and rendering code.
	20010728	DM	+ Added check for copying files of a non-specific DirEntryType.
	    			  Copies files correctly across Samba network, deleting files
	    			  seems to work OK with the current code.
	20010728	JL	- Moved ToolTip display to separate task.
	20010727	DM	  + Fixed corrupt logo and text in about and splash windows by setting
				  all allocated bitmaps to have no friend bitmap
	20010726	JL	- Added AttempLockLayerRom() around icon ToolTip display routine in 
				  order to avoid deadlocks.
	20010724	JL	- Due to Mike's request, increased minimum window width by 20.
	20010723	JL	- Added "scalos/icandy" environment variable on startup and set contents to "2".
				- Changed every copyright string to "© 1999-2001 The Scalos Team".
				- Added "About" function to Menu and Palette preferences.
	20010722	JL	- Changing palette prefs now closes and reopens Scalos, no matter if
				  the "DisableCloseWorkbench" flag is set.
	20010721	JL	- "put away" command didn't work with icons without associated objects. Fixed.
				- "Scalos Menu" : added new menu commands "viewbysize" and "viewbydate".
				- "Disk.info" icons of type WBDISK will no longer appear inside drawer windows.
				- Switching window view mode while window is reading icons no 
				  longer causes window to close.
				- SCCM_IconWin_RemIcon now updates window's virtual size and adjusts sliders.
	20010720	JL	- Bumped revision to 40.7.

 40.6	20010718	JL	- Double-clicking tool icons in text windows didn't start execute command. 
				  Recognition of default icons in text windows didn't work when 
				  starting programs. Fixed.
	20010717	JL	- Found a icon masking problem with PAL Hires-Laced screen. When 
				  "auto remove icons" was turned on, dragged icons left garbage at their
				  original position until finally dropped.
				  Problem (mask BitMap and icon BitMap having different format, 
				  recognizable by different "BytesPerRow" values for equeal width) at 
				  least partially solved by setting friend BitMap to NULL if (Depth <= 8).
	20010716	JL	- Empty lines in ".backdrop" files should be ignored now.
				- CloseWorkBench() from IPrefs Task didn't work. Fixed.
	20010715	JL	- Text windows sometimes swallowed first character of file comment. Fixed.
	20010713	JL	- "Replace All" now works when drag-copying multiple objects.
	20010712	JL	- "select contents" now deselects all icons in non-selected windows.
				- "clear selection" now deselects all icons in all windows.
	20010711	JL	- Plugin libraries are now flushed on scalos exit.
				- Fixed possible problem with missing ScaWindowTask parameter on FreeIconList().
				- Bumped revision to 40.6.

 40.5	20010708	JL	- CheckMouseIcon() didn't work with negative coordinates. Fixed.
				- text windows initially opened with do_CurrentX < 0 in icon displayed
				  icon text at incorrect position. Fixed.
	20010707	JL	- When reading a directory, icons are no longer checked if they overlap each other.
				- converted SCA_OpenIconWindow() to C.
				- Bumped revision to 40.5.

 40.4	20010706	JL	- Enabled "snapshot window" and "snapshot all" for root window again.
	20010705	JL	- Changed locking in DrawDrag() - first call. When "Auto remove icons" was enabled,
				  Icons sometimes didn't get ghosted properly due to DRAGFLAGF_WindowLocked set.
				- Changed initial value for unused oldDir Locks from NULL to $ffffffff, to avoid
				  trouble with pr_CurrentDir = NULL (at the end of functions, CurrentDir() never 
				  got reset to initial value when that value was NULL).
				- AmigaDos menu commands failed to skip trailing '"' if command name is surrounded
				  by '"', e.g. "SYS:xyz" executed with '"' as first argument.
	20010704	JL	- AmigaDos menu commands now inherit the workbench path.
				- Bumped revision to 40.4.

 40.3	20010704	JL	- ReadIcon() didn't respect the "show only icons" setting for text windows, so
				  all files appeared after automatic window update.
	20010703	JL	- changed detection for WMFLAG_IsVirtualSize (sizetofit menu command enabling),
				  now also enabled if window is larger than necessary to hold icons.
	20010702	JL	- Screen menu items are now enabled/disabled each time 
				  SCCM_IconWin_SetVirtSize is applied (i.e. after any change in window size).
	20010630	JL	- Forgot to set  Flag in ReadTextWindowIconList(),
				  so all text icons were treated as if on a write-protected disk.
				- Bumped revision to 40.3.

 40.2	20010629	JL	- Fixed more problems run AmigaDOS menu commands without path.
	20010628	JL	- SnapshotWindow() sometimes wrote icon to wrong directory. Fixed.
				- Added wt_UpdateSemaphore locking for "update" command.
				- Bumped revision to 40.2.
		
 40.1	20010627	JL	- BltMaskBitMapRastPort() used incorrect MinTerm so Masking didn't work 
				  correctly. (e.g. logos in splash and about window on non-cybergraphics screen).
	20010626	JL	- CheckMouseIcon() didn't work when "Non-masked click area" was checked. Fixed.
				- Splash window didn't adjust logo when window was resized due to long message. Fixed.
				- ReadDatatypesImage() returned the original BitMap (PDTA_BitMap) instead of
				  the remapped one (PDTA_DestBitMap).
	20010624	JL	- Due to extended library functions, bumped version to 40.1.

39.234	20010623	JL	- Added SCA_ScalosControl() call to scalos.library. Only 3 tags supported
				  yet, documentation still missing.
	20010620	JL	- About and Splash window can may load different logo images 
				  "THEME:ScalosSplashLogo" and "THEME:ScalosAboutLogo". If those 
				  files are not found, both windows fall back to "THEME:ScalosLogo".
	20010617	JL	- Due to an incompatibility in menu.prefs, I renamed it to
				  "menu13.prefs" . Scalos uses old "menu.prefs" if no "menu13.prefs" found.
				  To create new prefs file, either copy old "menu.prefs" to new 
				  "menu13.prefs" or load old "menu.prefs" in menu prefs editor
				  and use "Save" button to generate new "menu13.prefs".
	20010616	JL	- Added new popup menu class for AppIcons.
				- "System Info" button in About window is disabled if sysinfo module cannot
				  be found.
				- Opening new icon windows in iconified state could lead to each icon 
				  appearing twice after uniconifying window - Fixed. Now wt_LateIconList is
				  cleared at the beginning of ReadIconList().
	20010615	JL	- Fixed enforcer hits in about window when no scalos logo could be loaded.
				- RunMenuCommand() didn't work with CLI (=AmigaDos) commands without
				  path, i.e. only filename specified. Fixed.
				- Icon tooltips no longer pop up when non-Scalos window is active.
				- Icon position for iconified Scalos windows can be specified in
				  window icon with SCALOS_ICONIFIED_XPOS and SCALOS_ICONIFIED_YPOS.
				- Bumped revision to 39.234.

39.233	20010614	JL	- AppIcon menu commands now support all WB3.5+ AMCLASSICON_... 
				  AppMessage class codes (e.g. Benchtrash information/snapshot/unsnapshot works).
	20010613	JL	- Due to common request, Bob functions now don't use chip memory 
				  if port "FBlit" is available.
	20010610	JL	- AppIcons always got IDTV_TextMode_Normal (no outline, no shadow). Fixed.
	20010609	JL	- ARexx menu commands now may have selected items as arguments.
				- Bumped revision to 39.233.

39.232	20010608	JL	- Enabling/disabling popup menus now works correctly with nested sub-menus.
	20010607	JL	- Scalos now does a "Update all" instead of "Redraw" when 
				  detecting changed main prefs.
	20010606	JL	- Softlink sometimes could not be copied due to incorrect parent directory - Fixed.
	20010605	JL	- Fixed nasty bug in AllocVecPooled()/FreeVecPooled() : a6 was overwritten.
				- In text windows with "Show only Icons", non-existing objects (i.e. icons 
				  without corresponding objects) are no longer displayed (e.g. "disk").
				- Disabled "Leave Out" for default icons.
				- Changed locking in TestPopup() to prevent deadlocks.
	20010603	JL	- Bug #4. Fixed crash when executing ARexx menu command.
	20010602	JL	- No tooltips are displayed for icon after clicking or double-clicking it.
				- Menu command "sizetofit" now also shrinks windows if appropriate.
				- Bumped revision to 39.232.

39.231	20010601	JL	- Text windows with "Show only Icons" displayed data for icons 
				  instead of objects. Fixed.
				- Bug #13. Drawers inside of text windows no longer open always 
				  in text mode, but use the drawer icon settings instead.
	20010530	JL	- checkmouseicon() and QueryObjectUnderPointer() now take 
				  "Non-masked click area" setting into account.
	20010529	JL	- Fixed possible race condition with QueryObjectUnderPointer() by 
				  extending window list and wt_IconSemaphore locking.
	20010526	JL	- AppIcons now have popup menus (currently the same as tool icons) 
				  if  is not 0.
				- Tooltips now recognize iconified scalos windows.
	20010525	JL	- Iconified window appIcons get the "WBAPPICONA_SupportsOpen, TRUE" Attribute.
				- Fixed error in SCA_NewAddAppIcon() - WBAPPICONA_Supports... tags didn't work.
				- Bumped revision to 39.231.

39.230	20010524	JL	- No icon tool tips are displayed if icon has tooltype "SCALOS_NOTOOLTIPS".
				- Added new menu commands "sizetofit" and "clearselection".
	20010523	JL	- Scalos now passes a copy of the window lock as wa_Lock and wa_Name=NULL
				  when no icons are selected (now OS3.9 Find work just as with Workbench).
				- Fixed a couple of problems with the new tooltip function.
	20010519	JL	- Bumped revision to 39.230.

39.229	20010519	JL	- Fixed bug in QueryObjectUnderPointer() - did not work correctly if Workbench
				  screen wasn't frontmost screen.
	20010517	JL	- Added check for ST_LINKFILE, ST_LINKDIR, ST_SOFTLINK before calling isLink().
				- (OLD) After updating left-out (backdrop) icon, updating the associated disk icon
				  created a new backdrop icon instead of refreshing the old one. Fixed.
	20010515	JL	- Replaced IDCMP_VANILLAKEY handling by IDCMP_RAWKEY in order to 
				  receive "key up" events.
				- Drag&Drag indicators (copy etc.) are now updated immediately when
				  pressing or releasing qualifier key.
	20010512	JL	- About window now supports optional background image "THEME:AboutBackground".
	20010510	JL	- Added support for wheel mouse (icon/text window scrolling).
	20010509	JL	- Text windows didn't get refreshed properly after deleting icons. Fixed.
	20010508	JL	- Icon tooltypes sometimes were not recognized correctly. Fixed.
				- Bumped revision to 39.229.

39.228	20010507	JL	- Changed method of soft link detection to a more system-friendly one.
				- Bumped revision to 39.228.

39.227	20010506	JL	- Scalos no longer tries to load appchange'd AppIcons when their 
				  name contains invalid characters, i.e. ":/".
				- Scalos now uses AddPart() to add the name of the AppIcon to the "Default icons"
				  path, to make sure there is always a "/" between path and file name.
				- Converted WBLtask to C. The "unable to load your tool ..." Request now offers
				  to select a different tool via ASL requester.
	20010504	JL	- "Leave Out" didn't work for icons without associated files or drawers. Fixed.
	20010501	JL	- Icon menu items weren't enabled correctly in text windows. Fixed.
				- "View All"  wasn't recognized when initially opening text windows. Fixed.
	20010430	JL	- Softlinks are now displayed with underlined names. This feature 
				  work only with iconobject.datatype 39.33 and later.
				  (I saw that feature at Workbench 3.9 (with BoingBag 1) and immediately liked it).
	20010429	JL	- Text windows now distinguish between "Show All Files" and "Show Only Icons".
				- Bumped revision to 39.227.

39.226	20010428	JL	- Splash window : added 10" timeout when waiting for update message reply.
	20010427	JL	- AppIcons now support the WBAPPICONA_Supports... tags.
				- Icon menu items are now enabled/disabled according to the icons properties,
				  e.g. for icons on read-only media "delete" and "rename" is disabled.
				- Splash window now supports optional background image "THEME:SplashBackground".
	20010424	JL	- Fixed Enforcer hit in file/directory copying code when 
				  FileTransClassInstance was NULL.
				- CopyCommand didn't work with DestName != NULL (to perform 
				  "Copy As" function). Fixed.
				- Objects can now get duplicated (cloned) via D&D into same window
				  with Control key held down.
	20010422	JL	- Window.c/QueryObjectUnderPointer() could crash if PtrLayer->Window was 
				  empty (NULL). Fixed.
				- Path Assign "THEME:" is set on program start to "Scalos:themes/default".
				- Bumped revision to 39.226.

39.225	20010421	JL	- Fixed enforcer hits/crash opening window popup menu with empty (NULL) ws_Name.
				- MoveCommand() no longer complains when trying to move non-existing object.
				- Bumped revision to 39.225.

39.224	20010420	JL	- Dropped drop zone rendering in separate layers and returned to complement
				  drawing due to lack of performance.
	20010417	JL	- Logo gets loaded by datatypes.library from THEME:ScalosLogo
				- Defined C names for all library bases.
	20010415	JL	- Region didn't get freed in class.c/SameWindow() if no icon was moved. Fixed.
				- Additional check for NULL window pointer in Scalos.c/LassoInit().
				- moving icons in same window with "AutoRemove Icons = Off" didn't work properly
				  because registers were trashed in main_subroutines.s/checkposition. Fixed.
				- Bumped revision to 39.224.

39.223	20010415	JL	- Due to Mike's request, bumped revision to 39.223.
			
222x26				- Removed locking with DragDropSemaphore due to deadlock problems.
				- Changed rendering of window/icon drop zones from complement drawing
				  to separate layers (in Requesters), hopefully eliminating all problems
				  with garbage left in windows.
	20010414	JL	- Changed to utilize CatComp and its automatically generated locale header files.
				  All localized string are now in "Scalos.cd". Tested with CatComp 44.6.
	20010413	JL	- Bumped version to 222x26.

222x25	20010413	JL	- Fixed crash when icon window was closed or iconified while reading icons
				  and drawer contained more than 20 icons.
	20010412	JL	- (OLD) Fixed another icon window cleanup bug - icons were incorrectly
				  positioned under certain conditions so that icon text could overlap
				  other icons.
	20010411	JL	- Lasso selection didn't respect window limits when selecting icons. Fixed.
	20010410	JL	- CLIStart() crashed with type WBTOOL icons. Fixed.
				- (OLD) SCA_OpenIconWindow() didn't work with SCA_Iconify tag. Fixed.
	20010409	JL	- Lasso didn't correctly calculate window left and top offsets. Fixed.
				- Popup menus now have two title lines, with the type of object in the
				  first line and the name of the object in the second one.
	20010407	JL	- File move and copy routiones rewritten from scratch. Extensive error checking
				  when moving/copying objects. Requester when trying to overwrite existing
				  objects while moving/copying.
				- Created locking mechanism (via DragDropSemaphore) to prevent window updates
				  during D&D.
	20010404	JL	- Renaming left-out icons will no longer lose their position.
	20010403	JL	- Changed window refresh after file system notify : icon update is held back until
				  2s after last update request. Fixes lengthy repeated icon window updates after
				  changing many items (e.g. "Select All", then "UnShapshot").
				- Implemented drag threshold, i.e. icons have to be moved more than 4 pixels until
				  drop zone indicator is drawn.
				  THE AMOUNT OF 4 PIXELS SHOULD BE MADE USER SELECTABLE IN PREFERENCES.
	20010402	JL	- When modifying icons, Icons used to disappear if no associated file existed. Fixed.
	20010401	JL	- Icon just left out did not disappear from desktop when volume (disk) was removed. Fixed.
				- Icons could be "left out" multiple times, leaving several lines in ".backdrop". Fixed.
	20010331	JL	- Fixed bug #25 - D&D didn't copy to drawer icon left out on the desktop.
	20010330	JL	- Bumped version to 222x25.

222x24	20010329	JL	- (OLD) ".backdrop" files are now updated when renaming objects. Fixed bug #22.
	20010328	JL	- Fixed OLD bug in root_handlemessages - stack could be corrupted if message without
				  handler routine was encountered. Possibly also fixes long-standing bug #21.
	20010327	JL	- Text mode windows used to show "#?.info" files when UseExAll was off. Fixed.
	20010325	JL	- (OLD) Fixed enforcer hits/Alerts with "leave out" and "put away".
				- (OLD) Leave out didn't work if .backdrop had a length of 0 bytes. Fixed.
	20010325	JL	- Bumped version to 222x24.

222x23	20010324	JL	- Rename.module, newdrawer.module and delete.module now trigger
				  window updates on completion.
				- On completion of rename.module, objects are checked if they have been renamed
				  and window names are adjusted if necessary (bug #16 finally wiped out).
	20010323	JL	- Lasso selection now only affects visible icons (same behaviour as Scalos 2.1d)
	20010321	JL	- Hopefully fixed multiple text window refresh problems.
				- Removed forced D&D source update.
	20010320	JL	- Window drop box was drawn incorrectly for text windows. Fixed.
				- Added new text window methods : SCCM_TextWin_BeginUpdate, SCCM_TextWin_EndUpdate.
				- Changed text window method SCCM_IconWin_RemIcon from no-op to working icon removal.
	20010319	JL	- Fixed serious bug in GetTextIcon_Fib() : Drop on text window icon caused
				  many enforcer hits.
				- D&D onto text icon drawers didn't work. Fixed.
				- IconWinCheckUpdate() now also works work text windows.
	20010318	JL	- Converted text window icon reading code to C.
				- Text windows displayed date+time incorrectly : last digit was shown twice. Fixed.
				- Text window columns now always are wide enough to show column title
				  (e.g. empty drawer in text mode only used to show the last column spanning all window width)
				- IconActive flag didn't get updated corrected when lasso-selecting icons. Fixed.
				- Left mousebutton click toggles icon selection state when shift pressed.
	20010317	JL	- Bumped version to 222x23.

222x22	20010317	JL	- Text mode windows used incorrect font. Inserted missing SetFont() in DrawTextGadgets().
				  Special indicator bobs were broken with system bob routines. Fixed.
	20010317	JL	- Bumped version to 222x22.
			
222x21	20010317	JL	- ReadIconList() failed when called from different WindowTask (e.g. activate
				  Window #1, RMB click Window #2, select "Update" via popup menu). Fixed.
				- Icons in backdrop windows could be dragged to overlap each other. Fixed.
				- At D&D operations, the first argument (file/drawer) didnþt get freed. Fixed.
	20010316	JL	- Prefs option "Hide hidden files" now hides files starting with "."
				  (only in functions converted to C yet).
				- Drag/Drop copy/move forces check for update on source.
				- Changed D&D special indicator handling:
				  * special bobs initially added to separate list instead of adding to srgh_boblist
				    and then moved to special bob list.
				  * drgh_boblist protected by semaphore to prevent DrawDrag() until InitDrag() finishes.
	20010315	JL	- Icon drop marks during menu popup didn't get erased properly
				  in simple-refresh windows. fixed.
	20010314	JL	- Fixed directory-reading bug with empty file names or files ".info".
				- special D&D indicators are now always drawn solid.
	20010313	JL	- Fixed (self-introduced) Bug in DragDropBobs.c : BlitTrans() 
				  handled masks incorrectly when width was a multiple of 16.
				- Bob functions now don't use chip memory if CyberGfxBase is available.
	20010312	JL	- Squished Bug #17 : Text window column headers no longer flicker
				  when MMB is held down and mouse is moved.
	20010310	JL	- Removed layout bug in iconwindow cleanup (icons did overlap).
	20010305	JL	- Lasso() now always uses Screen->MouseX/MouseY coordinates. 
				  No more offsets between mouse position and lasso corner !
222x20	20010303	JL	- PopupMenu now visually indicates selected icon.
				- Popup menus work without selecting window now (if any Scalos window is selected)
	20010227	JL	- finished converting main_dragdropbobs.s to C.
				- During D&D, special indicators show if icon may not be dropped
				  or icons are going to be copied.
				- During D&D, holding CTRL key forces copy (instead of move).
	20010221	JL	- During D&D, Icons leave a "shadow" at their original position if 
				  "Auto remove icons" is enabled. This Shadow is truly transparent 
				  if possible (CyberGfx + Screen depth > 8) and enabled
				  in preferences, else it is drawn "ghosted".
	20010220	JL	- Removed old bug in copyfiles - after a read error, Scalos didn't stop,
				  but tried to write 0xffffffff bytes to the destination.
222x17	20010217	JL	- ported all xxxDrop() stuff to C.
				  Changed ScaBob and ScaBob2 member names to avoid conflicts with Gels Bobs.
	20010216	JL	- Fixed old bug in execomprog, formatdiskprog, shutdownprog, renameprog,
				  newdrawerprog, deleteprog, emptytrashprog : TagList for SBA_WBStart() wasn't set,
				  a1 contained garbage.
	20010211	JL	- Bug #30: Removed GM_HITTEST from TextIconClass. Now TextIcons can be selected
				  Bug #19: Text window cleanup now works.
				- by clicking anywhere in the line, not only the name field.
	20010209	JL	- Fixed bug Scalos crashing on quit with drawer windows open
	20010207	JL	- Pulled nasty bug introduced by early plugin init in ReadDiskPlugin1
	20010129	JL	- Added new IconWindow methods SCCM_IconWin_DragEnter, SCCM_IconWin_DragLeave,
				  SCCM_IconWin_DragQuery. 
				- Added Qualifier to SCCM_IconWin_DragDrop.
				- Added global Variable "Default_StackSize". 
				- Added Support for ToolType "DONOTPROMPT" in conjunction with old ToolType "CLI". 
				- Moved all datat structure definitions to file "scalos_structures.i". 
				- Created C header file "scalos_structures.h".
				- Actual Plugin Data (e.g. instance size) is read before MakeClass()
				- Changed view of dragging selected icons to dragging a "stack" of max. 3 icons
				- When dragging, icons/windows indicate where things may be dropped.
				- Lasso activates icons on the fly now.
				- Popup menu titles reflect icon names.
	20010113	JL	- Ported to assemble with PhxAss. PhxAss doesn't like constructs like "iconnode\.node" 
				  so I put a prefix on all structure members e.g. "in_node".

39.220	20010111	DM	- Converted Juergen's fixes to values instead of constants, AsmOne seems to not like some of the included OS files - in various files
	20001231	MC0002	- Added includes for various lvo/#?.i
	20001230	MC0001	- Added exec/libraries.i for LIB_VERSION() macro
				  and OS3.5 asm includes for workbench.library, imageclass.i
	20001217	DM000A	- Removed include file main_about.s - all code now in C!
	20001212	DM0009	- Added some code for calling debug startup/shutdown C functions
	20001122	DM0007	- Removed about_pattern from main_tables.s and put into about.c (the only place that was using it)
				  All logo stuff moved from main_scalos.s to main_about.s (only place it is used)
	2000		DM0006
	2000		DM0005
	20001114	DM0004	- started converting the about requester and related code to C as a test of how painful this is going to be :)
	20001107	DM0003	- added the includes imports.i and exports.i. used for when combining with C code. Also added workaround for symbol export bug in AsmXXX
	20000903	DM0002	- Bumped version and date to 39.220 (1.2c) and 3/9/00
				- Fixed enforcer hit when there is no main menu prefs file on startup
				- Noticed that main menu prefs aren't read in with prefslib!

39.219	20000726	DM0001	- Altered some lines in readmainprefs routine so that scratch registers are reloaded before use
	19991130	CDH0001	- Added code for new "formatdisk" command from Menu Prefs
	19991204	CDH0002	- Added code for "SystemInfo.module" from About requester
	19991205	CDH0003	- Added code for new "shutdown" command from Menu Prefs



Scalos main Preferences


 40.13	20040827	+jl+	- Added passing of tooltypes on to prefs plugins.
 40.12	20040718	+jl+	- Added font preview for icon font, and text window font.
 				- In the "drag and drop" section, added new qualifier 
				  input field for "Create links" and "Force move".
				- On the "Miscellaneous" page, added a cycle gadget to 
				  select the type of links Scalos generates.
 40.11	20040516	+jl+	- Added new prefs page for TrueType font settings. TT Font 
				  selection is available for icons, text windows and 
				  tooltips and the "About" window ("Screen font").
 				- Added checking for custom MUI MCCs and MCC versions.
 				- Enabled "Multiple Lines" switch for icon text.
 40.10			+jl+	- Rearranged prefs pages - created new prefs
 				  group "Drag and Drop".
 40.9
 40.8	20040111	+jl+	- Added slider for degree of default icon 
				  drawing transparency.
 				- Transparency settings and "Custom" bob routines
 				  are now disabled when noo CyberGfx library found
 				  or when Workbench screen has no more than 256 colours.
 40.7	20040107	+jl+	- Several Datatypes images were no longer 
				  visible after iconify/uniconify. Fixed.
				- Added icon for iconified state.
 40.6	20040101 	+JL+	- Added gadget to adjust Scalos default stack size.
 40.5	20031227	+jl+	- Replaced MUI NFloattext class by Floattext.
 40.4   20031218	+jl+	- Updated Scalos URL to "scalos.noname.fr".
 40.3   20031216	+jl+	- Added missing load/save functions for 
				  Tooltip delay
 40.2	20031117	+jl+	- "Add plugin" command erroneously cleared 
				  internal plugin list.
 				- Changed module image display from 
				  TransferAnimObject to DataTypesMCCObject.
 40.1	20030104	+jl+	- Rewritten from scratch, based on code by Budda.
	20030710 	+JL+	- Initial release 40.1


Scalos FileTypes Preferences


 40.6	20041111	+jl+	- Replaced Assembler library startup code by C.
				  No functional changes.
 40.5	20040828	+jl+	- Added menu option and tooltype to hide all 
				  empty filetype entries.
 40.4	20040703	+jl+	- Added font preview to TTTFONT editing window.
 40.3	20040222	+jl+	- Changing the "create icons" menu item had no effect.
 				- Added TrueType font support for ToolTips (new TTFONT 
				  attribute for STRING).
 40.2	20040108	+jl+	- Added icon for iconified state.
				- Bugfix: Fixed handling of internal "modified" flag.
 				- Added lamp indicator for "modified" flags.
 40.1	20031211	+JL+	- Initial release 40.1


Scalos Menu Preferences


 40.12	20041111	+jl+	- Replaced Assembler library startup code by C.
				  No functional changes.
 40.10	20040424	+jl+	- Bugfix: Fixed handling of internal "modified" flag.
 				- Added lamp indicator for "modified" flags.
 				- Menu command "Merge" erroneously cleared the existing 
				  entries before importing the new ones. Fixed.
 40.9	20040222	+jl+	- Changing the "create icons" menu item had no effect.
 40.8	20040108	+jl+	- Added icon for iconified state.
 40.7	20030831	+JL+	- Moved core functionaility to "MenuPrefs.prefsplugin".
 40.6	20030712 	JL	- Bugfix: Removed memory leak in CLI startup code.
 40.5	20030531 	JL	- Bugfix: Popup button for IconWindow command entries now 
				  only accepts directories.
				- Bugfix: Closing command popup ASL requester with "Ok" 
				  button failed to enter filename into Listview element.
				- Improvement: command popup ASL requester now defaults to 
				  "Scalos:Plugins/Menu/" directory for menu plugins.
 40.4	20030424 	JL	- Several bugfixes that affect renaming of menu items.
				- for Workbench commands, stack size and priority are taken
				  from icon, if available.
 40.2	20030223 	JL	- Added checking of menu level and number of menu items. It 
				  is no longer possible to add a new menu to a SubMenu, or 
				  to add more than 64 MenuItems to a menu, or to add more 
				  than 32 Entries to a sub menu.
 40.1	20021226 	JL	- Rewritten from scratch in C.


Scalos Palette Preferences


 40.7	20041111	+jl+	- Replaced Assembler library startup code by C.
				  No functional changes.
 40.6	20040424	+jl+	- Bugfix: Fixed handling of internal "modified" flag.
 				- Added lamp indicator for "modified" flags.
				- Changing the "create icons" menu item had no effect.
 40.5	20040121	+jl+	- Number of allocatable pens was too small by 1. Fixed.
 40.4	20040108	+jl+	- Added icon for iconified state.
 40.3	20030831 	JL	- Moved core functionaility to "PalettePrefs.prefsplugin".
 40.2	20030712 	JL	- Bugfix: Removed memory leak in CLI startup code.
 40.1	20020601 	JL	- Added display for number of currently allocated and 
				  available pens.
	20011225 	JL	- Rewritten from scratch in C.
				- Added separate pens for selected icon text, icon text 
				  outline, and icon text shadow.


Scalos Pattern Preferences


 40.8	20041111	+jl+	- Replaced Assembler library startup code by C.
				  No functional changes.
 40.6	20040426	+jl+	- Bugfix: Fixed handling of internal "modified" flag.
 				- Added lamp indicator for "modified" flags.
				- Changing the "create icons" menu item had no effect.
 40.5	20040108	+jl+	- Added icon for iconified state.
 40.4	20030831	+JL+	- Moved core functionality to "PatternPrefs.prefsplugin".
 40.3	20030712	+JL+	- Bugfix: Removed memory leak in CLI startup code.
 40.2	20030129	+JL+	- Bugfix: Bubble for preview gadget was broken.
				- Bugfix: switching between "tiled" and "fit size" didn't work.
				- Rewritten from scratch in C.


Scalos LoadWB


  1.4	20040108	jl	- The functionality to wait until Scalos opens its first 
				  Window on the workbench screen can now be 
				  suppressed with NOWAIT.
  1.3	20021005 	JL	- LoadWB now waits until Scalos opened its first Window on 
				  the workbench screen. This is to avoid problems with 
				  Birdie.


picturedimensions.plugin


 40.3	20040117	+jl+	+Added localization for message strings.
 40.2	20030628	+jl+	+Fixed several memory leaks.
 40.1	20021231	+jl+	+Initial release


drawercontents.plugin


 40.3	20040117	+jl+	+Added localization for message strings.
 40.2	20030628	+jl+	+Fixed several memory leaks.
 40.1	20030104	+jl+	+Initial release


amigaiconobj35.datatype


 40.7	20031220	jl	+changed library from "struct Library" to "struct ClassLibrary"
 40.6	20030420	jl	+Added support for "borderless" flag.
 40.5	20021201	jl	+Enhanced cleanup - now does RemLibrary() on iconobject.datatype.
 40.4	20020815	jl	+Fixed possible enforcer hits in Expunge()
 40.3	20020131	jl	+Object pointer in A2 might have been set incorrectly under 
				 certain circumstances in OM_NEW/SetSuperImgBorders.
 40.2	20020112	jl	+Always sets IDTA_InnerLeft, IDTA_InnerTop, IDTA_InnerRight 
				 and IDTA_InnerBottom to 0 if icon has a RenderHook.
 40.1 	20020101	jl	+Removed IDTA_InnerLeft and IDTA_InnerTop checks to 
				 enable frames around masked icons
				+Added support for IDTA_SupportedIconTypes tag.
 39.31	20010627	jl	+Fixed wrong register for GetCyberMapAttr() Attribute parameter.
 39.30	20010508	jl	+some instance data is now longword aligned
 39.29	20010207	jl	+fixed 2 byte memory overwrite error in ClearMemory
 39.28	20010128	jl	+Added Semaphore protection for memory pools
 39.27	20010117	jl	+Begin revision history


amigaiconobject.datatype


 40.5 	20031220	+jl+	+changed library from "struct Library" to "struct ClassLibrary"
 40.4	20021201	+jl+	+Enhanced cleanup - now does RemLibrary() on iconobject.datatype.
 40.3	20020815	+jl+	+Fixed possible enforcer hits in Expunge()
 40.2	20020113	+jl+	+More changes for enhanced compatibility for icons with borders.
 40.1	20020101	+jl+	+Removed IDTA_InnerLeft and IDTA_InnerTop checks to 
				 enable frames around masked icons
 39.24	20010514	+jl+	+fixed mean bug in clLayout - somehow two lines had disappeared.
 39.23	20010511	+jl+	+fixed serious bug in clWrite.
 39.22	20010508	+jl+	+some instance data is now longword aligned
 39.21	20010128	+jl+	+Added Semaphore protection for memory pools
 39.20	20010117	+jl+	+All memory allocations are now being done via memory pools.


iconobject.datatype


 40.12	20040814	+jl+	+Added support for new IODRAWF_NoEraseBg flag.
 40.11	20040524	+jl+	+Added functionality to support TrueType fonts for icon text
 	20040611	+jl+	+Added support for splitting of icon text into multiple lines
 	20040611	+jl+	+Added support for transparent rendering of icon label shadow 
				 and outline (TrueType fonts only).
 40.10	20031220	+jl+	+changed library from "struct Library" to "struct ClassLibrary"
 40.9	20030420	+jl+	+Added support for per-icon "borderless" flag
 40.7	20020928	+jl+	+Added IDTA_UserFlags get/set tag.
 40.6	20020815	+jl+	+Fixed possible enforcer hits in Expunge()
 40.5	20020321	dm	+Fixed crash when GM_HITTEST was invoked with icon mask of NULL.
 40.4	20020320	+jl+	+GM_HITTEST was broken when icon borders were > 0.
 40.3	20020201	+jl+	+Added attribute tags IDTA_MaskBM_Normal and IDTA_MaskBM_Selected.
 40.2	20020113	+jl+	+More changes for enhanced compatibility for icons with borders.
 40.1	20020101	+jl+	+Added separate pens for selected icon text, icon text 
				 outline, and icon text shadow.
 39.38	20011230	+jl+	+Major changes to support borders around os3.5 icons and NewIcons.
 39.37	20010818	+jl+	+Added IDTA_Font attribute
 39.36	20010617	+jl+	+SetAttr(IDTA_ToolTypes) now stores a COPY of the
				 provided tooltype array. Copy gets freed on Dispose.
 39.35	20010613	+jl+	+checks for "FBlit" on OpenLibrary and doesn't use
				 any chip memory if found.
 39.34	20010508	+jl+	+longword-aligned structure IconObjectInst.
 39.33	20010429	+jl+	+Displays underlined text if IDTA_isLink is TRUE.
 39.32	20010311	+jl+	+Uses no chip mem if cybergraphics is found.
 39.31	20010209	+jl+	+Added missing "ret" in LibClose ... 
				 fixes crash on Scalos closing.
 39.30	20010128	+jl+	+Added Semaphore protection for memory pools
 39.29	20010117	+jl+	+All memory allocations are now being done via memory pools.
 39.28	20010114	+jl+	+fixed memory leak with iobj_name


newiconobject.datatype


 40.5 	20031220	+jl+	+changed library from "struct Library" to "struct ClassLibrary"
 40.4	20021201	+jl+	+Enhanced cleanup - now does RemLibrary() on iconobject.datatype.
 40.3	20020815	+jl+	+Fixed possible enforcer hits in Expunge()
 40.2	20020113	+jl+	+More changes for enhanced compatibility for icons with borders.
 40.1	20020101	+jl+	+Removed IDTA_InnerLeft and IDTA_InnerTop checks to 
				 enable frames around masked icons
 39.24	20011206	+jl+	+Fixed reversed check for IOFREELAYOUTB_ScreenAvailable 
				 in idtm_freelayout.
 39.23	20010714	+jl+	+Fixed bug in DTM_Write with IDTA_ToolTypes.
 39.22	20010627	+jl+	+Fixed wrong register for GetCyberMapAttr() Attribute parameter.
 39.21	20010508	+jl+	+some instance data is now longword aligned
 39.20	20010128	+jl+	+Added Semaphore protection for memory pools
 39.19	20010120	+jl+	+All memory allocations are now being done via memory pools.


pngiconobject.datatype


 40.12	20041111	+jl+	+Replaced Assembler library startup code by C.
				 No functional changes.
 40.11	20040915	+jl+	+Bugfix: icon mask generation clipped some pixels 
				 at right border. Fixed.
 40.10	20040801	+jl+	+Default icons were not saved to the correct path.
 40.9	20040523	+jl+	+Fixed severe memory trashing. Datatype used to overwrite 
				 random memory with some icons.
 40.8	20040429	+jl+	+Datatype now correctly recognizes and renders 
				 AppIcons generated by PowerIcons.
 40.7	20040226	+jl+	+Plugged several memory holes.
 40.6	20040111	+jl+	+Added support for default icons via IDTA_DefType tag.
 40.5	20040109	+jl+	+Now supports extra information about original 
				 object (Path+Name) for the determination 
				 of icon type.
 40.4	20040105	+jl+	+Iconobjects now use DrawerData defaults from 
				 icon.library default icon of the same type.
 40.3	20040104	+jl+	+Fixed severe bug that trashed random memory. 
				 Only occured with icons without fixed position.
 40.2	20040102	+jl+	+Added optimization in alpha-blending routines.
 				+Fixed trashing of icon image data 
				 during IDTM_Write.
				+Disk icons (WBDISK) were not recognized properly.
 40.1	20011221	+jl+	+Initial version


iconobject.library


 40.4	20041110	+jl+	- Removed Assembler library startup code. 
				  No functional changes.
 40.3	20021201	+jl+	- Improved cleanup code: FreeClassList() now calls 
				  RemLibrary() for each datatype.
				- Added capability to copy/cut/paste attributes.
 40.2	20020815	+jl+	- Fixed possible Enforcer hit in Expunge()
 40.1	20020101	+jl+	- Added new library function Convert2IconObjectA()


wbrexx.plugin


 39.18	20041113	jl	+Replaced Assembler library startup functions 
				 by C code. No functional changes.
 39.17	20031222 	JL	+Changed "OpenDrawerByName()" to make use of the 
				 Scalos iconobject datatypes. 
 39.16	20030112	JL	+Removed some dependencies on undocumented internal 
				 Scalos data structures.
 39.15	20021206 	JL	+Added "MENU INVOKE WINDOW.CLEANUPBY.NAME/DATE"
				 "/SIZE/TYPE" functions.
				+Added "ICON MOVE IN/OUT" functions.
				+Added "MENU INVOKE WINDOW.RESIZETOFIT" function.
 39.14	20021130 	JL	+Added "ICON ACTIVATE UP/DOWN/LEFT/RIGHT" functions.
				+Fixed order of which icons get select with 
				 "ICON CYCLE NEXT/PREV" function.
 39.13	20020927 	JL	+Fixed bug in AddMenuItem() and AddKeyboardCommand()
				 which could lead to crashed when trying to add items
				 with already exiting names.
 39.12	20020131 	JL	+Now supports adding menu subitems and new menus. Using
				 this new features requires Scalos V40.20.
 39.11	20011030 	JL	+Fixed serious initialisation problem in Scalos 
				 preview mode, leading to crash on any keyboard input.
 39.10	20011020 	JL	+No longer initializes if Scalos is running in 
				 preview mode.
 39.9	20011008 	JL	+Changed priority to -79 in order to make it work 
				 for text windows.
				+"ICON MAKEVISIBLE" didn't always work correctly for 
				 text windows. Fixed.
 39.8	20010927 	JL	+Added missing MENU and KEYBOARD functions.
				+Fixed several bugs GETATTR function.
 39.7	20010719 	JL 	+Forgot to UnLock() lock in FindWindowByName(). Fixed.
 39.6	20010718 	JL 	+Changed matching algorithm in FindWindowByName(), 
				 important for all WINDOW commands.


wb39.plugin


 45.28	20041113	jl	+Replaced Assembler library startup functions 
				 by C code. No functional changes.
 45.27	20040612	JL	+Fixed enforcer hits when text window icons were 
				 renamed with AsyncWB (Added translation of text icon 
				 types in ChangeWorkbenchSelectionA() ).
 45.26	20040103 	JL	+Added several undocumented WorkbenchControl() tags, 
		    		 WBCtrl doesn't fail, however, not all values are used.
    				+MaxCopyMem can now be changed via 
				 WorkbenchControlA() calls.
 45.25	20031222 	JL	+Changed "OpenDrawerByName()" to make use of the 
				 Scalos iconobject datatypes. 
 45.24	20030112 	JL	+Removed some dependencies on undocumented internal 
				 Scalos data structures.
 45.23	20020914 	JL	+Added support for V45 WBOPENA_Show and WBOPENA_ViewBy
				 tags to OpenWorkbenchObjectA emulation.
 45.22	20020110 	JL	+The AMTYPE_APPWINDOW AppMessages generated in 
				 AppWindow.c had wrong mn_Replyport. Fixed.
 45.21	20011231 	JL	+Added support for "No Color Icons" and "No NewIcons" 
				 workbench prefs settings.
 45.20	20011223 	JL	+Avoid excessive Scalos root window updates 
				 with AddHiddenDevice/RemHiddenDevice.
 45.19	20011204 	JL	+Added support for (undocumented) CloseWB/OpenWB hook list.
				+Added Support for (undocumented) set/clear icon.library 
				 global screen.
 45.18	20011129 	JL	+Added support for getting and setting delete, copy, 
				 and text input hooks (undocumented).
 45.17	20011116 	JL	+fVolumeGauge was not longer checked. Fixed.
				+WB prefs are now checked each time a new device 
				 window is opened.
 45.16	20011020 	JL	+No longer installs patches if Scalos is running in 
				 preview mode.
 45.15	20011010 	JL	+Added proper handling for WorkbenchControl() tags 
				 WBCTRLA_SetTypeRestartTime and WBCTRLA_GetTypeRestartTime.
	20011008 	JL	+Changed priority to -89.
 45.14	20010714 	JL	After WBCTRLA_AddHiddenDeviceName and 
				WBCTRLA_RemoveHiddenDeviceName, now does 
				SCCM_IconWin_Update on root window.
 45.13	20010708 	JL	When opening drawer windows, DDVM_BYICON now gets 
				translated into IDTV_ViewModes_Icon.
	20010623 	JL	Added full Support for WBCTRLA_GetDefaultStackSize and
				WBCTRLA_GetProgramList, using new SCA_ScalosControl() call.
	20010524 	JL	HiddenDeviceList entries now get ln_Type=0x67 so
				Workbench prefs/IPrefs correctly removes old entries from list.
	20010523 	JL	Added additional argument checking to myWorkbenchControlA()
				Added Semaphore protection for HiddenDeviceList
	20010520 	DM	Some other small fixes
	20010518 	DM	Hidden device list completely supported (needs devicefilter.plugin
				to actually hide devices).
				Hidden devices read from workbench prefs file (scalos_helper.c)
	20010124 	JL	Fixed Malfunction of AddAppWindowDropZoneA() with WBDZA_Box


persist.plugin


 39.19	20041113	jl	+ Replaced Assembler library startup functions 
				  by C code. No functional changes.
 39.18	20031222	JL	- Changed "OpenDrawerByName()" to make use of the 
				  Scalos iconobject datatypes. 
 39.17	20020501	JL	- "Persistant_Windows" file no longer is deleted during 
				  initialization. The advantage is, if Scalos crashed before 
				  the first window gets re-opened, the Persistant_Windows 
				  file is untouched. As soon as the first window opens, 
				  the Persistant_Windows file is rewritten.
				- The re-opened windows won't get activated (works with 
				  Scalos V40.22+).
 39.16	20011228	JL	- Disabled some Printf() calls.
 39.15	20010803	JL	- Reversed order in which windows are reopened.
 39.14	20010730	JL	- Changed name of prefs file from "ENVARC:Scalos/Persist.config"
				  to "ENV:Scalos/Persist.prefs".
				- "Use_SCA_Iconify" now default to "1" if scalos.library 
				  version is at least 40.
 39.13			JL	- Name of persistant windows status file is now configurable 
				  in "ENVARC:Scalos/Persist.config".
 39.12			JL	- When re-opening drawer windows,
	    	      DDVM_BYICON now gets translated into IDTV_ViewModes_Icon.
 39.11	 		JL	- when re-opening window in iconified state, now immediately adds
				  entry in persist file (no SCCM_Window_Open will occur, so otherwise 
				  no entry would be generated at all).
 39.10	 		JL	- prefs file may contain comment lines beginning with "#".
				  empty lines in prefs file will be ignored.
				  iconified windows are remembered and re-iconified on startup.


volumegauge.plugin


 39.6	20041113	jl	+Replaced Assembler library startup functions 
				 by C code. No functional changes.
 39.5	20030112 	JL	+Removed some dependencies on undocumented internal 
				 Scalos data structures.
 39.4	20011110		- some changes for compatibility with Scalos 40.14.


deficons.plugin


 ./.	20031231	JL	- Depracated since functionality has been integrated 
				  into Scalos main program.
 45.6	20011230	JL	- OpenLibraries was called twice. Fixed.
				- Added support for individually enabled/disabled icon types.


xtwindows.plugin


 40.5	20040102	JL	- Adapted to changed OpenDrawerByName() function, now 
				  uses iconobject.library instead of icon.library.


ScalosCtrl


 40.16	20040104	JL	+ Added new CBS=COPYBUFFSIZE parameter.
	20040102		- Added "QUERY" command line switch.



Content-Type: text/html scalosgfx.library

    ScalosGfxCreateEmptySAC
    ScalosGfxCreateSAC
    ScalosGfxFreeSAC
    ScalosGfxCreateARGB
    ScalosGfxFreeARGB
    ScalosGfxARGBSetAlpha
    ScalosGfxARGBSetAlphaMask
    ScalosGfxCreateARGBFromBitMap
    ScalosGfxFillARGBFromBitMap
    ScalosGfxWriteARGBToBitMap
    ScalosGfxMedianCut
    ScalosGfxScaleARGBArray
    ScalosGfxScaleBitMap
    ScalosGfxCalculateScaleAspect
    ScalosGfxBlitARGB
    ScalosGfxFillRectARGB
    ScalosGfxSetARGB
    ScalosGfxNewColorMap
    ScalosGfxARGBRectMult
    ScalosGfxBlitARGBAlpha
    ScalosGfxBlitARGBAlphaTagList
    ScalosGfxBlitIcon


        NAME

            ScalosGfxCreateEmptySAC -- Allocate an empty ScalosBitMapAndColor

        SYNOPSIS

        	sac = ScalosGfxCreateEmptySAC( )
        	D0

        	struct ScalosBitMapAndColor *ScalosGfxCreateEmptySAC( void );

         

        FUNCTION
            Allocates an empty ScalosBitMapAndColor structure, with NULL
            sca_BitMap and sac_ColorTable.

        INPUTS
            none

        RESULT
            sac - new created ScalosBitMapAndColor, or NULL on failure

        SEE ALSO
            ScalosGfxFreeSAC(), ScalosGfxCreateSAC()



        NAME

            ScalosGfxCreateSAC -- Allocate ScalosBitMapAndColor

        SYNOPSIS

        	sac = ScalosGfxCreateSAC(width, height, depth, friendBM, tagList);
        	D0                       D0     D1      D2     A0        A1

        	struct ScalosBitMapAndColor *ScalosGfxCreateSAC(ULONG, ULONG, ULONG,
        		struct BitMap *, struct TagItem *)

        	struct ScalosBitMapAndColor *ScalosGfxCreateSACTags(ULONG, ULONG, ULONG,
        		struct BitMap *, ULONG, ...)

         

        FUNCTION
            Allocate a ScalosBitMapAndColor structure. sac_BitMap and sac_ColorTable
            are allocated according to specified dimensions.

        INPUTS
            width - Desired width of new ScalosBitMapAndColor BitMap.
            height - Desired height of new ScalosBitMapAndColor BitMap.
            depth - Desired depth of new ScalosBitMapAndColor BitMap. Must be less
            than 256. sac_ColorTable will be allocated to hold 2^depth entries.
            friendBM - Friend BitMap to use for BitMap allocation.
            tagList - pointer to list of Tags, or NULL.

        TAGS
            None defined yet.

        RESULT
            sac - new created ScalosBitMapAndColor, or NULL on failure

        SEE ALSO
            ScalosGfxFreeSAC(), ScalosGfxCreateEmptySAC()



        NAME

            ScalosGfxFreeSAC -- free a previously allocated ScalosBitMapAndColor

        SYNOPSIS

        	ScalosGfxFreeSAC(sac);
        	                A0

        	void ScalosGfxFreeSAC((struct ScalosBitMapAndColor *);

         

        FUNCTION
            Frees and deallocates a previously allocated ScalosBitMapAndColor,
            including sac_BitMap and sac_ColorTable.

        INPUTS
            sac - previously allocated ScalosBitMapAndColor, or NULL

        RESULT
            nothing

        SEE ALSO
            ScalosGfxCreateSAC(), ScalosGfxCreateEmptySAC()



        NAME

            ScalosGfxCreateARGB -- Allocate a gfxARGB with specified size

        SYNOPSIS

        	argb = ScalosGfxCreateARGB(width, height, tagList)
        	D0                         D0     D1      A0

        	struct gfxARGB *ScalosGfxCreateARGB(ULONG, ULONG, struct TagItem *)

         

        FUNCTION
            Allocates an array of struct gfxARGB with sufficient size for
            specified width and height.

        INPUTS
            width - width of gfxARGB array
            height - height of gfxARGB array
            tagList - pointer to list of Tags, or NULL.

        TAGS
            None defined yet.

        RESULT
            argb - new allocated gfxARGB, or NULL on failure.

        SEE ALSO



        NAME

            ScalosGfxFreeARGB -- Free a previously allocated gfxARGB

        SYNOPSIS

        	ScalosGfxFreeARGB(argb)
        	D0                A0

        	VOID ScalosGfxFreeARGB(struct gfxARGB **)

         

        FUNCTION

        INPUTS
            argb - pointer to storage of previously allocated gfxARGB.
            argb may point to NULL.

        RESULT
            nothing

        SEE ALSO
            ScalosGfxCreateARGB()



        NAME

            ScalosGfxARGBSetAlpha -- Set all pixels to specified Alpha value.

        SYNOPSIS

        	ScalosGfxARGBSetAlpha(src, alpha);
        			      A0   D0

        	VOID ScalosGfxARGBSetAlpha(struct ARGBHeader *, UBYTE)

         

        FUNCTION
            Alpha value of all pixels in the ARGBHeader and its previously
            allocated gfxARGB array is set to the specified value.

        INPUTS
            src - Header of gfxARGB rectangle to modify.
            alpha - Alpha (transparency) value to set.

        RESULT

        SEE ALSO
            ScalosGfxARGBSetAlphaMask()



        NAME

            ScalosGfxARGBSetAlphaMask -- Set alpha value according to mask plane

        SYNOPSIS

        	ScalosGfxARGBSetAlphaMask(argbh, maskPlane)
        				  A0     A1

        	VOID ScalosGfxARGBSetAlphaMask(struct ARGBHeader *, PLANEPTR)

         

        FUNCTION
            Alpha values of all pixels in the ARGBHeader and its previously
            allocated gfxARGB array are set according to mask plane, i.e. for
            every bit set in mask plane, alpha is maximum (255), and for every
            cleared bit, alpha is set to minimum (0).

        INPUTS
            argbh - Header of gfxARGB rectangle to modify.
            maskPlane - Single bit mask plane. Dimensions must match size of argbh, with
            width rounded up to next 16-bit.

        RESULT
            nothing

        SEE ALSO
            ScalosGfxARGBSetAlpha()


        NAME

            ScalosGfxCreateARGBFromBitMap -- Create gfxARGB array from a BitMap

        SYNOPSIS

        	argb = ScalosGfxCreateARGBFromBitMap(bm, width, height, numberOfColors, colorTable, maskPlane
        	D0                                   A0  D0     D1      D2              A1          A2

        	struct gfxARGB *ScalosGfxCreateARGBFromBitMap(struct BitMap *, ULONG, ULONG, ULONG,
        		const ULONG *, PLANEPTR)

         

        FUNCTION
            Allocates and a gfxARGB array with specified dimensions, and fills it from
            provided BitMap, with optional mask plane. Works only with standard BitMaps with
            less than 256 colors.

        INPUTS
            bm - source BitMap to fill gfxARGB array from,
            Depth must be less than 256 colors.
            width - Width of gfxARGB array
            height - Height of gfxARGB array
            numberOfColors - number of entries in colorTable
            colorTable - Color table to use for BitMap
            maskPlane - Single bit mask plane. Dimensions must match width and
            height, with width rounded up to next 16-bit. May be NULL.
        RESULT
            argb - allocated gfxARGB array or NULL on failure.

            NOTES
            Use ScalosGfxFillARGBFromBitMap() for high-color or true-color BitMaps.

        SEE ALSO
            ScalosGfxFillARGBFromBitMap()



        NAME

            ScalosGfxFillARGBFromBitMap -- Fill previously allocated gfxARGB array from CGFX BitMap

        SYNOPSIS

        	ScalosGfxFillARGBFromBitMap(argbh, srcBM, maskPlane)
        				    A0     A1     A2

        	VOID ScalosGfxFillARGBFromBitMap(struct ARGBHeader *, struct BitMap *, PLANEPTR)

         

        FUNCTION
            Fill a previously allocated gfxARGB array from a CyberGraphics BitMap. Can only
            be used for high-color or true-color BitMaps.
            If maskPlane if given, alpha information in argbh is created from maskPlane. If
            maskPlane if NULL, alpha channel from source BitMap is used if available,
            otherwise alpha is set to opaque.

        INPUTS
            argbh - completely initialized gfxARGB array
            srcBM - source BitMap to use for filling, depth must be at least 65536 colors
            maskPlane - Single bit mask plane. Dimensions must match width and height, with
            width rounded up to next 16-bit. May be NULL.
        RESULT
            nothing

            NOTES
            Use ScalosGfxARGBSetAlpha() for standard BitMaps (i.e. less than 256 colors).

        SEE ALSO
            ScalosGfxCreateARGBFromBitMap()



        NAME

            ScalosGfxWriteARGBToBitMap -- Copy gfxARGB array to BitMap

        SYNOPSIS

        	ScalosGfxWriteARGBToBitMap(argbh, bm, numberOfColors, colorTable)
        				   A0     A1  D0              A2)

        	VOID ScalosGfxWriteARGBToBitMap(struct ARGBHeader *, struct BitMap *, ULONG, const ULONG *)

         

        FUNCTION
            Creates a copy of gfxARGB array in destination BitMap,
            using pre-defined colorTable. Works only with standard BitMaps, i.e. with
            less than 256 colors. No sophisticated color reduction is performed, but
            bit-fit pens are decided via FindBestPen().

        INPUTS
            argbh - gfxARGB array to read from
            bm - Standard BitMap to write to. BitMap must
            have less than 256 colors.
            numberOfColors - Number of entries in colorTable
            colorTable - color table to use for BitMap.

        RESULT
            nothing

        SEE ALSO


        NAME

            ScalosGfxMedianCut -- Create color-reduced BitMap from gfxARGB array

        SYNOPSIS

        	sac = ScalosGfxMedianCut(argbh, depth, tagList)
        	D0                       A0     D0     A1

        	struct ScalosBitMapAndColor *ScalosGfxMedianCut(struct ARGBHeader *, ULONG, struct TagItem *)

        	struct ScalosBitMapAndColor *ScalosGfxMedianCutTags(struct ARGBHeader *, ULONG, ULONG, ...)

         

        FUNCTION
            Allocate and fill a color-reduced BitMap and a best-match color table from gfxARGB array.
            Either ordered dithering or Floyd-Steinberg dithering will be used for best results.

        INPUTS
            argbh - gfxARGB array to read from
            depth - desired depth of generated BitMap, must be less than 256.
            tagList - array of tagItems, as desribed below, or NULL.

        TAGS
            SCALOSGFX_MedianCutFlags - Flags as described below.
            SCALOSGFX_MedianCutFriendBitMap - struct BitMap *, friend BitMap to use
            for allocating result BitMap
            SCALOSGFX_MedianCutReservedColors - ULONG, number of reserved (unused) color
            entries at start of generated color table.

            FLAGS
            SCALOSGFXFLAGF_MedianCut_FloydSteinberg - If set, Floyd-Steinberg dithering
            will be used for color reduction.

        RESULT
            sac - created ScalosBitMapAndColor pointer, or NULL on failure.

        SEE ALSO


        NAME

            ScalosGfxScaleARGBArray -- Scale given gfxARGB array

        SYNOPSIS

        	argb = ScalosGfxScaleARGBArray(src, destWidth, destHeight, tagList)
        	D0                             A0   A1         A2          A3

        	struct gfxARGB *ScalosGfxScaleARGBArray(const struct ARGBHeader *, ULONG *,
        		ULONG *, struct TagItem *)

        	struct gfxARGB *ScalosGfxScaleARGBArrayTags(const struct ARGBHeader *, ULONG *,
        		ULONG *, ULONG, ...)

         

        FUNCTION
            Scales given gfxARGB array to a new size. Supports both enlarging and shrinking
            gfxARGB arrays.

        INPUTS
            src - source gfxARGB array, will not be modified
            destWidth - desired width, might be internally corrected
            if SCALEFLAGF_CORRECTASPECT is set.
            destHeight - desired height, might be internally corrected
            if SCALEFLAGF_CORRECTASPECT is set.
            tagList - pointer to list of Tags, or NULL.

        TAGS
            SCALOSGFX_ScaleARGBArrayFlags - ULONG, specify some operation flags as listed below.

            FLAGS
            SCALEFLAGF_BICUBIC - allow bicubic scaling
            SCALEFLAGF_BILINEAR - allow bilinear scaling
            SCALEFLAGF_AVERAGE - allow average scaling
            SCALEFLAGF_DOUBLESIZE - allow intermediate step via double size, to improve quality
            SCALEFLAGF_CORRECTASPECT - allow correction of destWidth and destHeight to
            meet source aspect ratio.

        RESULT
            argb - Scaled copy of the source gfxARGB array

        SEE ALSO


        NAME

            ScalosGfxScaleBitMap -- Scale given BitMap

        SYNOPSIS

        	bm = ScalosGfxScaleBitMap(sbma, tagList)
        	D0                        A0    A1

        	struct BitMap *ScalosGfxScaleBitMap(struct ScaleBitMapArg *, struct TagItem *)

        	struct BitMap *ScalosGfxScaleBitMapTags(struct ScaleBitMapArg *, ULONG, ...)

         

        FUNCTION
            Scales given gfxARGB array to a new size. Supports both enlarging and shrinking
            gfxARGB arrays.
        INPUTS
            sbma - Structure with scaling parameters:
            sbma_SourceBM - The original BitMap. This BitMap is not modified.
            sbma_SourceWidth - Width of the source BitMap.
            sbma_SourceHeight - Height of the source BitMap
            sbma_DestWidth - Pointer to Width of resized BitMap, might be internally
            corrected if SCALEFLAGF_CORRECTASPECT is set.
            sbma_DestHeight - Pointer to Height of resized BitMap, might be internally
            corrected if SCALEFLAGF_CORRECTASPECT is set.
            sbma_NumberOfColors - number of entries in color table
            sbma_ColorTable - Color table for both source and resized BitMap.
            sbma_Flags - scaling flags:
            SCALEFLAGF_BICUBIC - allow bicubic scaling
            SCALEFLAGF_BILINEAR - allow bilinear scaling
            SCALEFLAGF_AVERAGE - allow average scaling
            SCALEFLAGF_DOUBLESIZE - allow intermediate scaling step with
            double size, to improve quality
            SCALEFLAGF_CORRECTASPECT - allow correction of destWidth and
            destHeight to meet source aspect ratio.
            sbma_ScreenBM - Firend BitMap used when allocating resized BitMap.
            tagList - pointer to list of Tags, or NULL.

        TAGS
            none defined yet.

        RESULT
            bm - Scaled copy of the original BitMap

        SEE ALSO


        NAME

            ScalosGfxCalculateScaleAspect -- Adjust scaling dimensions to source aspect

        SYNOPSIS

        	ScalosGfxCalculateScaleAspect(sourceWidth, sourceHeight, *destWidth, *destHeight)
        				      D0           D1            A0          A1

        	VOID ScalosGfxCalculateScaleAspect(ULONG, ULONG, ULONG *, ULONG *)

         

        FUNCTION
            Adjusts either destWidth or destHeight according to aspect ratio of
            sourceWidth and soureHeight.

        INPUTS
            sourceWidth - Unscaled width.
            sourceHeight - Unscaled Height;
            destWidth - Pointer to desired scaled width.
            destHeight - Pointer to desired scaled width.

        RESULT
            nothing

        SEE ALSO


        NAME

            ScalosGfxBlitARGB -- Blit rectangle between two gfxARGB array rectangles.

        SYNOPSIS

        	ScalosGfxBlitARGB(destARGB, srcARGB, destLeft, destTop, srcLeft, srcTop, width, height)
        			  A0        A1       D0        D1       D2       D3      D4     D5

        	VOID ScalosGfxBlitARGB(struct ARGBHeader *, const struct ARGBHeader *,
        		LONG, LONG, LONG, LONG, LONG, LONG)

         

        FUNCTION
            Blits user-defined rectangle from srcARGB at specified position into destARGB.
            No alpha handling is performed, destination pixel values are simply
            replaced by source pixels.

        INPUTS
            destARGB - destination gfxARGB array
            srcARGB - source gfxARGB array
            destLeft - Left start position in destARGB.
            destTop - Top start position in destARGB.
            srcLeft - Left start position in srcARGB.
            srcTop - Top start position in srcARGB.
            width - Width of blitted rectangle.
            height - Height of blitted rectangle.

        RESULT
            nothing

        SEE ALSO


        NAME

            ScalosGfxFillRectARGB -- Blit two gfxARGB array rectangles

        SYNOPSIS

        	ScalosGfxFillRectARGB(destARGB, fillARGB, left, top, width, height)
        			      A0        A1        D0    D1   D2     D3

        	VOID ScalosGfxFillRectARGB(struct ARGBHeader *, const struct gfxARGB *,
        		LONG, LONG, LONG, LONG)

         

        FUNCTION
            Blits fillARGB at specified position into destARGB. No alpha handling is
            performed, destination pixel values are just replaced by source pixels.
            Blit always starts at (0,0) in fillARGB.

        INPUTS
            destARGB - destination gfxARGB array.
            fillARGB - source gfxARGB array.
            left - Left start position in destARGB.
            top - Top start position in destARGB.
            width - Width of blitted rectangle.
            height - Height of blitted rectangle.

        RESULT
            nothing

        SEE ALSO


        NAME

            ScalosGfxSetARGB -- Set entire gfxARGB array to given ARGB color

        SYNOPSIS

        	ScalosGfxSetARGB(destARGB, fillARGB)
        			A0         A1

        	VOID ScalosGfxSetARGB(struct ARGBHeader *, const struct gfxARGB *)

         

        FUNCTION
            Set all pixels in entire gfxARGB array to the given ARGB color.

        INPUTS
            destARGB - gfxARGB array to be changed.
            fillARGB - ARGB value to set pixels to.

        RESULT
            nothing

        SEE ALSO


        NAME

            ScalosGfxNewColorMap -- Allocate new color table for ScalosBitMapAndColor

        SYNOPSIS

        	success = ScalosGfxNewColorMap(sac, colorMap, colorEntries)
        	D0                             A0   A1        D0

        	BOOL ScalosGfxNewColorMap(struct ScalosBitMapAndColor *, const ULONG *, ULONG)

         

        FUNCTION
            Allocates a new color table for ScalosBitMapAndColor. The new color table is
            filled with the RGB values from colorMap.
            Any previously color table in ScalosBitMapAndColor is freed.

        INPUTS
            sac - ScalosBitMapAndColor where to store new color table.
            colorMap - RGB values for new color table
            colorEntries - Desired number of entries in new color table

        RESULT
            success - TRUE if new color table was successfully allocated,
            FALSE on failure.

        SEE ALSO


        NAME

            ScalosGfxARGBRectMult -- Multiply RGB value with given factor

        SYNOPSIS

        	ScalosGfxARGBRectMult(rp, numerator, denominator, xMin, yMin, xMax, yMax)
        			      A0  A1         A2           D0    D1    D2    D3

        	VOID ScalosGfxARGBRectMult(struct RastPort *, const struct gfxARGB *,
        		const struct gfxARGB *, WORD, WORD, WORD, WORD)

         

        FUNCTION
            Multiplies RGB values of pixels within a specified rectangle
            with (numerator/denominator). Overflow is clipped to maximum RGB value (255).
            Works only with CyberGraphics generated, high-color or true-color BitMaps.
            Takes Layers in RastPort into account.

        INPUTS
            rp - RastPort with the BitMap to be modified.
            numerator - Scaling factor as numerator:denominator
            denominator - Scaling factor as numerator:denominator
            xMin - Left start of modified rectangle.
            yMin - Top start of modified rectangle.
            xMax - Right end of modified rectangle.
            yMax - Bottom end of modified rectangle.

        RESULT
            nothing

        SEE ALSO


        NAME

            ScalosGfxBlitARGBAlpha -- Alpha blit from gfxARGB array into RastPort

        SYNOPSIS

        	ScalosGfxBlitARGBAlpha(rp, srcH, destLeft, destTop, srcLeft, srcTop, width, height)
        			       A0  A1    D0        D1       D2       D3      D4     D5

        	VOID ScalosGfxBlitARGBAlpha (struct RastPort *, const struct ARGBHeader *,
        		ULONG, ULONG, ULONG, ULONG, ULONG, ULONG)

         

        FUNCTION
            Blit a rectangular area from source gfxARGB array into
            destination RastPort. Alpha (transparency) information in
            source gfxARGB array is fully accounted for.
            Destination RastPort may have Layers.

        INPUTS
            rp - Destination, this RastPort is been drawn to.
            srcH - Source gfxARGB array
            destLeft - Left offset in destination RastPort.
            destTop - Top offset in destination RastPort.
            srcLeft - Left offset in source gfxARGB array.
            srcTop - Left offset in source gfxARGB array.
            width - Width of blit rectangle.
            height - Height of blit rectangle.

        RESULT
            nothing

            NOTES

        SEE ALSO
            ScalosGfxBlitARGBAlphaTagList()


        NAME

            ScalosGfxBlitARGBAlphaTagList -- Alpha blit from gfxARGB array into RastPort

        SYNOPSIS

        	ScalosGfxBlitARGBAlphaTagList(rp, srcH, destLeft, destTop, srcSize, tagList)
        				      A0  A1    D0        D1       A3       A2

        	VOID ScalosGfxBlitARGBAlphaTagList(struct RastPort *, const struct ARGBHeader *,
        		ULONG, ULONG, const struct IBox *, struct TagItem *)

        	VOID ScalosGfxBlitARGBAlphaTags(struct RastPort *, const struct ARGBHeader *,
        		ULONG, ULONG, const struct IBox *, ULONG, ...)

         

        FUNCTION

        INPUTS
            rp - Destination, this RastPort is been drawn to.
            srcH - Source gfxARGB array
            destLeft - Left offset in destination RastPort.
            destTop - Top offset in destination RastPort.
            srcSize - IBox defining both left/top offset in source gfxARGB
            array, and size of blit rectangle.
            tagList - pointer to list of Tags, or NULL.

        TAGS
            SCALOSGFX_BlitIconHilight - const struct ARGB *, ARGB value to use
            for highlighting.Its RGB values are added
            to the destination pixels, with clipping
            to 0..255 range.
            SCALOSGFX_BlitIconAlpha - const UBYTE *, specify alpha array for icon.
            SCALOSGFX_BlitIconTransparency - ULONG, specify alpha for icon, 0...255.
        RESULT
            nothing

        SEE ALSO
            ScalosGfxBlitARGBAlpha()


        NAME

            ScalosGfxBlitIcon -- Alpha blit from RastPort to RastPort

        SYNOPSIS

        	ScalosGfxBlitIcon(rpBackground, rpIcon, left, top, width, height, tagList)
        			  A0            A1      D0    D1   D2     D3      A2

        	VOID ScalosGfxBlitIcon(struct RastPort *, struct RastPort *,
        		ULONG, ULONG, ULONG, ULONG, struct TagItem *)

        	VOID ScalosGfxBlitIconTags(struct RastPort *, struct RastPort *,
        		ULONG, ULONG, ULONG, ULONG, ULONG, ...)

         

        FUNCTION
            Blit a rectangular area from rpIcon into rpBackground, with full
            alpha (transparency) support.
            This function supports RastPorts with Layers.

        INPUTS
            rpBackground - Target RastPort.
            rpIcon - Source RastPort. The BitMap of this RastPort is
            not modified.
            left - left start of blit in rpBackground
            top - top start of blit in rpBackground
            width - width of the blitting rectangle
            height - height of the blitting rectangle
            tagList - pointer to list of Tags, or NULL.

        TAGS
            SCALOSGFX_BlitIconHilight - const struct ARGB *, ARGB value to use
            for highlighting. Its RGB values are
            added to the destination pixels, with
            clipping to 0..255 range.
            SCALOSGFX_BlitIconAlpha - const UBYTE *, specify alpha array for icon.
            SCALOSGFX_BlitIconTransparency - ULONG, specify alpha for icon, 0...255.

        RESULT
            nothing

        SEE ALSO


华夏公益教科书