Browse Source
			
			
			
			
				
		git-svn-id: svn://svn.sharpdevelop.net/sharpdevelop/trunk@5053 1ccf3a8d-04fe-1044-b7c0-cef0b8235c61shortcuts
				 31 changed files with 1743 additions and 558 deletions
			
			
		@ -0,0 +1,33 @@
				@@ -0,0 +1,33 @@
					 | 
				
			||||
<?xml version="1.0" encoding="utf-8"?> | 
				
			||||
<topic id="5d1af8a2-fc1b-4a1b-b6c1-f33fb14bec1f" revisionNumber="1"> | 
				
			||||
  <developerConceptualDocument xmlns="http://ddue.schemas.microsoft.com/authoring/2003/5" xmlns:xlink="http://www.w3.org/1999/xlink"> | 
				
			||||
    <!-- | 
				
			||||
    <summary> | 
				
			||||
      <para>Optional summary abstract</para> | 
				
			||||
    </summary> | 
				
			||||
    --> | 
				
			||||
    <introduction> | 
				
			||||
      <!-- Uncomment this to generate an outline of the section and sub-section | 
				
			||||
           titles.  Specify a numeric value as the inner text to limit it to | 
				
			||||
           a specific number of sub-topics when creating the outline.  Specify | 
				
			||||
           zero (0) to limit it to top-level sections only.  --> | 
				
			||||
      <!-- <autoOutline /> --> | 
				
			||||
	  <mediaLink><image xlink:href="NamespaceDependencies" placement="center"/></mediaLink> | 
				
			||||
	  <para>As you can see in this dependency graph, AvalonEdit consists of a few  | 
				
			||||
	  sub-namespaces that have cleanly separated jobs.  | 
				
			||||
	  Most of the namespaces have a kind of 'main' class.</para> | 
				
			||||
	  <para>Here is the visual tree of the TextEditor control:</para> | 
				
			||||
	  <mediaLink><image xlink:href="VisualTree" placement="center"/></mediaLink> | 
				
			||||
	  <para>It's important to understand that AvalonEdit is a composite control | 
				
			||||
	  with the three layers: | 
				
			||||
	  <codeEntityReference>T:ICSharpCode.AvalonEdit.TextEditor</codeEntityReference> (main control), | 
				
			||||
	  <codeEntityReference>T:ICSharpCode.AvalonEdit.Editing.TextArea</codeEntityReference> (editing), | 
				
			||||
	  <codeEntityReference>T:ICSharpCode.AvalonEdit.Rendering.TextView</codeEntityReference> (rendering). | 
				
			||||
	  </para><para> | 
				
			||||
	  While the main control provides some convenience methods for common tasks, | 
				
			||||
	  for most advanced features you have to work directly with the inner controls. | 
				
			||||
	  You can access them using <codeInline>textEditor.TextArea</codeInline> or | 
				
			||||
	  <codeInline>textEditor.TextArea.TextView</codeInline>.</para> | 
				
			||||
    </introduction> | 
				
			||||
  </developerConceptualDocument> | 
				
			||||
</topic> | 
				
			||||
@ -0,0 +1,133 @@
				@@ -0,0 +1,133 @@
					 | 
				
			||||
<?xml version="1.0" encoding="utf-8"?> | 
				
			||||
<topic id="47c58b63-f30c-4290-a2f2-881d21227446" revisionNumber="1"> | 
				
			||||
  <developerConceptualDocument xmlns="http://ddue.schemas.microsoft.com/authoring/2003/5" xmlns:xlink="http://www.w3.org/1999/xlink"> | 
				
			||||
      <introduction> | 
				
			||||
      <para> | 
				
			||||
			AvalonEdit comes with a code completion drop down window. | 
				
			||||
			You only have to handle the text entering events to determine | 
				
			||||
			when you want to show the window; all the UI is already done for you. | 
				
			||||
		</para> | 
				
			||||
    </introduction> | 
				
			||||
    <section> | 
				
			||||
      <title>Usage of the Code Completion Window</title> | 
				
			||||
      <content> | 
				
			||||
<code language="cs"> | 
				
			||||
    // in the constructor: | 
				
			||||
    textEditor.TextArea.TextEntering += textEditor_TextArea_TextEntering; | 
				
			||||
    textEditor.TextArea.TextEntered += textEditor_TextArea_TextEntered; | 
				
			||||
} | 
				
			||||
 | 
				
			||||
CompletionWindow completionWindow; | 
				
			||||
 | 
				
			||||
void textEditor_TextArea_TextEntered(object sender, TextCompositionEventArgs e) | 
				
			||||
{ | 
				
			||||
    if (e.Text == ".") { | 
				
			||||
        // Open code completion after the user has pressed dot: | 
				
			||||
        completionWindow = new CompletionWindow(textEditor.TextArea); | 
				
			||||
        IList<ICompletionData> data = completionWindow.CompletionList.CompletionData; | 
				
			||||
        data.Add(new MyCompletionData("Item1")); | 
				
			||||
        data.Add(new MyCompletionData("Item2")); | 
				
			||||
        data.Add(new MyCompletionData("Item3")); | 
				
			||||
        completionWindow.Show(); | 
				
			||||
        completionWindow.Closed += delegate { | 
				
			||||
            completionWindow = null; | 
				
			||||
        }; | 
				
			||||
    } | 
				
			||||
} | 
				
			||||
 | 
				
			||||
void textEditor_TextArea_TextEntering(object sender, TextCompositionEventArgs e) | 
				
			||||
{ | 
				
			||||
    if (e.Text.Length > 0 && completionWindow != null) { | 
				
			||||
        if (!char.IsLetterOrDigit(e.Text[0])) { | 
				
			||||
            // Whenever a non-letter is typed while the completion window is open, | 
				
			||||
            // insert the currently selected element. | 
				
			||||
            completionWindow.CompletionList.RequestInsertion(e); | 
				
			||||
        } | 
				
			||||
    } | 
				
			||||
    // Do not set e.Handled=true. | 
				
			||||
    // We still want to insert the character that was typed. | 
				
			||||
} | 
				
			||||
</code> | 
				
			||||
        <para> | 
				
			||||
        This code will open the code completion window whenever '.' is pressed. | 
				
			||||
        By default, the | 
				
			||||
        <codeEntityReference>T:ICSharpCode.AvalonEdit.CodeCompletion.CompletionWindow</codeEntityReference> | 
				
			||||
        only handles key presses like Tab and Enter to insert the currently | 
				
			||||
        selected item. To also make it complete when keys like '.' or ';' are pressed, | 
				
			||||
        we attach another handler to the <codeInline>TextEntering</codeInline> event  | 
				
			||||
        and tell the completion window to insert the selected item. | 
				
			||||
    	</para> | 
				
			||||
    	<para> | 
				
			||||
    	The <codeInline>CompletionWindow</codeInline> will actually never have | 
				
			||||
    	focus - instead, it hijacks | 
				
			||||
    	the WPF keyboard input events on the text area and passes them through its | 
				
			||||
    	<codeInline>ListBox</codeInline>. | 
				
			||||
    	This allows selecting entries in the completion list using the | 
				
			||||
    	keyboard and normal typing in the editor at the same time. | 
				
			||||
    	</para> | 
				
			||||
    	<para> | 
				
			||||
    	Here is the implementation of the MyCompletionData class used in the code above:  | 
				
			||||
<code language="cs"> | 
				
			||||
/// Implements AvalonEdit ICompletionData interface to provide the entries in the | 
				
			||||
/// completion drop down. | 
				
			||||
public class MyCompletionData : ICompletionData | 
				
			||||
{ | 
				
			||||
    public MyCompletionData(string text) | 
				
			||||
    { | 
				
			||||
        this.Text = text; | 
				
			||||
    } | 
				
			||||
     | 
				
			||||
    public System.Windows.Media.ImageSource Image { | 
				
			||||
        get { return null; } | 
				
			||||
    } | 
				
			||||
     | 
				
			||||
    public string Text { get; private set; } | 
				
			||||
     | 
				
			||||
    // Use this property if you want to show a fancy UIElement in the list. | 
				
			||||
    public object Content { | 
				
			||||
        get { return this.Text; } | 
				
			||||
    } | 
				
			||||
     | 
				
			||||
    public object Description { | 
				
			||||
        get { return "Description for " + this.Text; } | 
				
			||||
    } | 
				
			||||
     | 
				
			||||
    public void Complete(TextArea textArea, ISegment completionSegment, | 
				
			||||
        EventArgs insertionRequestEventArgs) | 
				
			||||
    { | 
				
			||||
        textArea.Document.Replace(completionSegment, this.Text); | 
				
			||||
    } | 
				
			||||
} | 
				
			||||
</code> | 
				
			||||
		Both the content and the description shown may be any content acceptable in WPF, | 
				
			||||
		including custom UIElements. | 
				
			||||
		You may also implement custom logic in the <codeInline>Complete</codeInline> | 
				
			||||
		method if you want to do more than simply inserting the text. | 
				
			||||
		The <codeInline>insertionRequestEventArgs</codeInline> can help decide which | 
				
			||||
		kind of insertion the user wants - depending on how the insertion was triggered, | 
				
			||||
		it is an instance of <codeInline>TextCompositionEventArgs</codeInline>, | 
				
			||||
		<codeInline>KeyEventArgs</codeInline> or <codeInline>MouseEventArgs</codeInline>. | 
				
			||||
    	</para> | 
				
			||||
      </content> | 
				
			||||
    </section> | 
				
			||||
    <section> | 
				
			||||
      <title>Code Completion for C#</title> | 
				
			||||
      <content> | 
				
			||||
      <para> | 
				
			||||
      	Full C# code completion is not in the scope of AvalonEdit. | 
				
			||||
      	You will need a C# parser, a C# type system, and the ability | 
				
			||||
      	to resolve C# expressions in your type system. | 
				
			||||
      </para> | 
				
			||||
      <para> | 
				
			||||
        If you want to learn how this is handled in SharpDevelop, please | 
				
			||||
        see: | 
				
			||||
        <externalLink> | 
				
			||||
		<linkText>Code Completion in SharpDevelop</linkText> | 
				
			||||
		<linkUri>http://wiki.sharpdevelop.net/CodeCompletion.ashx</linkUri> | 
				
			||||
		<linkTarget>_blank</linkTarget> | 
				
			||||
		</externalLink> | 
				
			||||
      </para> | 
				
			||||
      </content> | 
				
			||||
    </section> | 
				
			||||
  </developerConceptualDocument> | 
				
			||||
</topic> | 
				
			||||
@ -0,0 +1,175 @@
				@@ -0,0 +1,175 @@
					 | 
				
			||||
<?xml version="1.0" encoding="utf-8"?> | 
				
			||||
