/*
-----------------------------
v19.2
¥ÊOTLN_DrawName will now hilite the name
	(if selected) with the hilite color
	(used to just invert)
¥ÊOTLN_DrawName will now save and restore
	the text face (Style)
¥ÊOTLN_DrawName will draw the hilit selection
	correctly (?) (a pixel shaved off the bottom
	and one added to the left)

-----------------------------
v19.1
¥Êchanged OTLN_IsVisible
	now deals with shy topics 
	and topics made invisible by user
	(used to blow them off and call them visible!)

IMPLICATIONS:
	[1643] cmd-opt-a will select only those
	layers that are visible
-----------------------------
v19
added OTLN_GetTopicOutline
	given a topic, returns the owning outline
	or error if it is an orphan

added OTLN_STR(18) to report orphaned topics
	error
	
added typedef struct OTLN_OutlineAndTopic
	specifies both an outline and topic
	specified pointer version also
	
changed OTLN_DupCustomData
	it now uses new OTLN_OutlineAndTopic
	to specify source and dest, may be 
	ignored if desired

changed OTLN_DupOutline
	it now will duplicate the root topic
	correctly (the invisible one above all
	other topics)

added OTLN_STR(19, 20) for support of COutline
	errors when duplicating an outline

added to OutlineH structure
	void					*custom_data;
	OTLN_DupCustomData		dup_custom_data;
	OTLN_DisposeCustomData	dispose_custom_data;

modified
	OTLN_DisposeTopic
	OTLN_DisposeOutline
	OTLN_SetOutlineCustomData
	OTLN_GetOutlineCustomData
	OTLN_DupOutline
	to take account for above new fields
-----------------------------
v18a
changed OTLN_DragReorderTopic such that the
	autoscroll test is done without first
	adding 1/2 cell height to the mouse vertial
	pos.  effect: frame rect from front end
	does not need to be compensated for
	don't worry about it, it is doing the right
	thing now

moved OTLN_DragReorderAutoscrollSetup to header
	and into code (was residing in front end)
	
-----------------------------
v18
changed OTLN_DrawSeparationBar
	now takes a Rect to describe left and
	right edge of bar (ignores top/bottom)

added OTLN_DrawOutlineSeparationBar(void)
	to be called after OTLN_Draw, in case
	draw is called while autoscrolling
	(preserves visual integrity of the 
	bar if it just scrolled on from offscreen)

changed OTLN_DragReorderTopic
	now manages autoscrolling with callbacks
	for messaging etc.

added OTLN_Topic_RECENT_CELL macro

added OTLN_ClearRecentRects and its support 
	routine OTLNp_ClearRecentRectsCB.  these
	allow you to ask a topic if it is on 
	the screen (and where) just by looking to see if
	OTLN_Topic_RECENT_CELL is EmptyRect

added	OTLN_FOR_EACH and end each macros
-----------------------------
v17.5

OTLNp_ShrinkString(void *theString, int space_for_string)
now uses TruncText, an internationalizable
string-shortening system level utility

-----------------------------
v17.4

changed all "char *" to "const char *"

added routine
	OTLN_IsVisible, sees if a topic would be
	onscreen, not twirled up out of sight
-----------------------------
v17.3

changed
	OTLN_DupTopic
		if custom data does NOT have a 
	duplicate function, then it will byte copy
	used to be setting to null
	
	OTLN_DupOutline
		only first sister was gettings its
	parent pointer set, now all sisters are
-----------------------------
v17.2
changed
	OTLN_dmInterface::OTLN_SetFontInfo
	to NOT change the string in place, but
	to make a copy and modify that
	this complies with Virtual Memroy
-----------------------------
v17.1
no longer assert fails when duplicating
	an outline
-----------------------------
v17

added new field to TOPIC
	dup_custom_data, contains a pointer to
	a routine to copy the custom data
	when DupOutline or DupTopic is called

changed to utilize new dup_custom_data
	OTLN_SetOutlineCustomData 
	OTLN_SetTopicCallbacks
	OTLN_GetTopicCallbacks
	OTLNp_RecurseDupTopic
	
moved from OTLNp.h to OTLN.h
	OTLN_DrawName
-----------------------------
v16

changed prototype and routine
	OTLN_DragReorderTopic
		to take an optional CELL HEIGHT for 
		those who have cell_height_multipe
		of 1 (for greatest vertical cell
		height flexibility).  With this, the
		drag reordering threshold will remain
		in the center of the cell (the point
		at which it thinks you are dragging
		over the NEXT or PREVIOUS available
		slot is calculated from the 
		cell_height_multiple, but if it is
		set to 1, then you must pass in your
		own CELL HEIGHT.
		(used in Effect Controls window)

added routines
	OTLN_IterateDeepSelection and
	OTLN_IterateDeepSelectionR, this is for 
		iterating over the selection from the 
		most deep to the least deep
		(used in deleting items in project)
	
implications:
	drag-reordering effects should now be more
	intuitively dragging.  ie: insertion bar
	should jump to the next space when you 
	pass thru the MIDDLE of the current cell
	instead of after you pass the bottom of
	the current cell
	
-----------------------------
v15

changed OTLN_FOR_EACH
	no longer have RCE in them!!!	DOH!
	
added typedef struct
	OTLN_DragReorderDataRec, 
		a union of a topic and a long for use
		in drag-reordering.  topic for "drag
		after here" and long for "autoscroll
		by this much"

changed prototype
	OLTN_DragReorderTopicCB to take the new
		union instead of just the topic

changed routine
	OTLN_DragReorderTopic to send in how much
	to scroll by

added routine
	OTLN_GetIndTopic, given a parent and an
		index, returns topic.  if no parent
		given, root is assumed.  zero based

added routine
	OTLN_ReorderTopics: given a parent, an
		old index or topic, and a new index, 
		re-orders the topics within their
		level.  same numbering scheme as LIST
		and BEE (ie: BEE_ReorderLayers, 
		zero based)
-----------------------------

v14
Monday, January 9, 1995

changed
	OTLN_GetRootTopic
	no longer returns the first topic
	under the root
	changed to return the true root, 
	the invisable topic that contains all
	other topics

new routine
	OTLN_GetFirstTopic
	provides the old functionality of 
	OTLN_GetRootTopic, that is, return
	the first topic in the visible 
	outline

new routine 
	OTLN_IsRootTopic 
	tells if the topic
	here is truely the root topic

updated to make use of above routines
	OTLN_IterateOutline
	OTLN_DisposeOutline
	OTLN_RemoveTopic
	
OTLN_CheckOutlineRootMagic
	now uses DH instead of **

OTLN_IterateOutline
	modified to allow you to specify to 
	iterate over a topic's children even if
	there are no children.  will now just
	do nothing, used to be an error.
*/
