diff dwt/custom/Bullet.d @ 41:6337764516f1

Sync dwt/custom with dwt-linux (took copy of complete folder)
author Frank Benoit <benoit@tionex.de>
date Tue, 07 Oct 2008 16:29:55 +0200
parents f565d3a95c0a
children
line wrap: on
line diff
--- a/dwt/custom/Bullet.d	Tue Oct 07 14:41:31 2008 +0200
+++ b/dwt/custom/Bullet.d	Tue Oct 07 16:29:55 2008 +0200
@@ -1,5 +1,5 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2006 IBM Corporation and others.
+/*******************************************************************************
+ * Copyright (c) 2000, 2008 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -7,154 +7,157 @@
  *
  * Contributors:
  *     IBM Corporation - initial API and implementation
- *     
  * Port to the D programming language:
- *     Jacob Carlborg <jacob.carlborg@gmail.com>
+ *     Frank Benoit <benoit@tionex.de>
  *******************************************************************************/
 module dwt.custom.Bullet;
 
+import dwt.dwthelper.utils;
+
 import dwt.DWT;
 import dwt.custom.StyleRange;
-
-import dwt.dwthelper.string;
+import dwt.custom.ST;
 import dwt.dwthelper.System;
 
 /**
  * Instances of this class represent bullets in the <code>StyledText</code>.
  * <p>
- * The toHash() method in this class uses the values of the public
+ * The hashCode() method in this class uses the values of the public
  * fields to compute the hash value. When storing instances of the
  * class in hashed collections, do not modify these fields after the
- * object has been inserted.  
+ * object has been inserted.
  * </p>
  * <p>
  * Application code does <em>not</em> need to explicitly release the
  * resources managed by each instance when those instances are no longer
  * required, and thus no <code>dispose()</code> method is provided.
  * </p>
- * 
+ *
  * @see StyledText#setLineBullet(int, int, Bullet)
- * 
+ * @see <a href="http://www.eclipse.org/swt/">Sample code and further information</a>
+ *
  * @since 3.2
  */
 public class Bullet {
+    /**
+    * The bullet type.  Possible values are:
+    * <ul>
+    * <li><code>ST.BULLET_DOT</code></li>
+    * <li><code>ST.BULLET_NUMBER</code></li>
+    * <li><code>ST.BULLET_LETTER_LOWER</code></li>
+    * <li><code>ST.BULLET_LETTER_UPPER</code></li>
+    * <li><code>ST.BULLET_TEXT</code></li>
+    * <li><code>ST.BULLET_CUSTOM</code></li>
+    * </ul>
+    */
     public int type;
+
+    /**
+    * The bullet style.
+    */
     public StyleRange style;
+
+    /**
+    * The bullet text.
+    */
     public String text;
+
     int[] linesIndices;
     int count;
 
-    /** 
-     * Create a new bullet the specified style, the type is set to ST.BULLET_DOT. 
-     * The style must have a glyph metrics set.
-     *
-     * @param style the style 
-     * 
-     * @exception IllegalArgumentException <ul>
-     *    <li>ERROR_NULL_ARGUMENT when the style or the glyph metrics are null</li>
-     * </ul> 
-     */
-    public this (StyleRange style) {
-        this(DWT.BULLET_DOT, style);
-    }
-
-    /** 
-     * Create a new bullet the specified style and type. 
-     * The style must have a glyph metrics set.
-     *
-     * @param style the style 
-     * 
-     * @exception IllegalArgumentException <ul>
-     *    <li>ERROR_NULL_ARGUMENT when the style or the glyph metrics are null</li>
-     * </ul> 
-     */
-    public this (int type, StyleRange style) {
-        if (style is null)
-            DWT.error(DWT.ERROR_NULL_ARGUMENT);
-        if (style.metrics is null)
-            DWT.error(DWT.ERROR_NULL_ARGUMENT);
-        this.type = type;
-        this.style = style;
+/**
+ * Create a new bullet with the specified style, and type <code>ST.BULLET_DOT</code>. 
+ * The style must have a glyph metrics set.
+ *
+ * @param style the style
+ *
+ * @exception IllegalArgumentException <ul>
+ *    <li>ERROR_NULL_ARGUMENT when the style or the glyph metrics are null</li>
+ * </ul>
+ */
+public this(StyleRange style) {
+    this(ST.BULLET_DOT, style);
+}
+/**
+ * Create a new bullet the specified style and type.
+ * The style must have a glyph metrics set.
+ *
+ * @param type the bullet type
+ * @param style the style
+ *
+ * @exception IllegalArgumentException <ul>
+ *    <li>ERROR_NULL_ARGUMENT when the style or the glyph metrics are null</li>
+ * </ul>
+ */
+public this(int type, StyleRange style) {
+    if (style is null) DWT.error(DWT.ERROR_NULL_ARGUMENT);
+    if (style.metrics is null) DWT.error(DWT.ERROR_NULL_ARGUMENT);
+    this.type = type;
+    this.style = style;
+}
+void addIndices (int startLine, int lineCount) {
+    if (linesIndices is null) {
+        linesIndices = new int[lineCount];
+        count = lineCount;
+        for (int i = 0; i < lineCount; i++) linesIndices[i] = startLine + i;
+    } else {
+        int modifyStart = 0;
+        while (modifyStart < count) {
+            if (startLine <= linesIndices[modifyStart]) break;
+            modifyStart++;
+        }
+        int modifyEnd = modifyStart;
+        while (modifyEnd < count) {
+            if (startLine + lineCount <= linesIndices[modifyEnd]) break;
+            modifyEnd++;
+        }
+        int newSize = modifyStart + lineCount + count - modifyEnd;
+        if (newSize > linesIndices.length) {
+            int[] newLinesIndices = new int[newSize];
+            System.arraycopy(linesIndices, 0, newLinesIndices, 0, count);
+            linesIndices = newLinesIndices;
+        }
+        System.arraycopy(linesIndices, modifyEnd, linesIndices, modifyStart + lineCount, count - modifyEnd);
+        for (int i = 0; i < lineCount; i++) linesIndices[modifyStart + i] = startLine + i;
+        count = newSize;
     }
-
-    void addIndices (int startLine, int lineCount) {
-        if (linesIndices is null) {
-            linesIndices = new int[lineCount];
-            count = lineCount;
-            for (int i = 0; i < lineCount; i++)
-                linesIndices[i] = startLine + i;
-        }
-        else {
-            int modifyStart = 0;
-            while (modifyStart < count) {
-                if (startLine <= linesIndices[modifyStart])
-                    break;
-                modifyStart++;
+}
+int indexOf (int lineIndex) {
+    for (int i = 0; i < count; i++) {
+        if (linesIndices[i] is lineIndex) return i;
+    }
+    return -1;
+}
+public override hash_t toHash() {
+    return style.toHash() ^ type;
+}
+int[] removeIndices (int startLine, int replaceLineCount, int newLineCount, bool update) {
+    if (count is 0) return null;
+    if (startLine > linesIndices[count - 1]) return null;
+    int endLine = startLine + replaceLineCount;
+    int delta = newLineCount - replaceLineCount;
+    for (int i = 0; i < count; i++) {
+        int index = linesIndices[i];
+        if (startLine <= index) {
+            int j = i;
+            while (j < count) {
+                if (linesIndices[j] >= endLine) break;
+                j++;
             }
-            int modifyEnd = modifyStart;
-            while (modifyEnd < count) {
-                if (startLine + lineCount <= linesIndices[modifyEnd])
-                    break;
-                modifyEnd++;
+            if (update) {
+                for (int k = j; k < count; k++) linesIndices[k] += delta;
             }
-            int newSize = modifyStart + lineCount + count - modifyEnd;
-            if (newSize > linesIndices.length) {
-                int[] newLinesIndices = new int[newSize];
-                System.arraycopy(linesIndices, 0, newLinesIndices, 0, count);
-                linesIndices = newLinesIndices;
-            }
-            System.arraycopy(linesIndices, modifyEnd, linesIndices, modifyStart + lineCount, count - modifyEnd);
-            for (int i = 0; i < lineCount; i++)
-                linesIndices[modifyStart + i] = startLine + i;
-            count = newSize;
+            int[] redrawLines = new int[count - j];
+            System.arraycopy(linesIndices, j, redrawLines, 0, count - j);
+            System.arraycopy(linesIndices, j, linesIndices, i, count - j);
+            count -= (j - i);
+            return redrawLines;
         }
     }
-
-    int indexOf (int lineIndex) {
-        for (int i = 0; i < count; i++) {
-            if (linesIndices[i] is lineIndex)
-                return i;
-        }
-        return -1;
-    }
-
-    public hash_t toHash () {
-        return style.toHash() ^ type;
-    }
-
-    int[] removeIndices (int startLine, int replaceLineCount, int newLineCount, bool update) {
-        if (count is 0)
-            return null;
-        if (startLine > linesIndices[count - 1])
-            return null;
-        int endLine = startLine + replaceLineCount;
-        int delta = newLineCount - replaceLineCount;
-        for (int i = 0; i < count; i++) {
-            int index = linesIndices[i];
-            if (startLine <= index) {
-                int j = i;
-                while (j < count) {
-                    if (linesIndices[j] >= endLine)
-                        break;
-                    j++;
-                }
-                if (update) {
-                    for (int k = j; k < count; k++)
-                        linesIndices[k] += delta;
-                }
-                int[] redrawLines = new int[count - j];
-                System.arraycopy(linesIndices, j, redrawLines, 0, count - j);
-                System.arraycopy(linesIndices, j, linesIndices, i, count - j);
-                count -= (j - i);
-                return redrawLines;
-            }
-        }
-        for (int i = 0; i < count; i++)
-            linesIndices[i] += delta;
-        return null;
-    }
-
-    int size () {
-        return count;
-    }
+    for (int i = 0; i < count; i++) linesIndices[i] += delta;
+    return null;
 }
+int size() {
+    return count;
+}
+}