<topic id="5b1854b4-884c-4713-b921-b28e96a1b43e" revisionNumber="1"> | 
				
			||||
  <developerConceptualDocument xmlns="http://ddue.schemas.microsoft.com/authoring/2003/5" xmlns:xlink="http://www.w3.org/1999/xlink"> | 
				
			||||
    <!-- | 
				
			||||
  <summary> | 
				
			||||
    <para>Optional summary abstract</para> | 
				
			||||
  </summary> | 
				
			||||
  --> | 
				
			||||
    <introduction> | 
				
			||||
      <!-- Uncomment this to generate an outline of the section and sub-section | 
				
			||||
         titles.  Specify a numeric value as the inner text to limit it to | 
				
			||||
         a specific number of sub-topics when creating the outline.  Specify | 
				
			||||
         zero (0) to limit it to top-level sections only.  --> | 
				
			||||
      <!-- <autoOutline /> --> | 
				
			||||
      <para>The text editor makes use of several different coordinate systems. | 
				
			||||
		Here's an explanation of them.</para> | 
				
			||||
    </introduction> | 
				
			||||
    <!-- Add one or more top-level section elements.  These are collapsible. | 
				
			||||
       If using <autoOutline /> tag, add an address attribute to identify | 
				
			||||
       it so that it can be jumped to with a hyperlink. --> | 
				
			||||
    <section> | 
				
			||||
      <title>Offset</title> | 
				
			||||
      <content> | 
				
			||||
        <para>In AvalonEdit, an index into the document is called an <newTerm>offset</newTerm>.</para> | 
				
			||||
        <para> | 
				
			||||
			Offsets usually represent the position between two characters. | 
				
			||||
			The first offset at the start of the document is 0; | 
				
			||||
			the offset after the first char in the document is 1. | 
				
			||||
			The last valid offset is <codeInline>document.TextLength</codeInline>, | 
				
			||||
			representing the end of the document. | 
				
			||||
			This is exactly the same as the <codeInline>index</codeInline> parameter | 
				
			||||
			used by methods in the .NET String or StringBuilder classes. | 
				
			||||
        </para> | 
				
			||||
      </content> | 
				
			||||
    </section> | 
				
			||||
    <section> | 
				
			||||
      <title>TextLocation</title> | 
				
			||||
      <content> | 
				
			||||
        <para>The | 
				
			||||
        <codeEntityReference qualifyHint="true">T:ICSharpCode.AvalonEdit.Document.TextLocation</codeEntityReference> | 
				
			||||
        struct represents a Line/Column pair. Line and column are counted from 1.</para> | 
				
			||||
        <para>The document provides the methods | 
				
			||||
				<codeEntityReference qualifyHint="true">M:ICSharpCode.AvalonEdit.Document.TextDocument.GetLocation(System.Int32)</codeEntityReference> | 
				
			||||
				and | 
				
			||||
				<codeEntityReference qualifyHint="true">M:ICSharpCode.AvalonEdit.Document.TextDocument.GetOffset(ICSharpCode.AvalonEdit.Document.TextLocation)</codeEntityReference> | 
				
			||||
			to convert between offsets and <codeInline>TextLocation</codeInline>s.</para> | 
				
			||||
      </content> | 
				
			||||
    </section> | 
				
			||||
    <section> | 
				
			||||
      <title>TextAnchor</title> | 
				
			||||
      <content> | 
				
			||||
      	<para>If you are working with the text editor, you will likely run into the problem | 
				
			||||
      	that you need to store an offset, but want it to adjust automatically whenever | 
				
			||||
      	text is inserted prior to that offset. </para> | 
				
			||||
      	<para>Sure, you could listen to the TextDocument.Changed event and call | 
				
			||||
      	GetNewOffset on the DocumentChangeEventArgs to translate the offset, | 
				
			||||
      	but that gets tedious; especially when your object is short-lived and you | 
				
			||||
      	have to deal with deregistering the event handler at the correct point of time.</para> | 
				
			||||
        <para>A text anchor object stores an Offset, but automatically | 
				
			||||
			updates the offset when text is inserted/removed before the offset. | 
				
			||||
		</para> | 
				
			||||
        <para> | 
				
			||||
			A much simpler solution is to use the | 
				
			||||
			<codeEntityReference qualifyHint="true">T:ICSharpCode.AvalonEdit.Document.TextAnchor</codeEntityReference> | 
				
			||||
			class. | 
				
			||||
			Please take a look at the documentation for that class for more details. | 
				
			||||
		</para> | 
				
			||||
      </content> | 
				
			||||
    </section> | 
				
			||||
    <section> | 
				
			||||
      <title>RelativeTextOffset</title> | 
				
			||||
      <content> | 
				
			||||
        <para>An offset in the document, but relative to the start offset of a <codeEntityReference>T:ICSharpCode.AvalonEdit.Rendering.VisualLine</codeEntityReference>.</para> | 
				
			||||
        <para>Relative text offsets are used to store document offsets in visual lines.</para> | 
				
			||||
        <para>You can convert between relative text offsets and document offsets | 
				
			||||
			by adding/subtracting | 
				
			||||
			<codeEntityReference qualifyHint="true">P:ICSharpCode.AvalonEdit.Rendering.VisualLine.FirstDocumentLine</codeEntityReference>.<codeEntityReference>P:ICSharpCode.AvalonEdit.Document.DocumentLine.Offset</codeEntityReference>. | 
				
			||||
			</para> | 
				
			||||
      </content> | 
				
			||||
    </section> | 
				
			||||
    <section> | 
				
			||||
      <title>VisualColumn</title> | 
				
			||||
      <content> | 
				
			||||
        <para>An integer value that specifies a position inside a VisualLine.</para> | 
				
			||||
        <para> | 
				
			||||
			Not only text has a length in the visual line, but also other VisualLineElements. | 
				
			||||
			VisualColumn is counting from 0 for each visual line. | 
				
			||||
			</para> | 
				
			||||
        <para>For example, tab markers take 2 visual columns (the marker and the tab space), | 
				
			||||
			newline markers take 1 visual column; folding markers take just 1 visual column | 
				
			||||
			even though they are longer in the document text.</para> | 
				
			||||
        <para>Use the | 
				
			||||
			<codeEntityReference qualifyHint="true">M:ICSharpCode.AvalonEdit.Rendering.VisualLine.GetVisualColumn(System.Int32)</codeEntityReference> | 
				
			||||
			and  | 
				
			||||
			<codeEntityReference qualifyHint="true">M:ICSharpCode.AvalonEdit.Rendering.VisualLine.GetRelativeOffset(System.Int32)</codeEntityReference> | 
				
			||||
			methods to convert between | 
				
			||||
			visual columns and relative text offsets.</para> | 
				
			||||
        <alert class="note"> | 
				
			||||
          <para>Do not confuse VisualColumn with text columns. | 
				
			||||
				VisualColumn starts at 0, text column at 1. Text may have different length | 
				
			||||
				in the two coordinate systems (e.g. tab markers, foldings).</para> | 
				
			||||
        </alert> | 
				
			||||
      </content> | 
				
			||||
    </section> | 
				
			||||
    <section> | 
				
			||||
      <title>TextViewPosition</title> | 
				
			||||
      <content> | 
				
			||||
        <para>A Line,Column,VisualColumn triple.</para> | 
				
			||||
        <para>The <codeEntityReference qualifyHint="true">T:ICSharpCode.AvalonEdit.TextViewPosition</codeEntityReference> | 
				
			||||
        	struct can be implicitly converted | 
				
			||||
			to <codeEntityReference qualifyHint="false">T:ICSharpCode.AvalonEdit.Document.TextLocation</codeEntityReference>, | 
				
			||||
			but has the additional VisualColumn information | 
				
			||||
			that is necessary to accurately hold the caret position when | 
				
			||||
			VisualLineElements with DocumentLength 0 are in use.</para> | 
				
			||||
      </content> | 
				
			||||
    </section> | 
				
			||||
    <section> | 
				
			||||
      <title>VisualTop</title> | 
				
			||||
      <content> | 
				
			||||
        <para>A double value that specifies the distance from the top of | 
				
			||||
			the document to the top of a line measured in device-independent pixels.</para> | 
				
			||||
        <para>VisualTop is equivalent to the Y component of a VisualPosition.</para> | 
				
			||||
      </content> | 
				
			||||
    </section> | 
				
			||||
    <section> | 
				
			||||
      <title>VisualPosition</title> | 
				
			||||
      <content> | 
				
			||||
        <para>A Point value (double X,Y) that specifies the position of an | 
				
			||||
			element from the top left document corner measured in device-independent pixels.</para> | 
				
			||||
        <para>To convert a VisualPosition to or from a (mouse) position inside | 
				
			||||
			the TextView, simply subtract or add | 
				
			||||
			<codeEntityReference qualifyHint="true">P:ICSharpCode.AvalonEdit.Rendering.TextView.ScrollOffset</codeEntityReference> | 
				
			||||
			to it. | 
				
			||||
			</para> | 
				
			||||
      </content> | 
				
			||||
    </section> | 
				
			||||
    <relatedTopics> | 
				
			||||
      <!-- One or more of the following: | 
				
			||||
         - A local link | 
				
			||||
         - An external link | 
				
			||||
         - A code entity reference | 
				
			||||
 | 
				
			||||
    <link xlink:href="Other Topic's ID"/> | 
				
			||||
    <link xlink:href="Other Topic's ID">Link inner text</link> | 
				
			||||
 | 
				
			||||
    <externalLink> | 
				
			||||
        <linkText>Link text</linkText> | 
				
			||||
        <linkAlternateText>Optional alternate link text</linkAlternateText> | 
				
			||||
        <linkUri>URI</linkUri> | 
				
			||||
    </externalLink> | 
				
			||||
 | 
				
			||||
    <codeEntityReference>API member ID</codeEntityReference> | 
				
			||||
 | 
				
			||||
    Examples: | 
				
			||||
 | 
				
			||||
    <link xlink:href="00e97994-e9e6-46e0-b420-5be86b2f8270" /> | 
				
			||||
    <link xlink:href="00e97994-e9e6-46e0-b420-5be86b2f8278">Some other topic</link> | 
				
			||||
 | 
				
			||||
    <externalLink> | 
				
			||||
        <linkText>SHFB on CodePlex</linkText> | 
				
			||||
        <linkAlternateText>Go to CodePlex</linkAlternateText> | 
				
			||||
        <linkUri>http://www.codeplex.com/SHFB</linkUri> | 
				
			||||
    </externalLink> | 
				
			||||
 | 
				
			||||
    <codeEntityReference>T:TestDoc.TestClass</codeEntityReference> | 
				
			||||
    <codeEntityReference>P:TestDoc.TestClass.SomeProperty</codeEntityReference> | 
				
			||||
    <codeEntityReference>M:TestDoc.TestClass.#ctor</codeEntityReference> | 
				
			||||
    <codeEntityReference>M:TestDoc.TestClass.#ctor(System.String,System.Int32)</codeEntityReference> | 
				
			||||
    <codeEntityReference>M:TestDoc.TestClass.ToString</codeEntityReference> | 
				
			||||
    <codeEntityReference>M:TestDoc.TestClass.FirstMethod</codeEntityReference> | 
				
			||||
    <codeEntityReference>M:TestDoc.TestClass.SecondMethod(System.Int32,System.String)</codeEntityReference> | 
				
			||||
    --> | 
				
			||||
    </relatedTopics> | 
				
			||||
  </developerConceptualDocument> | 
				
			||||
</topic> | 
				
			||||
@ -0,0 +1,58 @@
				@@ -0,0 +1,58 @@
					 | 
				
			||||
<?xml version="1.0" encoding="utf-8"?> | 
				
			||||
<topic id="440df648-413e-4f42-a28b-6b2b0e9b1084" revisionNumber="1"> | 
				
			||||
  <developerConceptualDocument xmlns="http://ddue.schemas.microsoft.com/authoring/2003/5" xmlns:xlink="http://www.w3.org/1999/xlink"> | 
				
			||||
    <introduction> | 
				
			||||
      <para> | 
				
			||||
			Introduction for 'Folding'. | 
				
			||||
		</para> | 
				
			||||
    </introduction> | 
				
			||||
    <section> | 
				
			||||
      <title>How to use Folding in your application</title> | 
				
			||||
      <content> | 
				
			||||
        <para> | 
				
			||||
        Folding (code collapsing) is implemented as an extension to the editor. | 
				
			||||
        It could have been implemented in a separate assembly without having to | 
				
			||||
        modify the AvalonEdit code.  | 
				
			||||
        A <codeEntityReference>T:ICSharpCode.AvalonEdit.Rendering.VisualLineElementGenerator</codeEntityReference> | 
				
			||||
        takes care of the collapsed sections in the text document; and a custom | 
				
			||||
        margin draws the plus and minus buttons. | 
				
			||||
		</para> | 
				
			||||
		<para>You could use the relevant classes separately; | 
				
			||||
		but, to make it a bit easier to use, the static | 
				
			||||
		<codeEntityReference qualifyHint="true">M:ICSharpCode.AvalonEdit.Folding.FoldingManager.Install</codeEntityReference> | 
				
			||||
		method will create and register the necessary parts automatically.</para> | 
				
			||||
		<para>All that's left for you is to regularly call | 
				
			||||
		<codeEntityReference qualifyHint="true">M:ICSharpCode.AvalonEdit.Folding.FoldingManager.UpdateFoldings</codeEntityReference> | 
				
			||||
		with the list of foldings you want to provide. | 
				
			||||
		You could calculate that list yourself, or you could use a built-in | 
				
			||||
		folding strategy to do it for you.</para> | 
				
			||||
		<para>Here is the full code required to enable folding:  | 
				
			||||
<code language="cs">foldingManager = FoldingManager.Install(textEditor.TextArea); | 
				
			||||
foldingStrategy = new XmlFoldingStrategy(); | 
				
			||||
foldingStrategy.UpdateFoldings(foldingManager, textEditor.Document);</code> | 
				
			||||
		If you want the folding markers to update when the text is changed, | 
				
			||||
		you have to repeat the <codeInline>foldingStrategy.UpdateFoldings</codeInline> call regularly. | 
				
			||||
		</para> | 
				
			||||
      </content> | 
				
			||||
    </section> | 
				
			||||
    <section> | 
				
			||||
      <title>How the FoldingManager works</title> | 
				
			||||
      <content> | 
				
			||||
        <para> | 
				
			||||
	The FoldingManager maintains a list of foldings. The FoldMargin displays those foldings and provides | 
				
			||||
	the UI for collapsing/expanding. | 
				
			||||
	Folded foldings cause the FoldingElementGenerator to produce a line element that spans the whole folded | 
				
			||||
	text section, causing the text generation for the visual line that contains the folding start to | 
				
			||||
	continue after the folding end in another line. | 
				
			||||
	To ensure scrolling works correctly in the presence of foldings, lines inside folded regions must not | 
				
			||||
	be used as start lines for the visual line generation. This is done by setting the line height of all | 
				
			||||
	such lines to 0. To efficiently set the height on a large number of lines and support reverting to the | 
				
			||||
	old height when the folding is uncollapsed, a CollapsedLineSection is used. | 
				
			||||
			</para> | 
				
			||||
      </content> | 
				
			||||
    </section> | 
				
			||||
    <relatedTopics> | 
				
			||||
      <codeEntityReference>T:ICSharpCode.AvalonEdit.Folding.FoldingManager</codeEntityReference> | 
				
			||||
    </relatedTopics> | 
				
			||||
  </developerConceptualDocument> | 
				
			||||
</topic> | 
				
			||||
@ -0,0 +1,12 @@
				@@ -0,0 +1,12 @@
					 | 
				
			||||
<?xml version="1.0" encoding="utf-8"?> | 
				
			||||
<Topics defaultTopic="c52241ea-3eba-4ddf-b463-6349cbff38fd"> | 
				
			||||
  <Topic id="c52241ea-3eba-4ddf-b463-6349cbff38fd" visible="True" /> | 
				
			||||
  <Topic id="e41769b2-38f7-4605-b1d8-9cd22a50a685" visible="True" /> | 
				
			||||
  <Topic id="70c4df51-5ecb-4e24-a574-8c5a84306bd1" visible="True" /> | 
				
			||||
  <Topic id="5d1af8a2-fc1b-4a1b-b6c1-f33fb14bec1f" visible="True" /> | 
				
			||||
  <Topic id="5b1854b4-884c-4713-b921-b28e96a1b43e" visible="True" /> | 
				
			||||
  <Topic id="c06e9832-9ef0-4d65-ac2e-11f7ce9c7774" visible="True" /> | 
				
			||||
  <Topic id="4d4ceb51-154d-43f0-b876-ad9640c5d2d8" visible="True" /> | 
				
			||||
  <Topic id="440df648-413e-4f42-a28b-6b2b0e9b1084" visible="True" /> | 
				
			||||
  <Topic id="47c58b63-f30c-4290-a2f2-881d21227446" visible="True" /> | 
				
			||||
</Topics> | 
				
			||||
@ -0,0 +1,165 @@
				@@ -0,0 +1,165 @@
					 | 
				
			||||
<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="3.5"> | 
				
			||||
  <PropertyGroup> | 
				
			||||
    <!-- The configuration and platform will be used to determine which | 
				
			||||
         assemblies to include from solution and project documentation | 
				
			||||
         sources --> | 
				
			||||
    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration> | 
				
			||||
    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform> | 
				
			||||
    <SchemaVersion>2.0</SchemaVersion> | 
				
			||||
    <ProjectGuid>{850b6602-0a7f-413a-864a-e816b98d7407}</ProjectGuid> | 
				
			||||
    <SHFBSchemaVersion>1.8.0.0</SHFBSchemaVersion> | 
				
			||||
    <!-- AssemblyName, Name, and RootNamespace are not used by SHFB but Visual | 
				
			||||
         Studio adds them anyway --> | 
				
			||||
    <AssemblyName>Documentation</AssemblyName> | 
				
			||||
    <RootNamespace>Documentation</RootNamespace> | 
				
			||||
    <Name>Documentation</Name> | 
				
			||||
    <!-- SHFB properties --> | 
				
			||||
    <OutputPath>.\Help\</OutputPath> | 
				
			||||
    <HtmlHelpName>AvalonEdit Documentation</HtmlHelpName> | 
				
			||||
    <ProjectSummary> | 
				
			||||
    </ProjectSummary> | 
				
			||||
    <MissingTags>Summary, AutoDocumentCtors, Namespace</MissingTags> | 
				
			||||
    <VisibleItems>InheritedMembers, InheritedFrameworkMembers, Protected, ProtectedInternalAsProtected</VisibleItems> | 
				
			||||
    <HtmlHelp1xCompilerPath> | 
				
			||||
    </HtmlHelp1xCompilerPath> | 
				
			||||
    <HtmlHelp2xCompilerPath> | 
				
			||||
    </HtmlHelp2xCompilerPath> | 
				
			||||
    <SandcastlePath> | 
				
			||||
    </SandcastlePath> | 
				
			||||
    <WorkingPath> | 
				
			||||
    </WorkingPath> | 
				
			||||
    <BuildLogFile> | 
				
			||||
    </BuildLogFile> | 
				
			||||
    <FrameworkVersion>3.5</FrameworkVersion> | 
				
			||||
    <HelpTitle>AvalonEdit</HelpTitle> | 
				
			||||
    <CopyrightText>Copyright 2008-2009, Daniel Grunwald</CopyrightText> | 
				
			||||
    <PresentationStyle>Prototype</PresentationStyle> | 
				
			||||
    <HelpFileVersion>4.0.0.0</HelpFileVersion> | 
				
			||||
    <ComponentConfigurations> | 
				
			||||
      <ComponentConfig id="Cached Reflection Index Data" enabled="True"> | 
				
			||||
        <component id="Cached Reflection Index Data" type="SandcastleBuilder.Components.CachedCopyFromIndexComponent" assembly="{@SHFBFolder}SandcastleBuilder.Components.dll"> | 
				
			||||
          <index name="reflection" value="/reflection/apis/api" key="@id" cache="10"> | 
				
			||||
            <cache base="{@SandcastlePath}Data\Reflection" recurse="true" files="*.xml" cacheFile="{@AppDataFolder}Cache\Reflection.cache" /> | 
				
			||||
            <data files="reflection.xml" /> | 
				
			||||
          </index> | 
				
			||||
          <copy name="reflection" source="*" target="/document/reference" /> | 
				
			||||
        </component> | 
				
			||||
      </ComponentConfig> | 
				
			||||
<ComponentConfig id="Cached MSDN URL References" enabled="True"><component id="Cached MSDN URL References" type="SandcastleBuilder.Components.CachedResolveReferenceLinksComponent" assembly="{@SHFBFolder}SandcastleBuilder.Components.dll"><cache filename="{@AppDataFolder}Cache\MsdnUrl.cache" /><targets base="{@SandcastlePath}Data\Reflection" recurse="true" files="*.xml" type="{@SDKLinks}" /><targets files="reflection.xml" type="{@ProjectLinks}" /></component></ComponentConfig> | 
				
			||||
<ComponentConfig id="IntelliSense Component" enabled="True"><component id="IntelliSense Component" type="SandcastleBuilder.Components.IntelliSenseComponent" assembly="{@SHFBFolder}SandcastleBuilder.Components.dll"><!-- Output options (optional) | 
				
			||||
                 Attributes: | 
				
			||||
                    Include Namespaces (false by default) | 
				
			||||
                    Namespaces filename ("Namespaces" if not specified or empty) | 
				
			||||
                    Directory (current folder if not specified or empty) --><output includeNamespaces="false" namespacesFile="Namespaces" folder="{@OutputFolder}" /></component></ComponentConfig> | 
				
			||||
<ComponentConfig id="Cached Framework Comments Index Data" enabled="True"><component id="Cached Framework Comments Index Data" type="SandcastleBuilder.Components.CachedCopyFromIndexComponent" assembly="{@SHFBFolder}SandcastleBuilder.Components.dll"><index name="comments" value="/doc/members/member" key="@name" cache="100"> | 
				
			||||
{@CachedFrameworkCommentList} | 
				
			||||
{@CommentFileList} | 
				
			||||
            </index><copy name="comments" source="*" target="/document/comments" /></component></ComponentConfig> | 
				
			||||
<ComponentConfig id="Code Block Component" enabled="True"><component id="Code Block Component" type="SandcastleBuilder.Components.CodeBlockComponent" assembly="{@SHFBFolder}SandcastleBuilder.Components.dll"> | 
				
			||||
<!-- Base path for relative filenames in source attributes | 
				
			||||
                 (optional) --> | 
				
			||||
<basePath value="{@HtmlEncProjectFolder}" /> | 
				
			||||
<!-- Connect to language filter (optional).  If omitted, | 
				
			||||
                 language filtering is enabled by default. --> | 
				
			||||
<languageFilter value="true" /> | 
				
			||||
<!-- Allow missing source files (Optional).  If omitted, | 
				
			||||
                 it will generate errors if referenced source files | 
				
			||||
                 are missing. --> | 
				
			||||
<allowMissingSource value="false" /> | 
				
			||||
<!-- Remove region markers from imported code blocks.  If omitted, | 
				
			||||
                 region markers in imported code blocks are left alone. --> | 
				
			||||
<removeRegionMarkers value="false" /> | 
				
			||||
<!-- Code colorizer options (required). | 
				
			||||
                 Attributes: | 
				
			||||
                    Language syntax configuration file (required) | 
				
			||||
                    XSLT style file (required) | 
				
			||||
                    "Copy" image file URL (required) | 
				
			||||
                    Default language (optional) | 
				
			||||
                    Enable line numbering (optional) | 
				
			||||
                    Enable outlining (optional) | 
				
			||||
                    Keep XML comment "see" tags within the code (optional) | 
				
			||||
                    Tab size override (optional, 0 = Use syntax file setting) | 
				
			||||
                    Use language name as default title (optional) --> | 
				
			||||
<colorizer syntaxFile="{@SHFBFolder}Colorizer\highlight.xml" styleFile="{@SHFBFolder}Colorizer\highlight.xsl" copyImageUrl="../icons/CopyCode.gif" language="cs" numberLines="false" outlining="false" keepSeeTags="false" tabSize="0" defaultTitle="true" /> | 
				
			||||
</component></ComponentConfig> | 
				
			||||
<ComponentConfig id="Post-transform Component" enabled="True"><component id="Post-transform Component" type="SandcastleBuilder.Components.PostTransformComponent" assembly="{@SHFBFolder}SandcastleBuilder.Components.dll"> | 
				
			||||
<!-- Code colorizer files (required). | 
				
			||||
                 Attributes: | 
				
			||||
                    Stylesheet file (required) | 
				
			||||
                    Script file (required) | 
				
			||||
                    "Copy" image file (required) --> | 
				
			||||
<colorizer stylesheet="{@SHFBFolder}Colorizer\highlight.css" scriptFile="{@SHFBFolder}Colorizer\highlight.js" copyImage="{@SHFBFolder}Colorizer\CopyCode.gif" /> | 
				
			||||
<!-- Base output path for the files (required).  This should match | 
				
			||||
                 the parent folder of the output path of the HTML files (see | 
				
			||||
                 SaveComponent). --> | 
				
			||||
<outputPath value="Output\" /> | 
				
			||||
<!-- Logo image file (optional).  Filename is required. The height, | 
				
			||||
                 width, altText, placement, and alignment attributes are | 
				
			||||
                 optional. --> | 
				
			||||
<logoFile filename="" height="0" width="0" altText="" placement="left" alignment="left" /> | 
				
			||||
</component></ComponentConfig></ComponentConfigurations> | 
				
			||||
    <DocumentationSources> | 
				
			||||
      <DocumentationSource sourceFile="..\ICSharpCode.AvalonEdit\ICSharpCode.AvalonEdit.csproj" /> | 
				
			||||
    </DocumentationSources> | 
				
			||||
    <NamespaceSummaries> | 
				
			||||
      <NamespaceSummaryItem name="(global)" isDocumented="False" /> | 
				
			||||
      <NamespaceSummaryItem name="ICSharpCode.AvalonEdit" isDocumented="True">This is the main AvalonEdit namespace.</NamespaceSummaryItem> | 
				
			||||
      <NamespaceSummaryItem name="ICSharpCode.AvalonEdit.CodeCompletion" isDocumented="True">This namespace contains classes to show the code completion window.</NamespaceSummaryItem> | 
				
			||||
      <NamespaceSummaryItem name="ICSharpCode.AvalonEdit.Document" isDocumented="True">This namespace contains the document model. | 
				
			||||
The most important class here is TextDocument, which represents document that can be displayed and edited in the text editor.</NamespaceSummaryItem> | 
				
			||||
      <NamespaceSummaryItem name="ICSharpCode.AvalonEdit.Editing" isDocumented="True">This namespace is the home of the TextArea class. It manages user input and handles the caret and the selection.</NamespaceSummaryItem> | 
				
			||||
      <NamespaceSummaryItem name="ICSharpCode.AvalonEdit.Folding" isDocumented="True">This namespace contains the folding (code collapsing) implementation.</NamespaceSummaryItem> | 
				
			||||
      <NamespaceSummaryItem name="ICSharpCode.AvalonEdit.Highlighting" isDocumented="True">This namespace contains the engine for highlighting text documents (DocumentHighlighter). | 
				
			||||
Additionally, the class HighlightingColorizer provides integration of the highlighting engine into the text editor GUI.</NamespaceSummaryItem> | 
				
			||||
      <NamespaceSummaryItem name="ICSharpCode.AvalonEdit.Highlighting.Xshd" isDocumented="True">This namespace contains a document model for syntax highlighting definitions (.xshd files).</NamespaceSummaryItem> | 
				
			||||
      <NamespaceSummaryItem name="ICSharpCode.AvalonEdit.Indentation" isDocumented="True">This namespace contains the logic for automatic indentation.</NamespaceSummaryItem> | 
				
			||||
      <NamespaceSummaryItem name="ICSharpCode.AvalonEdit.Rendering" isDocumented="True">This namespace contains the text rendering infrastructure.</NamespaceSummaryItem> | 
				
			||||
      <NamespaceSummaryItem name="ICSharpCode.AvalonEdit.Utils" isDocumented="True">This namespace contains various utility classes.</NamespaceSummaryItem> | 
				
			||||
      <NamespaceSummaryItem name="XamlGeneratedNamespace" isDocumented="False" /> | 
				
			||||
      <NamespaceSummaryItem name="ICSharpCode.AvalonEdit.Xml" isDocumented="True">This namespace contains an error-tolerant XML parser with support for incremental parsing, only reparsing the changed regions of a TextDocument.</NamespaceSummaryItem> | 
				
			||||
    </NamespaceSummaries> | 
				
			||||
    <CleanIntermediates>True</CleanIntermediates> | 
				
			||||
    <SyntaxFilters>Standard</SyntaxFilters> | 
				
			||||
  </PropertyGroup> | 
				
			||||
  <!-- There are no properties for these two groups but they need to appear in | 
				
			||||
       order for Visual Studio to perform the build. --> | 
				
			||||
  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' "> | 
				
			||||
  </PropertyGroup> | 
				
			||||
  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' "> | 
				
			||||
  </PropertyGroup> | 
				
			||||
  <ItemGroup> | 
				
			||||
    <None Include="Coordinate Systems.aml" /> | 
				
			||||
    <None Include="Architecture.aml" /> | 
				
			||||
    <None Include="Code Completion.aml" /> | 
				
			||||
    <None Include="Sample Application.aml" /> | 
				
			||||
    <None Include="Folding.aml" /> | 
				
			||||
    <None Include="Syntax Highlighting.aml" /> | 
				
			||||
    <None Include="Text Rendering.aml" /> | 
				
			||||
    <None Include="Welcome.aml" /> | 
				
			||||
  </ItemGroup> | 
				
			||||
  <ItemGroup> | 
				
			||||
    <ContentLayout Include="ICSharpCode.AvalonEdit.content" /> | 
				
			||||
  </ItemGroup> | 
				
			||||
  <ItemGroup> | 
				
			||||
    <Image Include="Media\WelcomeScreenshot.png"> | 
				
			||||
      <ImageId>WelcomeScreenshot</ImageId> | 
				
			||||
    </Image> | 
				
			||||
    <Image Include="Media\VisualTree.png"> | 
				
			||||
      <ImageId>VisualTree</ImageId> | 
				
			||||
      <AlternateText>Visual Tree</AlternateText> | 
				
			||||
    </Image> | 
				
			||||
    <Image Include="Media\RenderingPipeline.png"> | 
				
			||||
      <ImageId>RenderingPipeline</ImageId> | 
				
			||||
    </Image> | 
				
			||||
    <Image Include="Media\NamespaceDependencies.png"> | 
				
			||||
      <ImageId>NamespaceDependencies</ImageId> | 
				
			||||
      <AlternateText>Namespace Dependency Graph</AlternateText> | 
				
			||||
    </Image> | 
				
			||||
    <Content Include="License.html" /> | 
				
			||||
  </ItemGroup> | 
				
			||||
  <ItemGroup> | 
				
			||||
    <Folder Include="Media\" /> | 
				
			||||
  </ItemGroup> | 
				
			||||
  <!-- Import the SHFB build targets --> | 
				
			||||
  <Import Project="$(SHFBROOT)\SandcastleHelpFileBuilder.targets" /> | 
				
			||||
</Project> | 
				
			||||
@ -0,0 +1,566 @@
				@@ -0,0 +1,566 @@
					 | 
				
			||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> | 
				
			||||
<html xmlns="http://www.w3.org/1999/xhtml"> | 
				
			||||
<head> | 
				
			||||
	<title>License</title> | 
				
			||||
	<meta name="id" content="e41769b2-38f7-4605-b1d8-9cd22a50a685"> | 
				
			||||
	<meta name="revisionNumber" content="1"></meta> | 
				
			||||
	<link rel="stylesheet" type="text/css" href="../styles/presentation.css" /> | 
				
			||||
</head> | 
				
			||||
 | 
				
			||||
<body> | 
				
			||||
 | 
				
			||||
<h3>GNU LESSER GENERAL PUBLIC LICENSE</h3> | 
				
			||||
<p> | 
				
			||||
Version 2.1, February 1999 | 
				
			||||
</p> | 
				
			||||
 | 
				
			||||
<pre>Copyright (C) 1991, 1999 Free Software Foundation, Inc. | 
				
			||||
51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA | 
				
			||||
Everyone is permitted to copy and distribute verbatim copies | 
				
			||||
of this license document, but changing it is not allowed. | 
				
			||||
 | 
				
			||||
[This is the first released version of the Lesser GPL.  It also counts | 
				
			||||
 as the successor of the GNU Library Public License, version 2, hence | 
				
			||||
 the version number 2.1.] | 
				
			||||
</pre> | 
				
			||||
 | 
				
			||||
 | 
				
			||||
<h3>Preamble</h3> | 
				
			||||
 | 
				
			||||
<p> | 
				
			||||
  The licenses for most software are designed to take away your | 
				
			||||
freedom to share and change it.  By contrast, the GNU General Public | 
				
			||||
Licenses are intended to guarantee your freedom to share and change | 
				
			||||
free software--to make sure the software is free for all its users. | 
				
			||||
</p> | 
				
			||||
<p> | 
				
			||||
  This license, the Lesser General Public License, applies to some | 
				
			||||
specially designated software packages--typically libraries--of the | 
				
			||||
Free Software Foundation and other authors who decide to use it.  You | 
				
			||||
can use it too, but we suggest you first think carefully about whether | 
				
			||||
this license or the ordinary General Public License is the better | 
				
			||||
strategy to use in any particular case, based on the explanations below. | 
				
			||||
</p> | 
				
			||||
<p> | 
				
			||||
  When we speak of free software, we are referring to freedom of use, | 
				
			||||
not price.  Our General Public Licenses are designed to make sure that | 
				
			||||
you have the freedom to distribute copies of free software (and charge | 
				
			||||
for this service if you wish); that you receive source code or can get | 
				
			||||
it if you want it; that you can change the software and use pieces of | 
				
			||||
it in new free programs; and that you are informed that you can do | 
				
			||||
these things. | 
				
			||||
</p> | 
				
			||||
<p> | 
				
			||||
  To protect your rights, we need to make restrictions that forbid | 
				
			||||
distributors to deny you these rights or to ask you to surrender these | 
				
			||||
rights.  These restrictions translate to certain responsibilities for | 
				
			||||
you if you distribute copies of the library or if you modify it. | 
				
			||||
</p> | 
				
			||||
<p> | 
				
			||||
  For example, if you distribute copies of the library, whether gratis | 
				
			||||
or for a fee, you must give the recipients all the rights that we gave | 
				
			||||
you.  You must make sure that they, too, receive or can get the source | 
				
			||||
code.  If you link other code with the library, you must provide | 
				
			||||
complete object files to the recipients, so that they can relink them | 
				
			||||
with the library after making changes to the library and recompiling | 
				
			||||
it.  And you must show them these terms so they know their rights. | 
				
			||||
</p> | 
				
			||||
<p> | 
				
			||||
  We protect your rights with a two-step method: (1) we copyright the | 
				
			||||
library, and (2) we offer you this license, which gives you legal | 
				
			||||
permission to copy, distribute and/or modify the library. | 
				
			||||
</p> | 
				
			||||
<p> | 
				
			||||
  To protect each distributor, we want to make it very clear that | 
				
			||||
there is no warranty for the free library.  Also, if the library is | 
				
			||||
modified by someone else and passed on, the recipients should know | 
				
			||||
that what they have is not the original version, so that the original | 
				
			||||
author's reputation will not be affected by problems that might be | 
				
			||||
introduced by others. | 
				
			||||
</p> | 
				
			||||
<p> | 
				
			||||
  Finally, software patents pose a constant threat to the existence of | 
				
			||||
any free program.  We wish to make sure that a company cannot | 
				
			||||
effectively restrict the users of a free program by obtaining a | 
				
			||||
restrictive license from a patent holder.  Therefore, we insist that | 
				
			||||
any patent license obtained for a version of the library must be | 
				
			||||
consistent with the full freedom of use specified in this license. | 
				
			||||
</p> | 
				
			||||
<p> | 
				
			||||
  Most GNU software, including some libraries, is covered by the | 
				
			||||
ordinary GNU General Public License.  This license, the GNU Lesser | 
				
			||||
General Public License, applies to certain designated libraries, and | 
				
			||||
is quite different from the ordinary General Public License.  We use | 
				
			||||
this license for certain libraries in order to permit linking those | 
				
			||||
libraries into non-free programs. | 
				
			||||
</p> | 
				
			||||
<p> | 
				
			||||
  When a program is linked with a library, whether statically or using | 
				
			||||
a shared library, the combination of the two is legally speaking a | 
				
			||||
combined work, a derivative of the original library.  The ordinary | 
				
			||||
General Public License therefore permits such linking only if the | 
				
			||||
entire combination fits its criteria of freedom.  The Lesser General | 
				
			||||
Public License permits more lax criteria for linking other code with | 
				
			||||
the library. | 
				
			||||
</p> | 
				
			||||
<p> | 
				
			||||
  We call this license the "Lesser" General Public License because it | 
				
			||||
does Less to protect the user's freedom than the ordinary General | 
				
			||||
Public License.  It also provides other free software developers Less | 
				
			||||
of an advantage over competing non-free programs.  These disadvantages | 
				
			||||
are the reason we use the ordinary General Public License for many | 
				
			||||
libraries.  However, the Lesser license provides advantages in certain | 
				
			||||
special circumstances. | 
				
			||||
</p> | 
				
			||||
<p> | 
				
			||||
  For example, on rare occasions, there may be a special need to | 
				
			||||
encourage the widest possible use of a certain library, so that it becomes | 
				
			||||
a de-facto standard.  To achieve this, non-free programs must be | 
				
			||||
allowed to use the library.  A more frequent case is that a free | 
				
			||||
library does the same job as widely used non-free libraries.  In this | 
				
			||||
case, there is little to gain by limiting the free library to free | 
				
			||||
software only, so we use the Lesser General Public License. | 
				
			||||
</p> | 
				
			||||
<p> | 
				
			||||
  In other cases, permission to use a particular library in non-free | 
				
			||||
programs enables a greater number of people to use a large body of | 
				
			||||
free software.  For example, permission to use the GNU C Library in | 
				
			||||
non-free programs enables many more people to use the whole GNU | 
				
			||||
operating system, as well as its variant, the GNU/Linux operating | 
				
			||||
system. | 
				
			||||
</p> | 
				
			||||
<p> | 
				
			||||
  Although the Lesser General Public License is Less protective of the | 
				
			||||
users' freedom, it does ensure that the user of a program that is | 
				
			||||
linked with the Library has the freedom and the wherewithal to run | 
				
			||||
that program using a modified version of the Library. | 
				
			||||
</p> | 
				
			||||
<p> | 
				
			||||
  The precise terms and conditions for copying, distribution and | 
				
			||||
modification follow.  Pay close attention to the difference between a | 
				
			||||
"work based on the library" and a "work that uses the library".  The | 
				
			||||
former contains code derived from the library, whereas the latter must | 
				
			||||
be combined with the library in order to run. | 
				
			||||
</p> | 
				
			||||
 | 
				
			||||
<h3>TERMS AND CONDITIONS FOR COPYING, | 
				
			||||
DISTRIBUTION AND MODIFICATION</h3> | 
				
			||||
 | 
				
			||||
 | 
				
			||||
<p> | 
				
			||||
<strong>0.</strong> | 
				
			||||
This License Agreement applies to any software library or other | 
				
			||||
program which contains a notice placed by the copyright holder or | 
				
			||||
other authorized party saying it may be distributed under the terms of | 
				
			||||
this Lesser General Public License (also called "this License"). | 
				
			||||
Each licensee is addressed as "you". | 
				
			||||
</p> | 
				
			||||
<p> | 
				
			||||
  A "library" means a collection of software functions and/or data | 
				
			||||
prepared so as to be conveniently linked with application programs | 
				
			||||
(which use some of those functions and data) to form executables. | 
				
			||||
</p> | 
				
			||||
<p> | 
				
			||||
  The "Library", below, refers to any such software library or work | 
				
			||||
which has been distributed under these terms.  A "work based on the | 
				
			||||
Library" means either the Library or any derivative work under | 
				
			||||
copyright law: that is to say, a work containing the Library or a | 
				
			||||
portion of it, either verbatim or with modifications and/or translated | 
				
			||||
straightforwardly into another language.  (Hereinafter, translation is | 
				
			||||
included without limitation in the term "modification".) | 
				
			||||
</p> | 
				
			||||
<p> | 
				
			||||
  "Source code" for a work means the preferred form of the work for | 
				
			||||
making modifications to it.  For a library, complete source code means | 
				
			||||
all the source code for all modules it contains, plus any associated | 
				
			||||
interface definition files, plus the scripts used to control compilation | 
				
			||||
and installation of the library. | 
				
			||||
</p> | 
				
			||||
<p> | 
				
			||||
  Activities other than copying, distribution and modification are not | 
				
			||||
covered by this License; they are outside its scope.  The act of | 
				
			||||
running a program using the Library is not restricted, and output from | 
				
			||||
such a program is covered only if its contents constitute a work based | 
				
			||||
on the Library (independent of the use of the Library in a tool for | 
				
			||||
writing it).  Whether that is true depends on what the Library does | 
				
			||||
and what the program that uses the Library does. | 
				
			||||
</p> | 
				
			||||
<p> | 
				
			||||
<strong>1.</strong> | 
				
			||||
You may copy and distribute verbatim copies of the Library's | 
				
			||||
complete source code as you receive it, in any medium, provided that | 
				
			||||
you conspicuously and appropriately publish on each copy an | 
				
			||||
appropriate copyright notice and disclaimer of warranty; keep intact | 
				
			||||
all the notices that refer to this License and to the absence of any | 
				
			||||
warranty; and distribute a copy of this License along with the | 
				
			||||
Library. | 
				
			||||
</p> | 
				
			||||
<p> | 
				
			||||
  You may charge a fee for the physical act of transferring a copy, | 
				
			||||
and you may at your option offer warranty protection in exchange for a | 
				
			||||
fee. | 
				
			||||
</p> | 
				
			||||
<p> | 
				
			||||
<strong>2.</strong> | 
				
			||||
You may modify your copy or copies of the Library or any portion | 
				
			||||
of it, thus forming a work based on the Library, and copy and | 
				
			||||
distribute such modifications or work under the terms of Section 1 | 
				
			||||
above, provided that you also meet all of these conditions: | 
				
			||||
</p> | 
				
			||||
 | 
				
			||||
<ul> | 
				
			||||
  <li><strong>a)</strong> | 
				
			||||
       The modified work must itself be a software library.</li> | 
				
			||||
  <li><strong>b)</strong> | 
				
			||||
       You must cause the files modified to carry prominent notices | 
				
			||||
       stating that you changed the files and the date of any change.</li> | 
				
			||||
 | 
				
			||||
  <li><strong>c)</strong> | 
				
			||||
       You must cause the whole of the work to be licensed at no | 
				
			||||
       charge to all third parties under the terms of this License.</li> | 
				
			||||
 | 
				
			||||
  <li><strong>d)</strong> | 
				
			||||
       If a facility in the modified Library refers to a function or a | 
				
			||||
       table of data to be supplied by an application program that uses | 
				
			||||
       the facility, other than as an argument passed when the facility | 
				
			||||
       is invoked, then you must make a good faith effort to ensure that, | 
				
			||||
       in the event an application does not supply such function or | 
				
			||||
       table, the facility still operates, and performs whatever part of | 
				
			||||
       its purpose remains meaningful. | 
				
			||||
       <p> | 
				
			||||
       (For example, a function in a library to compute square roots has | 
				
			||||
       a purpose that is entirely well-defined independent of the | 
				
			||||
       application.  Therefore, Subsection 2d requires that any | 
				
			||||
       application-supplied function or table used by this function must | 
				
			||||
       be optional: if the application does not supply it, the square | 
				
			||||
       root function must still compute square roots.)</p></li> | 
				
			||||
</ul> | 
				
			||||
 | 
				
			||||
<p> | 
				
			||||
These requirements apply to the modified work as a whole.  If identifiable | 
				
			||||
sections of that work are not derived from the Library, and can be | 
				
			||||
reasonably considered independent and separate works in themselves, then | 
				
			||||
this License, and its terms, do not apply to those sections when you | 
				
			||||
distribute them as separate works.  But when you distribute the same | 
				
			||||
sections as part of a whole which is a work based on the Library, the | 
				
			||||
distribution of the whole must be on the terms of this License, whose | 
				
			||||
permissions for other licensees extend to the entire whole, and thus to | 
				
			||||
each and every part regardless of who wrote it. | 
				
			||||
</p> | 
				
			||||
<p> | 
				
			||||
Thus, it is not the intent of this section to claim rights or contest your | 
				
			||||
rights to work written entirely by you; rather, the intent is to exercise | 
				
			||||
the right to control the distribution of derivative or collective works | 
				
			||||
based on the Library. | 
				
			||||
</p> | 
				
			||||
<p> | 
				
			||||
In addition, mere aggregation of another work not based on the Library with | 
				
			||||
the Library (or with a work based on the Library) on a volume of a storage | 
				
			||||
or distribution medium does not bring the other work under the scope of | 
				
			||||
this License. | 
				
			||||
</p> | 
				
			||||
<p> | 
				
			||||
<strong>3.</strong> | 
				
			||||
You may opt to apply the terms of the ordinary GNU General Public | 
				
			||||
License instead of this License to a given copy of the Library.  To do | 
				
			||||
this, you must alter all the notices that refer to this License, so | 
				
			||||
that they refer to the ordinary GNU General Public License, version 2, | 
				
			||||
instead of to this License.  (If a newer version than version 2 of the | 
				
			||||
ordinary GNU General Public License has appeared, then you can specify | 
				
			||||
that version instead if you wish.)  Do not make any other change in | 
				
			||||
these notices. | 
				
			||||
</p> | 
				
			||||
<p> | 
				
			||||
  Once this change is made in a given copy, it is irreversible for | 
				
			||||
that copy, so the ordinary GNU General Public License applies to all | 
				
			||||
subsequent copies and derivative works made from that copy. | 
				
			||||
</p> | 
				
			||||
<p> | 
				
			||||
  This option is useful when you wish to copy part of the code of | 
				
			||||
the Library into a program that is not a library. | 
				
			||||
</p> | 
				
			||||
<p> | 
				
			||||
<strong>4.</strong> | 
				
			||||
You may copy and distribute the Library (or a portion or | 
				
			||||
derivative of it, under Section 2) in object code or executable form | 
				
			||||
under the terms of Sections 1 and 2 above provided that you accompany | 
				
			||||
it with the complete corresponding machine-readable source code, which | 
				
			||||
must be distributed under the terms of Sections 1 and 2 above on a | 
				
			||||
medium customarily used for software interchange. | 
				
			||||
</p> | 
				
			||||
<p> | 
				
			||||
  If distribution of object code is made by offering access to copy | 
				
			||||
from a designated place, then offering equivalent access to copy the | 
				
			||||
source code from the same place satisfies the requirement to | 
				
			||||
distribute the source code, even though third parties are not | 
				
			||||
compelled to copy the source along with the object code. | 
				
			||||
</p> | 
				
			||||
<p> | 
				
			||||
<strong>5.</strong> | 
				
			||||
A program that contains no derivative of any portion of the | 
				
			||||
Library, but is designed to work with the Library by being compiled or | 
				
			||||
linked with it, is called a "work that uses the Library".  Such a | 
				
			||||
work, in isolation, is not a derivative work of the Library, and | 
				
			||||
therefore falls outside the scope of this License. | 
				
			||||
</p> | 
				
			||||
<p> | 
				
			||||
  However, linking a "work that uses the Library" with the Library | 
				
			||||
creates an executable that is a derivative of the Library (because it | 
				
			||||
contains portions of the Library), rather than a "work that uses the | 
				
			||||
library".  The executable is therefore covered by this License. | 
				
			||||
Section 6 states terms for distribution of such executables. | 
				
			||||
</p> | 
				
			||||
<p> | 
				
			||||
  When a "work that uses the Library" uses material from a header file | 
				
			||||
that is part of the Library, the object code for the work may be a | 
				
			||||
derivative work of the Library even though the source code is not. | 
				
			||||
Whether this is true is especially significant if the work can be | 
				
			||||
linked without the Library, or if the work is itself a library.  The | 
				
			||||
threshold for this to be true is not precisely defined by law. | 
				
			||||
</p> | 
				
			||||
<p> | 
				
			||||
  If such an object file uses only numerical parameters, data | 
				
			||||
structure layouts and accessors, and small macros and small inline | 
				
			||||
functions (ten lines or less in length), then the use of the object | 
				
			||||
file is unrestricted, regardless of whether it is legally a derivative | 
				
			||||
work.  (Executables containing this object code plus portions of the | 
				
			||||
Library will still fall under Section 6.) | 
				
			||||
</p> | 
				
			||||
<p> | 
				
			||||
  Otherwise, if the work is a derivative of the Library, you may | 
				
			||||
distribute the object code for the work under the terms of Section 6. | 
				
			||||
Any executables containing that work also fall under Section 6, | 
				
			||||
whether or not they are linked directly with the Library itself. | 
				
			||||
</p> | 
				
			||||
<p> | 
				
			||||
<strong>6.</strong> | 
				
			||||
As an exception to the Sections above, you may also combine or | 
				
			||||
link a "work that uses the Library" with the Library to produce a | 
				
			||||
work containing portions of the Library, and distribute that work | 
				
			||||
under terms of your choice, provided that the terms permit | 
				
			||||
modification of the work for the customer's own use and reverse | 
				
			||||
engineering for debugging such modifications. | 
				
			||||
</p> | 
				
			||||
<p> | 
				
			||||
  You must give prominent notice with each copy of the work that the | 
				
			||||
Library is used in it and that the Library and its use are covered by | 
				
			||||
this License.  You must supply a copy of this License.  If the work | 
				
			||||
during execution displays copyright notices, you must include the | 
				
			||||
copyright notice for the Library among them, as well as a reference | 
				
			||||
directing the user to the copy of this License.  Also, you must do one | 
				
			||||
of these things: | 
				
			||||
</p> | 
				
			||||
 | 
				
			||||
<ul> | 
				
			||||
    <li><strong>a)</strong> Accompany the work with the complete | 
				
			||||
    corresponding machine-readable source code for the Library | 
				
			||||
    including whatever changes were used in the work (which must be | 
				
			||||
    distributed under Sections 1 and 2 above); and, if the work is an | 
				
			||||
    executable linked with the Library, with the complete | 
				
			||||
    machine-readable "work that uses the Library", as object code | 
				
			||||
    and/or source code, so that the user can modify the Library and | 
				
			||||
    then relink to produce a modified executable containing the | 
				
			||||
    modified Library.  (It is understood that the user who changes the | 
				
			||||
    contents of definitions files in the Library will not necessarily | 
				
			||||
    be able to recompile the application to use the modified | 
				
			||||
    definitions.)</li> | 
				
			||||
 | 
				
			||||
    <li><strong>b)</strong> Use a suitable shared library mechanism | 
				
			||||
    for linking with the Library.  A suitable mechanism is one that | 
				
			||||
    (1) uses at run time a copy of the library already present on the | 
				
			||||
    user's computer system, rather than copying library functions into | 
				
			||||
    the executable, and (2) will operate properly with a modified | 
				
			||||
    version of the library, if the user installs one, as long as the | 
				
			||||
    modified version is interface-compatible with the version that the | 
				
			||||
    work was made with.</li> | 
				
			||||
 | 
				
			||||
    <li><strong>c)</strong> Accompany the work with a written offer, | 
				
			||||
    valid for at least three years, to give the same user the | 
				
			||||
    materials specified in Subsection 6a, above, for a charge no more | 
				
			||||
    than the cost of performing this distribution.</li> | 
				
			||||
 | 
				
			||||
    <li><strong>d)</strong> If distribution of the work is made by | 
				
			||||
    offering access to copy from a designated place, offer equivalent | 
				
			||||
    access to copy the above specified materials from the same | 
				
			||||
    place.</li> | 
				
			||||
 | 
				
			||||
    <li><strong>e)</strong> Verify that the user has already received | 
				
			||||
    a copy of these materials or that you have already sent this user | 
				
			||||
    a copy.</li> | 
				
			||||
</ul> | 
				
			||||
 | 
				
			||||
<p> | 
				
			||||
  For an executable, the required form of the "work that uses the | 
				
			||||
Library" must include any data and utility programs needed for | 
				
			||||
reproducing the executable from it.  However, as a special exception, | 
				
			||||
the materials to be distributed need not include anything that is | 
				
			||||
normally distributed (in either source or binary form) with the major | 
				
			||||
components (compiler, kernel, and so on) of the operating system on | 
				
			||||
which the executable runs, unless that component itself accompanies | 
				
			||||
the executable. | 
				
			||||
</p> | 
				
			||||
<p> | 
				
			||||
  It may happen that this requirement contradicts the license | 
				
			||||
restrictions of other proprietary libraries that do not normally | 
				
			||||
accompany the operating system.  Such a contradiction means you cannot | 
				
			||||
use both them and the Library together in an executable that you | 
				
			||||
distribute. | 
				
			||||
</p> | 
				
			||||
<p> | 
				
			||||
<strong>7.</strong> You may place library facilities that are a work | 
				
			||||
based on the Library side-by-side in a single library together with | 
				
			||||
other library facilities not covered by this License, and distribute | 
				
			||||
such a combined library, provided that the separate distribution of | 
				
			||||
the work based on the Library and of the other library facilities is | 
				
			||||
otherwise permitted, and provided that you do these two things: | 
				
			||||
</p> | 
				
			||||
 | 
				
			||||
<ul> | 
				
			||||
    <li><strong>a)</strong> Accompany the combined library with a copy | 
				
			||||
    of the same work based on the Library, uncombined with any other | 
				
			||||
    library facilities.  This must be distributed under the terms of | 
				
			||||
    the Sections above.</li> | 
				
			||||
 | 
				
			||||
    <li><strong>b)</strong> Give prominent notice with the combined | 
				
			||||
    library of the fact that part of it is a work based on the | 
				
			||||
    Library, and explaining where to find the accompanying uncombined | 
				
			||||
    form of the same work.</li> | 
				
			||||
</ul> | 
				
			||||
 | 
				
			||||
<p> | 
				
			||||
<strong>8.</strong> You may not copy, modify, sublicense, link with, | 
				
			||||
or distribute the Library except as expressly provided under this | 
				
			||||
License.  Any attempt otherwise to copy, modify, sublicense, link | 
				
			||||
with, or distribute the Library is void, and will automatically | 
				
			||||
terminate your rights under this License.  However, parties who have | 
				
			||||
received copies, or rights, from you under this License will not have | 
				
			||||
their licenses terminated so long as such parties remain in full | 
				
			||||
compliance. | 
				
			||||
</p> | 
				
			||||
<p> | 
				
			||||
<strong>9.</strong> | 
				
			||||
You are not required to accept this License, since you have not | 
				
			||||
signed it.  However, nothing else grants you permission to modify or | 
				
			||||
distribute the Library or its derivative works.  These actions are | 
				
			||||
prohibited by law if you do not accept this License.  Therefore, by | 
				
			||||
modifying or distributing the Library (or any work based on the | 
				
			||||
Library), you indicate your acceptance of this License to do so, and | 
				
			||||
all its terms and conditions for copying, distributing or modifying | 
				
			||||
the Library or works based on it. | 
				
			||||
</p> | 
				
			||||
<p> | 
				
			||||
<strong>10.</strong> | 
				
			||||
Each time you redistribute the Library (or any work based on the | 
				
			||||
Library), the recipient automatically receives a license from the | 
				
			||||
original licensor to copy, distribute, link with or modify the Library | 
				
			||||
subject to these terms and conditions.  You may not impose any further | 
				
			||||
restrictions on the recipients' exercise of the rights granted herein. | 
				
			||||
You are not responsible for enforcing compliance by third parties with | 
				
			||||
this License. | 
				
			||||
</p> | 
				
			||||
<p> | 
				
			||||
<strong>11.</strong> | 
				
			||||
If, as a consequence of a court judgment or allegation of patent | 
				
			||||
infringement or for any other reason (not limited to patent issues), | 
				
			||||
conditions are imposed on you (whether by court order, agreement or | 
				
			||||
otherwise) that contradict the conditions of this License, they do not | 
				
			||||
excuse you from the conditions of this License.  If you cannot | 
				
			||||
distribute so as to satisfy simultaneously your obligations under this | 
				
			||||
License and any other pertinent obligations, then as a consequence you | 
				
			||||
may not distribute the Library at all.  For example, if a patent | 
				
			||||
license would not permit royalty-free redistribution of the Library by | 
				
			||||
all those who receive copies directly or indirectly through you, then | 
				
			||||
the only way you could satisfy both it and this License would be to | 
				
			||||
refrain entirely from distribution of the Library. | 
				
			||||
</p> | 
				
			||||
<p> | 
				
			||||
If any portion of this section is held invalid or unenforceable under any | 
				
			||||
particular circumstance, the balance of the section is intended to apply, | 
				
			||||
and the section as a whole is intended to apply in other circumstances. | 
				
			||||
</p> | 
				
			||||
<p> | 
				
			||||
It is not the purpose of this section to induce you to infringe any | 
				
			||||
patents or other property right claims or to contest validity of any | 
				
			||||
such claims; this section has the sole purpose of protecting the | 
				
			||||
integrity of the free software distribution system which is | 
				
			||||
implemented by public license practices.  Many people have made | 
				
			||||
generous contributions to the wide range of software distributed | 
				
			||||
through that system in reliance on consistent application of that | 
				
			||||
system; it is up to the author/donor to decide if he or she is willing | 
				
			||||
to distribute software through any other system and a licensee cannot | 
				
			||||
impose that choice. | 
				
			||||
</p> | 
				
			||||
<p> | 
				
			||||
This section is intended to make thoroughly clear what is believed to | 
				
			||||
be a consequence of the rest of this License. | 
				
			||||
</p> | 
				
			||||
<p> | 
				
			||||
<strong>12.</strong> | 
				
			||||
If the distribution and/or use of the Library is restricted in | 
				
			||||
certain countries either by patents or by copyrighted interfaces, the | 
				
			||||
original copyright holder who places the Library under this License may add | 
				
			||||
an explicit geographical distribution limitation excluding those countries, | 
				
			||||
so that distribution is permitted only in or among countries not thus | 
				
			||||
excluded.  In such case, this License incorporates the limitation as if | 
				
			||||
written in the body of this License. | 
				
			||||
</p> | 
				
			||||
<p> | 
				
			||||
<strong>13.</strong> | 
				
			||||
The Free Software Foundation may publish revised and/or new | 
				
			||||
versions of the Lesser General Public License from time to time. | 
				
			||||
Such new versions will be similar in spirit to the present version, | 
				
			||||
but may differ in detail to address new problems or concerns. | 
				
			||||
</p> | 
				
			||||
<p> | 
				
			||||
Each version is given a distinguishing version number.  If the Library | 
				
			||||
specifies a version number of this License which applies to it and | 
				
			||||
"any later version", you have the option of following the terms and | 
				
			||||
conditions either of that version or of any later version published by | 
				
			||||
the Free Software Foundation.  If the Library does not specify a | 
				
			||||
license version number, you may choose any version ever published by | 
				
			||||
the Free Software Foundation. | 
				
			||||
</p> | 
				
			||||
<p> | 
				
			||||
<strong>14.</strong> | 
				
			||||
If you wish to incorporate parts of the Library into other free | 
				
			||||
programs whose distribution conditions are incompatible with these, | 
				
			||||
write to the author to ask for permission.  For software which is | 
				
			||||
copyrighted by the Free Software Foundation, write to the Free | 
				
			||||
Software Foundation; we sometimes make exceptions for this.  Our | 
				
			||||
decision will be guided by the two goals of preserving the free status | 
				
			||||
of all derivatives of our free software and of promoting the sharing | 
				
			||||
and reuse of software generally. | 
				
			||||
</p> | 
				
			||||
<p> | 
				
			||||
<strong>NO WARRANTY</strong> | 
				
			||||
</p> | 
				
			||||
<p> | 
				
			||||
<strong>15.</strong> | 
				
			||||
BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO | 
				
			||||
WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW. | 
				
			||||
EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR | 
				
			||||
OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY | 
				
			||||
KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE | 
				
			||||
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR | 
				
			||||
PURPOSE.  THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE | 
				
			||||
LIBRARY IS WITH YOU.  SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME | 
				
			||||
THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. | 
				
			||||
</p> | 
				
			||||
<p> | 
				
			||||
<strong>16.</strong> | 
				
			||||
IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN | 
				
			||||
WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY | 
				
			||||
AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU | 
				
			||||
FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR | 
				
			||||
CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE | 
				
			||||
LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING | 
				
			||||
RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A | 
				
			||||
FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF | 
				
			||||
SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH | 
				
			||||
DAMAGES. | 
				
			||||
</p> | 
				
			||||
 | 
				
			||||
<h3>END OF TERMS AND CONDITIONS</h3> | 
				
			||||
</body> | 
				
			||||
 | 
				
			||||
</html> | 
				
			||||
| 
		 After Width: | Height: | Size: 30 KiB  | 
| 
		 After Width: | Height: | Size: 31 KiB  | 
| 
		 After Width: | Height: | Size: 9.8 KiB  | 
| 
		 After Width: | Height: | Size: 84 KiB  | 
@ -0,0 +1,78 @@
				@@ -0,0 +1,78 @@
					 | 
				
			||||
<?xml version="1.0" encoding="utf-8"?> | 
				
			||||
<topic id="70c4df51-5ecb-4e24-a574-8c5a84306bd1" revisionNumber="1"> | 
				
			||||
  <developerSampleDocument xmlns="http://ddue.schemas.microsoft.com/authoring/2003/5" xmlns:xlink="http://www.w3.org/1999/xlink"> | 
				
			||||
    <!-- | 
				
			||||
    <summary> | 
				
			||||
      <para>Optional summary abstract</para> | 
				
			||||
    </summary> | 
				
			||||
    --> | 
				
			||||
    <introduction> | 
				
			||||
      <!-- Uncomment this to generate an outline of the section and sub-section | 
				
			||||
           titles.  Specify a numeric value as the inner text to limit it to | 
				
			||||
           a specific number of sub-topics when creating the outline.  Specify | 
				
			||||
           zero (0) to limit it to top-level sections only.  --> | 
				
			||||
      <!-- <autoOutline /> --> | 
				
			||||
      <para>In the SharpDevelop source code download, you will find a small sample | 
				
			||||
	    application in SharpDevelop\samples\AvalonEdit.Sample.</para> | 
				
			||||
    </introduction> | 
				
			||||
     | 
				
			||||
	<mediaLink><image xlink:href="WelcomeScreenshot" placement="center"/></mediaLink> | 
				
			||||
    <!-- <procedure>Optional procedures.  See How To document for procedure layout example.</procedure> --> | 
				
			||||
    <!-- <requirements>Optional requirements section</requirements> --> | 
				
			||||
    <!-- <demonstrates>Optional info about what is demonstrated</demonstrates> --> | 
				
			||||
    <!-- <codeExample>Optional code example</codeExample> --> | 
				
			||||
    <!-- Add one or more top-level section elements.  These are collapsible. | 
				
			||||
         If using <autoOutline />, add an address attribute to identify it | 
				
			||||
         and specify a title so that it can be jumped to with a hyperlink. --> | 
				
			||||
	<section> | 
				
			||||
	  <title>The Code Project article</title> | 
				
			||||
	  <content> | 
				
			||||
	    <para> | 
				
			||||
	     There is a Code Project article based on the sample application: | 
				
			||||
	     <externalLink> | 
				
			||||
    		<linkText>http://www.codeproject.com/KB/edit/AvalonEdit.aspx</linkText> | 
				
			||||
    		<linkUri>http://www.codeproject.com/KB/edit/AvalonEdit.aspx</linkUri> | 
				
			||||
			<linkTarget>_blank</linkTarget> | 
				
			||||
		</externalLink> | 
				
			||||
	    </para> | 
				
			||||
	    <para> | 
				
			||||
	    However, most of the material from that article has been included in this help file. | 
				
			||||
	    </para> | 
				
			||||
	 </content> | 
				
			||||
	</section> | 
				
			||||
	 | 
				
			||||
    <relatedTopics> | 
				
			||||
      <!-- One or more of the following: | 
				
			||||
           - A local link | 
				
			||||
           - An external link | 
				
			||||
           - A code entity reference | 
				
			||||
 | 
				
			||||
      <link xlink:href="Other Topic's ID">Link text</link> | 
				
			||||
      <externalLink> | 
				
			||||
          <linkText>Link text</linkText> | 
				
			||||
          <linkAlternateText>Optional alternate link text</linkAlternateText> | 
				
			||||
          <linkUri>URI</linkUri> | 
				
			||||
      </externalLink> | 
				
			||||
      <codeEntityReference>API member ID</codeEntityReference> | 
				
			||||
 | 
				
			||||
      Examples: | 
				
			||||
 | 
				
			||||
      <link xlink:href="00e97994-e9e6-46e0-b420-5be86b2f8278">Some other topic</link> | 
				
			||||
 | 
				
			||||
      <externalLink> | 
				
			||||
          <linkText>SHFB on CodePlex</linkText> | 
				
			||||
          <linkAlternateText>Go to CodePlex</linkAlternateText> | 
				
			||||
          <linkUri>http://shfb.codeplex.com</linkUri> | 
				
			||||
      </externalLink> | 
				
			||||
 | 
				
			||||
      <codeEntityReference>T:TestDoc.TestClass</codeEntityReference> | 
				
			||||
      <codeEntityReference>P:TestDoc.TestClass.SomeProperty</codeEntityReference> | 
				
			||||
      <codeEntityReference>M:TestDoc.TestClass.#ctor</codeEntityReference> | 
				
			||||
      <codeEntityReference>M:TestDoc.TestClass.#ctor(System.String,System.Int32)</codeEntityReference> | 
				
			||||
      <codeEntityReference>M:TestDoc.TestClass.ToString</codeEntityReference> | 
				
			||||
      <codeEntityReference>M:TestDoc.TestClass.FirstMethod</codeEntityReference> | 
				
			||||
      <codeEntityReference>M:TestDoc.TestClass.SecondMethod(System.Int32,System.String)</codeEntityReference> | 
				
			||||
      --> | 
				
			||||
    </relatedTopics> | 
				
			||||
  </developerSampleDocument> | 
				
			||||
</topic> | 
				
			||||
@ -0,0 +1,187 @@
				@@ -0,0 +1,187 @@
					 | 
				
			||||
<?xml version="1.0" encoding="utf-8"?> | 
				
			||||
<topic id="4d4ceb51-154d-43f0-b876-ad9640c5d2d8" revisionNumber="1"> | 
				
			||||
  <developerConceptualDocument xmlns="http://ddue.schemas.microsoft.com/authoring/2003/5" xmlns:xlink="http://www.w3.org/1999/xlink"> | 
				
			||||
    <introduction> | 
				
			||||
      <para>Probably the most important feature for any text editor is syntax highlighting.</para> | 
				
			||||
      <para>AvalonEdit has a flexible text rendering model, see | 
				
			||||
        <link xlink:href="c06e9832-9ef0-4d65-ac2e-11f7ce9c7774" />. Among the | 
				
			||||
		text rendering extension points is the support for "visual line transformers" that | 
				
			||||
		can change the display of a visual line after it has been constructed by the "visual element generators". | 
				
			||||
		A useful base class implementing IVisualLineTransformer for the purpose of syntax highlighting | 
				
			||||
		is <codeEntityReference>T:ICSharpCode.AvalonEdit.Rendering.DocumentColorizingTransformer</codeEntityReference>. | 
				
			||||
		Take a look at that class' documentation to see | 
				
			||||
		how to write fully custom syntax highlighters. This article only discusses the XML-driven built-in | 
				
			||||
		highlighting engine. | 
				
			||||
		</para> | 
				
			||||
    </introduction> | 
				
			||||
    <section> | 
				
			||||
      <title>The highlighting engine</title> | 
				
			||||
      <content> | 
				
			||||
        <para> | 
				
			||||
			The highlighting engine in AvalonEdit is implemented in the class | 
				
			||||
			<codeEntityReference>T:ICSharpCode.AvalonEdit.Highlighting.DocumentHighlighter</codeEntityReference>. | 
				
			||||
			Highlighting is the process of taking a DocumentLine and constructing | 
				
			||||
			a <codeEntityReference>T:ICSharpCode.AvalonEdit.Highlighting.HighlightedLine</codeEntityReference> | 
				
			||||
			instance for it by assigning colors to different sections of the line. | 
				
			||||
			A <codeInline>HighlightedLine</codeInline> is simply a list of | 
				
			||||
			(possibly nested) highlighted text sections. | 
				
			||||
		</para><para> | 
				
			||||
			The <codeInline>HighlightingColorizer</codeInline> class is the only | 
				
			||||
			link between highlighting and rendering. | 
				
			||||
			It uses a <codeInline>DocumentHighlighter</codeInline> to implement | 
				
			||||
			a line transformer that applies the | 
				
			||||
			highlighting to the visual lines in the rendering process. | 
				
			||||
		</para><para> | 
				
			||||
			Except for this single call, syntax highlighting is independent from the | 
				
			||||
			rendering namespace. To help with other potential uses of the highlighting | 
				
			||||
			engine, the <codeInline>HighlightedLine</codeInline> class has the | 
				
			||||
			method <codeInline>ToHtml()</codeInline> | 
				
			||||
			to produce syntax highlighted HTML source code. | 
				
			||||
		</para> | 
				
			||||
        <para>The highlighting rules used by the highlighting engine to highlight | 
				
			||||
			the document are described by the following classes: | 
				
			||||
			</para> | 
				
			||||
			 | 
				
			||||
<definitionTable> | 
				
			||||
  <definedTerm>HighlightingRuleSet</definedTerm> | 
				
			||||
  <definition>Describes a set of highlighting spans and rules.</definition> | 
				
			||||
  <definedTerm>HighlightingSpan</definedTerm> | 
				
			||||
  <definition>A span consists of two regular expressions (Start and End), a color, | 
				
			||||
			and a child ruleset. | 
				
			||||
			The region between Start and End expressions will be assigned the | 
				
			||||
			given color, and inside that span, the rules of the child | 
				
			||||
			ruleset apply. | 
				
			||||
			If the child ruleset also has <codeInline>HighlightingSpan</codeInline>s, | 
				
			||||
			they can be nested, allowing highlighting constructs like nested comments or one language | 
				
			||||
			embedded in another.</definition> | 
				
			||||
  <definedTerm>HighlightingRule</definedTerm> | 
				
			||||
  <definition>A highlighting rule is regular expression with a color. | 
				
			||||
  			It will matches of the regular expression using that color.</definition> | 
				
			||||
  <definedTerm>HighlightingColor</definedTerm> | 
				
			||||
  <definition>A highlighting color isn't just a color: it consists of a foreground | 
				
			||||
			color, font weight and font style.</definition> | 
				
			||||
</definitionTable> | 
				
			||||
		<para> | 
				
			||||
       The highlighting engine works by first analyzing the spans: whenever a | 
				
			||||
       begin RegEx matches some text, that span is pushed onto a stack. | 
				
			||||
       Whenever the end RegEx of the current span matches some text, | 
				
			||||
       the span is popped from the stack. | 
				
			||||
		</para><para> | 
				
			||||
		Each span has a nested rule set associated with it, which is empty  | 
				
			||||
		by default. This is why keywords won't be highlighted inside comments:  | 
				
			||||
		the span's empty ruleset is active there, so the keyword rule is not applied. | 
				
			||||
		</para><para> | 
				
			||||
		This feature is also used in the string span: the nested span will match  | 
				
			||||
		when a backslash is encountered, and the character following the backslash | 
				
			||||
		will be consumed by the end RegEx of the nested span  | 
				
			||||
		(<codeInline>.</codeInline> matches any character).  | 
				
			||||
		This ensures that <codeInline>\"</codeInline> does not denote the end of the string span; | 
				
			||||
		but <codeInline>\\"</codeInline> still does. | 
				
			||||
		</para><para> | 
				
			||||
		What's great about the highlighting engine is that it highlights only | 
				
			||||
		on-demand, works incrementally, and yet usually requires only a | 
				
			||||
		few KB of memory even for large code files. | 
				
			||||
		</para><para> | 
				
			||||
		On-demand means that when a document is opened, only the lines initially  | 
				
			||||
		visible will be highlighted. When the user scrolls down, highlighting will continue | 
				
			||||
		from the point where it stopped the last time. If the user scrolls quickly, | 
				
			||||
		so that the first visible line is far below the last highlighted line, | 
				
			||||
		then the highlighting engine still has to process all the lines in between | 
				
			||||
		– there might be comment starts in them. However, it will only scan that region | 
				
			||||
		for changes in the span stack; highlighting rules will not be tested. | 
				
			||||
		</para><para> | 
				
			||||
		The stack of active spans is stored at the beginning of every line. | 
				
			||||
		If the user scrolls back up, the lines getting into view can be highlighted  | 
				
			||||
		immediately because the necessary context (the span stack) is still available. | 
				
			||||
		</para><para> | 
				
			||||
		Incrementally means that even if the document is changed, the stored span stacks | 
				
			||||
		will be reused as far as possible. If the user types <codeInline>/*</codeInline>, | 
				
			||||
		that would theoretically cause the whole remainder of the file to become | 
				
			||||
		highlighted in the comment color. | 
				
			||||
		However, because the engine works on-demand, it will only update the span | 
				
			||||
		stacks within the currently visible region and keep a notice  | 
				
			||||
		'the highlighting state is not consistent between line X and line X+1', | 
				
			||||
		where X is the last line in the visible region. | 
				
			||||
		Now, if the user would scroll down, | 
				
			||||
		the highlighting state would be updated and the 'not consistent' notice | 
				
			||||
		would be moved down. But usually, the user will continue typing | 
				
			||||
		and type <codeInline>*/</codeInline> only a few lines later. | 
				
			||||
		Now the highlighting state in the visible region will revert to the normal | 
				
			||||
		'only the main ruleset is on the stack of active spans'.  | 
				
			||||
		When the user now scrolls down below the line with the 'not consistent' marker; | 
				
			||||
		the engine will notice that the old stack and the new stack are identical; | 
				
			||||
		and will remove the 'not consistent' marker.  | 
				
			||||
		This allows reusing the stored span stacks cached from before the user typed | 
				
			||||
		<codeInline>/*</codeInline>. | 
				
			||||
		</para><para> | 
				
			||||
		While the stack of active spans might change frequently inside the lines, | 
				
			||||
		it rarely changes from the beginning of one line to the beginning of the next line. | 
				
			||||
		With most languages, such changes happen only at the start and end of multiline comments. | 
				
			||||
		The highlighting engine exploits this property by storing the list of | 
				
			||||
		span stacks in a special data structure | 
				
			||||
		(<codeEntityReference>T:ICSharpCode.AvalonEdit.Utils.CompressingTreeList{T}</codeEntityReference>). | 
				
			||||
		The memory usage of the highlighting engine is linear to the number of span stack changes; | 
				
			||||
		not to the total number of lines. | 
				
			||||
		This allows the highlighting engine to store the span stacks for big code | 
				
			||||
		files using only a tiny amount of memory, especially in languages like | 
				
			||||
		C# where sequences of <codeInline>//</codeInline> or <codeInline>///</codeInline> | 
				
			||||
		are more popular than <codeInline>/* */</codeInline> comments. | 
				
			||||
       </para> | 
				
			||||
      </content> | 
				
			||||
    </section> | 
				
			||||
    <section> | 
				
			||||
      <title>XML highlighting definitions</title> | 
				
			||||
      <content> | 
				
			||||
        <para>AvalonEdit supports XML syntax highlighting definitions (.xshd files).</para> | 
				
			||||
        <para>In the AvalonEdit source code, you can find the file | 
				
			||||
        <codeInline>ICSharpCode.AvalonEdit\Highlighting\Resources\ModeV2.xsd</codeInline>. | 
				
			||||
        This is an XML schema for the .xshd file format; you can use it to | 
				
			||||
        code completion for .xshd files in XML editors. | 
				
			||||
        </para> | 
				
			||||
        <para>Here is an example highlighting definition for a sub-set of C#: | 
				
			||||
<code language="xml"><![CDATA[ | 
				
			||||
<SyntaxDefinition name="C#" | 
				
			||||
        xmlns="http://icsharpcode.net/sharpdevelop/syntaxdefinition/2008"> | 
				
			||||
    <Color name="Comment" foreground="Green" /> | 
				
			||||
    <Color name="String" foreground="Blue" /> | 
				
			||||
     | 
				
			||||
    <!-- This is the main ruleset. --> | 
				
			||||
    <RuleSet> | 
				
			||||
        <Span color="Comment" begin="//" /> | 
				
			||||
        <Span color="Comment" multiline="true" begin="/\*" end="\*/" /> | 
				
			||||
         | 
				
			||||
        <Span color="String"> | 
				
			||||
            <Begin>"</Begin> | 
				
			||||
            <End>"</End> | 
				
			||||
            <RuleSet> | 
				
			||||
                <!-- nested span for escape sequences --> | 
				
			||||
                <Span begin="\\" end="." /> | 
				
			||||
            </RuleSet> | 
				
			||||
        </Span> | 
				
			||||
         | 
				
			||||
        <Keywords fontWeight="bold" foreground="Blue"> | 
				
			||||
            <Word>if</Word> | 
				
			||||
            <Word>else</Word> | 
				
			||||
            <!-- ... --> | 
				
			||||
        </Keywords> | 
				
			||||
         | 
				
			||||
        <!-- Digits --> | 
				
			||||
        <Rule foreground="DarkBlue"> | 
				
			||||
            \b0[xX][0-9a-fA-F]+  # hex number | 
				
			||||
        |    \b | 
				
			||||
            (    \d+(\.[0-9]+)?   #number with optional floating point | 
				
			||||
            |    \.[0-9]+         #or just starting with floating point | 
				
			||||
            ) | 
				
			||||
            ([eE][+-]?[0-9]+)? # optional exponent | 
				
			||||
        </Rule> | 
				
			||||
    </RuleSet> | 
				
			||||
</SyntaxDefinition> | 
				
			||||
]]></code> | 
				
			||||
        </para> | 
				
			||||
      </content> | 
				
			||||
    </section> | 
				
			||||
    <relatedTopics> | 
				
			||||
      <codeEntityReference>N:ICSharpCode.AvalonEdit.Highlighting</codeEntityReference> | 
				
			||||
    </relatedTopics> | 
				
			||||
  </developerConceptualDocument> | 
				
			||||
</topic> | 
				
			||||
@ -0,0 +1,50 @@
				@@ -0,0 +1,50 @@
					 | 
				
			||||
<?xml version="1.0" encoding="utf-8"?> | 
				
			||||
<topic id="c52241ea-3eba-4ddf-b463-6349cbff38fd" revisionNumber="1"> | 
				
			||||
  <developerConceptualDocument xmlns="http://ddue.schemas.microsoft.com/authoring/2003/5" xmlns:xlink="http://www.w3.org/1999/xlink"> | 
				
			||||
    <summary> | 
				
			||||
      <para>AvalonEdit is a WPF-based extensible text editor.</para> | 
				
			||||
    </summary> | 
				
			||||
    <introduction> | 
				
			||||
      <para>While the WPF RichTextBox is quite powerful, you quickly run into its limits | 
				
			||||
		when trying to use it as a code editor: it's hard to write efficient syntax highlighting for it, | 
				
			||||
		and you cannot really implement features like code folding with the standard RichTextBox.</para> | 
				
			||||
      <para>The problem is: the RichTextBox edits a rich document. | 
				
			||||
		In contrast, AvalonEdit simply edits text.</para> | 
				
			||||
      <para>However, AvalonEdit offers lots of possibilities on how the text document is | 
				
			||||
		displayed - so it is much more suitable for a code editor where things like the text color | 
				
			||||
		are not controlled by the user, but instead depend on the text (syntax highlighting). | 
				
			||||
		</para> | 
				
			||||
    </introduction> | 
				
			||||
     | 
				
			||||
	<mediaLink><image xlink:href="WelcomeScreenshot" placement="center"/></mediaLink> | 
				
			||||
 | 
				
			||||
	<section> | 
				
			||||
	  <title>System requirements</title> | 
				
			||||
	  <content> | 
				
			||||
	    <para>AvalonEdit requires the | 
				
			||||
			<externalLink> | 
				
			||||
			<linkText>.NET Framework 3.5 SP1</linkText> | 
				
			||||
			<linkUri>http://www.microsoft.com/downloads/details.aspx?FamilyID=ab99342f-5d1a-413d-8319-81da479ab0d7&DisplayLang=en</linkUri> | 
				
			||||
			<linkTarget>_blank</linkTarget> | 
				
			||||
			</externalLink>. | 
				
			||||
			For compiling AvalonEdit inside Visual Studio 2008, VS08 SP1 is required. | 
				
			||||
		</para> | 
				
			||||
		<para>AvalonEdit requires FullTrust and will not run as XBAP.</para> | 
				
			||||
	  </content> | 
				
			||||
	</section> | 
				
			||||
	 | 
				
			||||
    <relatedTopics> | 
				
			||||
      <codeEntityReference qualifyHint="true">T:ICSharpCode.AvalonEdit.TextEditor</codeEntityReference> | 
				
			||||
      <externalLink> | 
				
			||||
        <linkText>www.avalonedit.net</linkText> | 
				
			||||
        <linkUri>http://www.avalonedit.net</linkUri> | 
				
			||||
		<linkTarget>_blank</linkTarget> | 
				
			||||
      </externalLink> | 
				
			||||
      <externalLink> | 
				
			||||
        <linkText>www.icsharpcode.net</linkText> | 
				
			||||
        <linkUri>http://www.icsharpcode.net</linkUri> | 
				
			||||
		<linkTarget>_blank</linkTarget> | 
				
			||||
      </externalLink> | 
				
			||||
    </relatedTopics> | 
				
			||||
  </developerConceptualDocument> | 
				
			||||
</topic> | 
				
			||||
@ -1,77 +0,0 @@
				@@ -1,77 +0,0 @@
					 | 
				
			||||
<project schemaVersion="1.6.0.7"> | 
				
			||||
    <assemblies> | 
				
			||||
        <assembly assemblyPath=".\ICSharpCode.AvalonEdit.dll" xmlCommentsPath=".\ICSharpCode.AvalonEdit.xml" commentsOnly="False" /> | 
				
			||||
    </assemblies> | 
				
			||||
    <namespaceSummaries> | 
				
			||||
        <namespaceSummaryItem name="" isDocumented="False" /> | 
				
			||||
        <namespaceSummaryItem name="ICSharpCode.AvalonEdit" isDocumented="True">This is the main AvalonEdit namespace.</namespaceSummaryItem> | 
				
			||||
        <namespaceSummaryItem name="ICSharpCode.AvalonEdit.CodeCompletion" isDocumented="True">This namespace contains classes to show the code completion window.</namespaceSummaryItem> | 
				
			||||
        <namespaceSummaryItem name="ICSharpCode.AvalonEdit.Document" isDocumented="True">This namespace contains the document model. | 
				
			||||
The most important class here is TextDocument, which represents document that can be displayed and edited in the text editor.</namespaceSummaryItem> | 
				
			||||
        <namespaceSummaryItem name="ICSharpCode.AvalonEdit.Editing" isDocumented="True">This namespace is the home of the TextArea class. It manages user input and handles the caret and the selection.</namespaceSummaryItem> | 
				
			||||
        <namespaceSummaryItem name="ICSharpCode.AvalonEdit.Folding" isDocumented="True">This namespace contains the folding implementation.</namespaceSummaryItem> | 
				
			||||
        <namespaceSummaryItem name="ICSharpCode.AvalonEdit.Highlighting" isDocumented="True">This namespace contains the engine for highlighting text documents (DocumentHighlighter). | 
				
			||||
Additionally, the class HighlightingColorizer provides integration of the highlighting engine into the text editor GUI.</namespaceSummaryItem> | 
				
			||||
        <namespaceSummaryItem name="ICSharpCode.AvalonEdit.Highlighting.Xshd" isDocumented="True">This namespace contains a document model for syntax highlighting definitions (.xshd files).</namespaceSummaryItem> | 
				
			||||
        <namespaceSummaryItem name="ICSharpCode.AvalonEdit.Indentation" isDocumented="True">This namespace contains the logic for automatic indentation.</namespaceSummaryItem> | 
				
			||||
        <namespaceSummaryItem name="ICSharpCode.AvalonEdit.Rendering" isDocumented="True">This namespace contains the text rendering infrastructure.</namespaceSummaryItem> | 
				
			||||
        <namespaceSummaryItem name="ICSharpCode.AvalonEdit.Utils" isDocumented="True">This namespace contains various utility classes</namespaceSummaryItem> | 
				
			||||
        <namespaceSummaryItem name="XamlGeneratedNamespace" isDocumented="False" /> | 
				
			||||
    </namespaceSummaries> | 
				
			||||
    <conceptualContent snippetFile=""> | 
				
			||||
        <topics defaultTopic="c52241ea-3eba-4ddf-b463-6349cbff38fd"> | 
				
			||||
            <topic id="c52241ea-3eba-4ddf-b463-6349cbff38fd" file="..\src\Libraries\AvalonEdit\ICSharpCode.AvalonEdit\documentation\Introduction.xml" revision="1" visible="True" /> | 
				
			||||
            <topic id="5b1854b4-884c-4713-b921-b28e96a1b43e" file="..\src\Libraries\AvalonEdit\ICSharpCode.AvalonEdit\documentation\Coordinate Systems.xml" revision="1" visible="True" /> | 
				
			||||
            <topic id="c06e9832-9ef0-4d65-ac2e-11f7ce9c7774" file="..\src\Libraries\AvalonEdit\ICSharpCode.AvalonEdit\documentation\TextRendering.xml" revision="1" visible="True" /> | 
				
			||||
            <topic id="4d4ceb51-154d-43f0-b876-ad9640c5d2d8" file="..\src\Libraries\AvalonEdit\ICSharpCode.AvalonEdit\documentation\SyntaxHighlighting.xml" revision="1" visible="True" /> | 
				
			||||
            <topic id="440df648-413e-4f42-a28b-6b2b0e9b1084" file="..\src\Libraries\AvalonEdit\ICSharpCode.AvalonEdit\documentation\Folding.xml" revision="1" visible="True" /> | 
				
			||||
        </topics> | 
				
			||||
    </conceptualContent> | 
				
			||||
    <componentConfigurations> | 
				
			||||
        <component id="Cached Reflection Index Data" enabled="True" configuration="<component id="Cached Reflection Index Data" type="SandcastleBuilder.Components.CachedCopyFromIndexComponent" assembly="{@SHFBFolder}SandcastleBuilder.Components.dll">
<index name="reflection" value="/reflection/apis/api" key="@id" cache="10">
  <cache base="{@SandcastlePath}Data\Reflection" recurse="true" files="*.xml" cacheFile="{@AppDataFolder}Cache\Reflection.cache" />
  <data files="reflection.xml" />
</index>
<copy name="reflection" source="*" target="/document/reference" />
</component>" /> | 
				
			||||
        <component id="Cached MSDN URL References" enabled="True" configuration="<component id="Cached MSDN URL References" type="SandcastleBuilder.Components.CachedResolveReferenceLinksComponent" assembly="{@SHFBFolder}SandcastleBuilder.Components.dll">
<cache filename="{@AppDataFolder}Cache\MsdnUrl.cache" />
<targets base="{@SandcastlePath}Data\Reflection" recurse="true" files="*.xml" type="{@SDKLinks}" />
<targets files="reflection.xml" type="{@ProjectLinks}" />
</component>" /> | 
				
			||||
        <component id="IntelliSense Component" enabled="True" configuration="<component id="IntelliSense Component" type="SandcastleBuilder.Components.IntelliSenseComponent" assembly="{@SHFBFolder}SandcastleBuilder.Components.dll">
<!-- Output options (optional)
                 Attributes:
                    Include Namespaces (false by default)
                    Namespaces filename ("Namespaces" if not specified or empty)
                    Directory (current folder if not specified or empty) -->
<output includeNamespaces="false" namespacesFile="Namespaces" folder="{@OutputFolder}" />
</component>" /> | 
				
			||||
        <component id="Cached Framework Comments Index Data" enabled="True" configuration="<component id="Cached Framework Comments Index Data" type="SandcastleBuilder.Components.CachedCopyFromIndexComponent" assembly="{@SHFBFolder}SandcastleBuilder.Components.dll">
<index name="comments" value="/doc/members/member" key="@name" cache="100">
{@CachedFrameworkCommentList}
{@CommentFileList}
            </index>
<copy name="comments" source="*" target="/document/comments" />
</component>" /> | 
				
			||||
    </componentConfigurations> | 
				
			||||
    <ProjectSummary /> | 
				
			||||
    <MissingTags>Summary, AutoDocumentCtors, Namespace</MissingTags> | 
				
			||||
    <VisibleItems>InheritedMembers, InheritedFrameworkMembers, Protected, ProtectedInternalAsProtected</VisibleItems> | 
				
			||||
    <HtmlHelp1xCompilerPath path="" /> | 
				
			||||
    <HtmlHelp2xCompilerPath path="" /> | 
				
			||||
    <OutputPath>.\Help\</OutputPath> | 
				
			||||
    <SandcastlePath path="" /> | 
				
			||||
    <WorkingPath path="" /> | 
				
			||||
    <CleanIntermediates>True</CleanIntermediates> | 
				
			||||
    <KeepLogFile>True</KeepLogFile> | 
				
			||||
    <BuildLogFile path="" /> | 
				
			||||
    <HelpFileFormat>HtmlHelp1x</HelpFileFormat> | 
				
			||||
    <CppCommentsFixup>False</CppCommentsFixup> | 
				
			||||
    <FrameworkVersion>3.5</FrameworkVersion> | 
				
			||||
    <IndentHtml>False</IndentHtml> | 
				
			||||
    <Preliminary>False</Preliminary> | 
				
			||||
    <RootNamespaceContainer>False</RootNamespaceContainer> | 
				
			||||
    <RootNamespaceTitle /> | 
				
			||||
    <HelpTitle>AvalonEdit</HelpTitle> | 
				
			||||
    <HtmlHelpName>AvalonEdit Documentation</HtmlHelpName> | 
				
			||||
    <Language>en-US</Language> | 
				
			||||
    <CopyrightHref /> | 
				
			||||
    <CopyrightText>Copyright 2008-2009, Daniel Grunwald</CopyrightText> | 
				
			||||
    <FeedbackEMailAddress /> | 
				
			||||
    <FeedbackEMailLinkText /> | 
				
			||||
    <HeaderText /> | 
				
			||||
    <FooterText /> | 
				
			||||
    <ProjectLinkType>Local</ProjectLinkType> | 
				
			||||
    <SdkLinkType>Msdn</SdkLinkType> | 
				
			||||
    <SdkLinkTarget>Blank</SdkLinkTarget> | 
				
			||||
    <PresentationStyle>Prototype</PresentationStyle> | 
				
			||||
    <NamingMethod>Guid</NamingMethod> | 
				
			||||
    <SyntaxFilters>Standard</SyntaxFilters> | 
				
			||||
    <ShowFeedbackControl>False</ShowFeedbackControl> | 
				
			||||
    <BinaryTOC>True</BinaryTOC> | 
				
			||||
    <IncludeFavorites>False</IncludeFavorites> | 
				
			||||
    <CollectionTocStyle>Hierarchical</CollectionTocStyle> | 
				
			||||
    <IncludeStopWordList>True</IncludeStopWordList> | 
				
			||||
    <PlugInNamespaces>ms.vsipcc+, ms.vsexpresscc+</PlugInNamespaces> | 
				
			||||
    <HelpFileVersion>4.0.0.5048</HelpFileVersion> | 
				
			||||
    <ContentPlacement>AboveNamespaces</ContentPlacement> | 
				
			||||
</project> | 
				
			||||
@ -1,167 +0,0 @@
				@@ -1,167 +0,0 @@
					 | 
				
			||||
<?xml version="1.0" encoding="utf-8"?> | 
				
			||||
<developerConceptualDocument | 
				
			||||
	xmlns="http://ddue.schemas.microsoft.com/authoring/2003/5" | 
				
			||||
	xmlns:xlink="http://www.w3.org/1999/xlink"> | 
				
			||||
	 | 
				
			||||
	<!-- | 
				
			||||
  <summary> | 
				
			||||
    <para>Optional summary abstract</para> | 
				
			||||
  </summary> | 
				
			||||
  --> | 
				
			||||
	 | 
				
			||||
	<introduction> | 
				
			||||
		<!-- Uncomment this to generate an outline of the section and sub-section | 
				
			||||
         titles.  Specify a numeric value as the inner text to limit it to | 
				
			||||
         a specific number of sub-topics when creating the outline.  Specify | 
				
			||||
         zero (0) to limit it to top-level sections only.  --> | 
				
			||||
		<!-- <autoOutline /> --> | 
				
			||||
		 | 
				
			||||
		<para>The text editor makes use of several different coordinate systems. | 
				
			||||
		Here's an explanation of them.</para> | 
				
			||||
	</introduction> | 
				
			||||
	 | 
				
			||||
	<!-- Add one or more top-level section elements.  These are collapsible. | 
				
			||||
       If using <autoOutline /> tag, add an address attribute to identify | 
				
			||||
       it so that it can be jumped to with a hyperlink. --> | 
				
			||||
	<section> | 
				
			||||
		<title>Offset</title> | 
				
			||||
		<content> | 
				
			||||
			<para>The number of characters from the start of the text, counting from 0.</para> | 
				
			||||
			<para>Same as used by String.IndexOf() etc.</para> | 
				
			||||
		</content> | 
				
			||||
	</section> | 
				
			||||
	<section> | 
				
			||||
		<title>TextLocation</title> | 
				
			||||
		<content> | 
				
			||||
			<para>A Line,Column pair. Line and column count from 1.</para> | 
				
			||||
			<para>Use the | 
				
			||||
				TextDocument.<codeEntityReference>M:ICSharpCode.AvalonEdit.Document.TextDocument.GetLocation(System.Int32)</codeEntityReference> | 
				
			||||
				and | 
				
			||||
				TextDocument.<codeEntityReference>M:ICSharpCode.AvalonEdit.Document.TextDocument.GetOffset(ICSharpCode.AvalonEdit.Document.TextLocation)</codeEntityReference> | 
				
			||||
			methods to convert between TextLocation and Offset.</para> | 
				
			||||
		</content> | 
				
			||||
	</section> | 
				
			||||
	<section> | 
				
			||||
		<title>TextAnchor</title> | 
				
			||||
		<content> | 
				
			||||
			<para>A text anchor object stores an Offset, but automatically | 
				
			||||
			updates the offset when text is inserted/removed before the offset. | 
				
			||||
			</para> | 
				
			||||
			<para> | 
				
			||||
			The document keeps weak references to anchors for updating them, | 
				
			||||
			so you don't have to worry about memory leaks using text anchors. | 
				
			||||
			</para> | 
				
			||||
			<para>Use the  | 
				
			||||
			<codeEntityReference>P:ICSharpCode.AvalonEdit.Document.TextAnchor.Offset</codeEntityReference> | 
				
			||||
				property to get the offset from a text anchor. | 
				
			||||
			Use the | 
				
			||||
			<codeEntityReference>M:ICSharpCode.AvalonEdit.Document.TextDocument.CreateAnchor(System.Int32)</codeEntityReference> | 
				
			||||
			method to create an anchor from an offset. | 
				
			||||
			</para> | 
				
			||||
		</content> | 
				
			||||
	</section> | 
				
			||||
	<section> | 
				
			||||
		<title>RelativeTextOffset</title> | 
				
			||||
		<content> | 
				
			||||
			<para>An offset in the document, but relative to the start offset of a VisualLine.</para> | 
				
			||||
			<para>Relative text offsets are used to store document offsets in visual lines.</para> | 
				
			||||
			<para>You can convert between relative text offsets and document offsets | 
				
			||||
			by adding/subtracting | 
				
			||||
			<codeEntityReference>T:ICSharpCode.AvalonEdit.Rendering.VisualLine</codeEntityReference>.<codeEntityReference>P:ICSharpCode.AvalonEdit.Rendering.VisualLine.FirstDocumentLine</codeEntityReference>.<codeEntityReference>P:ICSharpCode.AvalonEdit.Document.DocumentLine.Offset</codeEntityReference>. | 
				
			||||
			</para> | 
				
			||||
		</content> | 
				
			||||
	</section> | 
				
			||||
	<section> | 
				
			||||
		<title>VisualColumn</title> | 
				
			||||
		<content> | 
				
			||||
			<para>An integer value that specifies a position inside a VisualLine.</para> | 
				
			||||
			<para> | 
				
			||||
			Not only text has a length in the visual line, but also other VisualLineElements. | 
				
			||||
			VisualColumn is counting from 0 for each visual line. | 
				
			||||
			</para> | 
				
			||||
			<para>For example, tab markers take 2 visual columns (the marker and the tab space), | 
				
			||||
			newline markers take 1 visual column; folding markers take just 1 visual column | 
				
			||||
			even though they are longer in the document text.</para> | 
				
			||||
			<para>Use the | 
				
			||||
			<codeEntityReference>M:ICSharpCode.AvalonEdit.Rendering.VisualLine.GetVisualColumn(System.Int32)</codeEntityReference> | 
				
			||||
			and  | 
				
			||||
			<codeEntityReference>M:ICSharpCode.AvalonEdit.Rendering.VisualLine.GetRelativeOffset(System.Int32)</codeEntityReference> | 
				
			||||
			methods to convert between | 
				
			||||
			visual columns and relative text offsets.</para> | 
				
			||||
		 | 
				
			||||
			<alert class="note"> | 
				
			||||
				<para>Do not confuse VisualColumn with text columns. | 
				
			||||
				VisualColumn starts at 0, text column at 1. Text may have different length | 
				
			||||
				in the two coordinate systems (e.g. tab markers, foldings).</para> | 
				
			||||
			</alert> | 
				
			||||
		</content> | 
				
			||||
	</section> | 
				
			||||
	<section> | 
				
			||||
		<title>TextViewPosition</title> | 
				
			||||
		<content> | 
				
			||||
			<para>A Line,Column,VisualColumn triple.</para> | 
				
			||||
			<para>Can be implicitly converted | 
				
			||||
			to TextLocation, but has the additional VisualColumn information | 
				
			||||
			that is necessary to accurately hold the caret position when | 
				
			||||
			VisualLineElements with DocumentLength 0 are in use.</para> | 
				
			||||
		</content> | 
				
			||||
	</section> | 
				
			||||
	<section> | 
				
			||||
		<title>VisualTop</title> | 
				
			||||
		<content> | 
				
			||||
			<para>A double value that specifies the distance from the top of | 
				
			||||
			the document to the top of a line measured in device-independent pixels.</para> | 
				
			||||
			<para>VisualTop is equivalent to the Y component of a VisualPosition.</para> | 
				
			||||
		</content> | 
				
			||||
	</section> | 
				
			||||
	<section> | 
				
			||||
		<title>VisualPosition</title> | 
				
			||||
		<content> | 
				
			||||
			<para>A Point value (double X,Y) that specifies the position of an | 
				
			||||
			element from the top left document corner measured in device-independent pixels.</para> | 
				
			||||
			<para>To convert a VisualPosition to or from a (mouse) position inside | 
				
			||||
			the TextView, simply subtract or add | 
				
			||||
			TextView.<codeEntityReference>P:ICSharpCode.AvalonEdit.Rendering.TextView.ScrollOffset</codeEntityReference> | 
				
			||||
			to it. | 
				
			||||
			</para> | 
				
			||||
		</content> | 
				
			||||
	</section> | 
				
			||||
	 | 
				
			||||
	<relatedTopics> | 
				
			||||
		<!-- One or more of the following: | 
				
			||||
         - A local link | 
				
			||||
         - An external link | 
				
			||||
         - A code entity reference | 
				
			||||
 | 
				
			||||
    <link xlink:href="Other Topic's ID"/> | 
				
			||||
    <link xlink:href="Other Topic's ID">Link inner text</link> | 
				
			||||
 | 
				
			||||
    <externalLink> | 
				
			||||
        <linkText>Link text</linkText> | 
				
			||||
        <linkAlternateText>Optional alternate link text</linkAlternateText> | 
				
			||||
        <linkUri>URI</linkUri> | 
				
			||||
    </externalLink> | 
				
			||||
 | 
				
			||||
    <codeEntityReference>API member ID</codeEntityReference> | 
				
			||||
 | 
				
			||||
    Examples: | 
				
			||||
 | 
				
			||||
    <link xlink:href="00e97994-e9e6-46e0-b420-5be86b2f8270" /> | 
				
			||||
    <link xlink:href="00e97994-e9e6-46e0-b420-5be86b2f8278">Some other topic</link> | 
				
			||||
 | 
				
			||||
    <externalLink> | 
				
			||||
        <linkText>SHFB on CodePlex</linkText> | 
				
			||||
        <linkAlternateText>Go to CodePlex</linkAlternateText> | 
				
			||||
        <linkUri>http://www.codeplex.com/SHFB</linkUri> | 
				
			||||
    </externalLink> | 
				
			||||
 | 
				
			||||
    <codeEntityReference>T:TestDoc.TestClass</codeEntityReference> | 
				
			||||
    <codeEntityReference>P:TestDoc.TestClass.SomeProperty</codeEntityReference> | 
				
			||||
    <codeEntityReference>M:TestDoc.TestClass.#ctor</codeEntityReference> | 
				
			||||
    <codeEntityReference>M:TestDoc.TestClass.#ctor(System.String,System.Int32)</codeEntityReference> | 
				
			||||
    <codeEntityReference>M:TestDoc.TestClass.ToString</codeEntityReference> | 
				
			||||
    <codeEntityReference>M:TestDoc.TestClass.FirstMethod</codeEntityReference> | 
				
			||||
    <codeEntityReference>M:TestDoc.TestClass.SecondMethod(System.Int32,System.String)</codeEntityReference> | 
				
			||||
    --> | 
				
			||||
	</relatedTopics> | 
				
			||||
</developerConceptualDocument> | 
				
			||||
@ -1,32 +0,0 @@
				@@ -1,32 +0,0 @@
					 | 
				
			||||
<?xml version="1.0" encoding="utf-8"?> | 
				
			||||
<developerConceptualDocument | 
				
			||||
	xmlns="http://ddue.schemas.microsoft.com/authoring/2003/5" | 
				
			||||
	xmlns:xlink="http://www.w3.org/1999/xlink"> | 
				
			||||
	 | 
				
			||||
	<introduction> | 
				
			||||
		<para> | 
				
			||||
			Introduction for 'Folding'. | 
				
			||||
		</para> | 
				
			||||
	</introduction> | 
				
			||||
	 | 
				
			||||
	<section> | 
				
			||||
		<title>How the FoldingManager works</title> | 
				
			||||
		<content> | 
				
			||||
			<para> | 
				
			||||
	The FoldingManager maintains a list of foldings. The FoldMargin displays those foldings and provides | 
				
			||||
	the UI for collapsing/expanding. | 
				
			||||
	Folded foldings cause the FoldingElementGenerator to produce a line element that spans the whole folded | 
				
			||||
	text section, causing the text generation for the visual line that contains the folding start to | 
				
			||||
	continue after the folding end in another line. | 
				
			||||
	To ensure scrolling works correctly in the presence of foldings, lines inside folded regions must not | 
				
			||||
	be used as start lines for the visual line generation. This is done by setting the line height of all | 
				
			||||
	such lines to 0. To efficiently set the height on a large number of lines and support reverting to the | 
				
			||||
	old height when the folding is uncollapsed, a CollapsedLineSection is used. | 
				
			||||
			</para> | 
				
			||||
		</content> | 
				
			||||
	</section> | 
				
			||||
	 | 
				
			||||
	<relatedTopics> | 
				
			||||
		<codeEntityReference>T:ICSharpCode.AvalonEdit.Folding.FoldingManager</codeEntityReference> | 
				
			||||
	</relatedTopics> | 
				
			||||
</developerConceptualDocument> | 
				
			||||
@ -1,72 +0,0 @@
				@@ -1,72 +0,0 @@
					 | 
				
			||||
<?xml version="1.0" encoding="utf-8"?> | 
				
			||||
<developerConceptualDocument | 
				
			||||
	xmlns="http://ddue.schemas.microsoft.com/authoring/2003/5" | 
				
			||||
	xmlns:xlink="http://www.w3.org/1999/xlink"> | 
				
			||||
	 | 
				
			||||
	<summary> | 
				
			||||
		<para>AvalonEdit is a WPF-based extensible text editor.</para> | 
				
			||||
	</summary> | 
				
			||||
	 | 
				
			||||
	<introduction> | 
				
			||||
		<para>While the WPF RichTextBox is quite powerful, you quickly run into its limits | 
				
			||||
		when trying to use it as a code editor: it's hard to write efficient syntax highlighting for it, | 
				
			||||
		and you cannot really implement features like code folding with the standard RichTextBox.</para> | 
				
			||||
		<para>The problem is: the RichTextBox edits a rich document. | 
				
			||||
		In contrast, AvalonEdit simply edits text.</para> | 
				
			||||
		<para>However, AvalonEdit offers lots of possibilities on how the text document is | 
				
			||||
		displayed - so it is much more suitable for a code editor where things like the text color | 
				
			||||
		are not controlled by the user, but instead depend on the text (syntax highlighting).</para> | 
				
			||||
	</introduction> | 
				
			||||
	 | 
				
			||||
	<!-- TODO: screenshot--> | 
				
			||||
	 | 
				
			||||
	<relatedTopics> | 
				
			||||
		<codeEntityReference>T:ICSharpCode.AvalonEdit.TextEditor</codeEntityReference> | 
				
			||||
		 | 
				
			||||
		<externalLink> | 
				
			||||
			<linkText>www.avalonedit.net</linkText> | 
				
			||||
			<linkUri>http://www.avalonedit.net</linkUri> | 
				
			||||
		</externalLink> | 
				
			||||
		 | 
				
			||||
		<externalLink> | 
				
			||||
			<linkText>www.icsharpcode.net</linkText> | 
				
			||||
			<linkUri>http://www.icsharpcode.net</linkUri> | 
				
			||||
		</externalLink> | 
				
			||||
		 | 
				
			||||
		<!-- One or more of the following: | 
				
			||||
         - A local link | 
				
			||||
         - An external link | 
				
			||||
         - A code entity reference | 
				
			||||
 | 
				
			||||
    <link xlink:href="Other Topic's ID"/> | 
				
			||||
    <link xlink:href="Other Topic's ID">Link inner text</link> | 
				
			||||
 | 
				
			||||
    <externalLink> | 
				
			||||
        <linkText>Link text</linkText> | 
				
			||||
        <linkAlternateText>Optional alternate link text</linkAlternateText> | 
				
			||||
        <linkUri>URI</linkUri> | 
				
			||||
    </externalLink> | 
				
			||||
 | 
				
			||||
    <codeEntityReference>API member ID</codeEntityReference> | 
				
			||||
 | 
				
			||||
    Examples: | 
				
			||||
 | 
				
			||||
    <link xlink:href="00e97994-e9e6-46e0-b420-5be86b2f8270" /> | 
				
			||||
    <link xlink:href="00e97994-e9e6-46e0-b420-5be86b2f8278">Some other topic</link> | 
				
			||||
 | 
				
			||||
    <externalLink> | 
				
			||||
        <linkText>SHFB on CodePlex</linkText> | 
				
			||||
        <linkAlternateText>Go to CodePlex</linkAlternateText> | 
				
			||||
        <linkUri>http://www.codeplex.com/SHFB</linkUri> | 
				
			||||
    </externalLink> | 
				
			||||
 | 
				
			||||
    <codeEntityReference>T:TestDoc.TestClass</codeEntityReference> | 
				
			||||
    <codeEntityReference>P:TestDoc.TestClass.SomeProperty</codeEntityReference> | 
				
			||||
    <codeEntityReference>M:TestDoc.TestClass.#ctor</codeEntityReference> | 
				
			||||
    <codeEntityReference>M:TestDoc.TestClass.#ctor(System.String,System.Int32)</codeEntityReference> | 
				
			||||
    <codeEntityReference>M:TestDoc.TestClass.ToString</codeEntityReference> | 
				
			||||
    <codeEntityReference>M:TestDoc.TestClass.FirstMethod</codeEntityReference> | 
				
			||||
    <codeEntityReference>M:TestDoc.TestClass.SecondMethod(System.Int32,System.String)</codeEntityReference> | 
				
			||||
    --> | 
				
			||||
	</relatedTopics> | 
				
			||||
</developerConceptualDocument> | 
				
			||||
@ -1,55 +0,0 @@
				@@ -1,55 +0,0 @@
					 | 
				
			||||
<?xml version="1.0" encoding="utf-8"?> | 
				
			||||
<developerConceptualDocument | 
				
			||||
	xmlns="http://ddue.schemas.microsoft.com/authoring/2003/5" | 
				
			||||
	xmlns:xlink="http://www.w3.org/1999/xlink"> | 
				
			||||
	 | 
				
			||||
	<introduction> | 
				
			||||
		<para>Probably the most important feature for any text editor is syntax highlighting.</para> | 
				
			||||
		<para>AvalonEdit has a flexible text rendering model, see "Text Rendering". Among the | 
				
			||||
		Text Rendering extension points is the support for "visual line transformers" that | 
				
			||||
		can change the display of a visual line after it has been constructed by the "visual element generators". | 
				
			||||
		A useful base class implementing IVisualLineTransformer for the purpose of syntax highlighting | 
				
			||||
		is DocumentColorizingTransformer. Take a look at that class' documentation to see | 
				
			||||
		how to write fully custom syntax highlighters. This article only discusses the XML-driven built-in | 
				
			||||
		highlighting engine. | 
				
			||||
		</para> | 
				
			||||
	</introduction> | 
				
			||||
	 | 
				
			||||
	<section> | 
				
			||||
		<title>The highlighting engine</title> | 
				
			||||
		<content> | 
				
			||||
			<para> | 
				
			||||
			The core engine of the higlighting is the class DocumentHighlighter. It tracks changes | 
				
			||||
			to a TextDocument and can produce HighlightedLines from DocumentLines. | 
				
			||||
			A HighlightedLine is simply a list of (possibly nested) highlighted text sections. | 
				
			||||
			</para> | 
				
			||||
			<para>The highlighting rules used by the highlighting engine to highlight | 
				
			||||
			the document are described by the following classes: | 
				
			||||
			- HighlightingRuleSet: describes a set of highlighting spans and rules | 
				
			||||
			- HighlightingSpan: consists of Start and End regular expressions, a color, and a | 
				
			||||
			child ruleset. The region between Start and End expressions will be | 
				
			||||
			assigned the given color, and inside that span, the rules of the child | 
				
			||||
			ruleset apply (instead of the default rules). | 
				
			||||
			If the child ruleset also has HighlightingSpans, they can be nested, | 
				
			||||
			allowing highlighting constructs like nested comments or one language | 
				
			||||
			embedded in another. | 
				
			||||
			- HighlightingRule: A regular expression with a color. Highlights matches of the | 
				
			||||
			regular expression using that color. | 
				
			||||
			- HighlightingColor: | 
				
			||||
			A highlighting color isn't just a color: it consists of a foreground | 
				
			||||
			color, font weight and font style. | 
				
			||||
			</para> | 
				
			||||
		</content> | 
				
			||||
	</section> | 
				
			||||
	 | 
				
			||||
	<section> | 
				
			||||
		<title>XML highlighting definitions</title> | 
				
			||||
		<content> | 
				
			||||
			<para>AvalonEdit supports XML syntax highlighting definitions (.xshd files).</para> | 
				
			||||
		</content> | 
				
			||||
	</section> | 
				
			||||
	 | 
				
			||||
	<relatedTopics> | 
				
			||||
		<codeEntityReference>N:ICSharpCode.AvalonEdit.Highlighting</codeEntityReference> | 
				
			||||
	</relatedTopics> | 
				
			||||
</developerConceptualDocument> | 
				
			||||
					Loading…
					
					
				
		Reference in new issue