⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 metrics.java

📁 编辑视频文件
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
     */    public String getTierLabelAt(int position) {        String label = null;        Annotation a = null;        Enumeration en = verticalPositions.keys();        while (en.hasMoreElements()) {            a = (Annotation) en.nextElement();            if (((Integer) verticalPositions.get(a)).intValue() == position) {                label = a.getTier().getName();                break;            }        }        return label;    }    /**     * Returns vertical positions of every visible tier in the 'tier template':     * all visible tier labels in the correct order, at the proper position.     * This template can be repeated when blocks are wrapped. In that case     * empty lines are also labeled.     *     * @return Array with vertical positions for every visible tier     */    public int[] getVPositionsInTemplate() {        int[] vPositions = new int[getInterlinearizer().getVisibleTiers().length];        int lineSpacing = getInterlinearizer().getLineSpacing();        int positionInTemplate = 0;        String[] vTierNames = getInterlinearizer().getVisibleTiers();        for (int index = 0; index < vTierNames.length; index++) {            int tierHeight = getTierHeight(vTierNames[index]);            positionInTemplate += tierHeight;            vPositions[index] = positionInTemplate;            positionInTemplate += lineSpacing;        }        return vPositions;    }    /**     * DOCUMENT ME!     *     * @return DOCUMENT ME!     */    public TimeCodedTranscription getTranscription() {        return transcription;    }    /**     * DOCUMENT ME!     *     * @return DOCUMENT ME!     */    public Interlinearizer getInterlinearizer() {        return interlinearizer;    }    /**     * DOCUMENT ME!     *     * @return     */    public int getLeftMargin() {        if (leftMarginOn) {            return leftMargin;        } else {            return 0;        }    }    /**     * DOCUMENT ME!     *     * @param i     */    public void setLeftMargin(int i) {        if (leftMarginOn) {            leftMargin = i;        }    }    /**     * DOCUMENT ME!     *     * @param show DOCUMENT ME!     */    public void showLeftMargin(boolean show) {        leftMarginOn = show;    }    /**     * DOCUMENT ME!     *     * @return DOCUMENT ME!     */    public boolean leftMarginShown() {        return leftMarginOn;    }    /**     * Generates and returns a sorted Vector of visible annotations. Sorting is     * done on basis of left to right occurance in interlinear blocks:     * horizontal position and position in tier hierarchy are used.     *     * @return sorted Vector with annotations     */    public Vector getBlockWiseOrdered() {        if (blockWiseOrdered == null) { // calculate vector            // assume that all annotations, visible and invisible, are sized            blockWiseOrdered = new Vector();            Set allAnnots = sizeTable.keySet();            String[] visibleTiers = getInterlinearizer().getVisibleTiers();            List vTierList = Arrays.asList(visibleTiers);            Iterator annIter = allAnnots.iterator();            while (annIter.hasNext()) {                Annotation a = (Annotation) annIter.next();                if (vTierList.contains(a.getTier().getName())) {                    blockWiseOrdered.add(a);                }            }            Collections.sort(blockWiseOrdered, new AnnotationComparator());        }        return blockWiseOrdered;    }    /**     * Generates and returns a sorted Vector of visible annotations. Sorting is     * done on basis of vertical position.     *     * @return sorted Vector with annotations     */    public Vector getVerticallyOrdered() {        if (verticallyOrdered == null) { // calculate vector            // assume that all annotations, visible and invisible, are sized            verticallyOrdered = new Vector();            Set allAnnots = sizeTable.keySet();            String[] visibleTiers = getInterlinearizer().getVisibleTiers();            List vTierList = Arrays.asList(visibleTiers);            Iterator annIter = allAnnots.iterator();            while (annIter.hasNext()) {                Annotation a = (Annotation) annIter.next();                if (vTierList.contains(a.getTier().getName())) {                    verticallyOrdered.add(a);                }            }            Collections.sort(verticallyOrdered, new AnnotComparatorOnVPos());        }        return verticallyOrdered;    }    /**     * DOCUMENT ME!     *     * @param pageHeight DOCUMENT ME!     *     * @return DOCUMENT ME!     */    public int[] getPageBoundaries(int pageHeight) {        int[] pageBoundaries = null;        int pageCounter = 0;        int lastPageBreak = 0;        Vector boundaries = new Vector();        Vector vPosIntegers = null;        int[] tierLblVPositions = null;        // find sorted int[] of vPositions of tier labels        vPosIntegers = getPositionsOfNonEmptyTiers();        Collections.sort(vPosIntegers);        tierLblVPositions = new int[vPosIntegers.size()];        for (int i = 0; i < vPosIntegers.size(); i++) {            tierLblVPositions[i] = ((Integer) vPosIntegers.elementAt(i)).intValue();        }        // loop over tierLabel positions, find each next page break        for (int k = 0; k < tierLblVPositions.length; k++) {            if (tierLblVPositions[k] > (lastPageBreak + pageHeight)) { // next break passed                if (k > 0) {                    lastPageBreak = tierLblVPositions[k - 1];                    boundaries.add(new Integer(lastPageBreak));                }            }        }        pageBoundaries = new int[boundaries.size()];        for (int m = 0; m < boundaries.size(); m++) {            pageBoundaries[m] = ((Integer) boundaries.elementAt(m)).intValue();        }        return pageBoundaries;    }    /**     * DOCUMENT ME!     *     * @param pageIndex DOCUMENT ME!     * @param pageHeight DOCUMENT ME!     *     * @return DOCUMENT ME!     */    public int[] getPageBoundaries(int pageIndex, int pageHeight) {        int pageCounter = 0;        int lastPageBreak = 0;        int[] boundaries = { 0, 0 };        Vector vPosIntegers = null;        int[] tierLblVPositions = null;        // find sorted int[] of vPositions of tier labels        vPosIntegers = getPositionsOfNonEmptyTiers();        Collections.sort(vPosIntegers);        tierLblVPositions = new int[vPosIntegers.size()];        for (int i = 0; i < vPosIntegers.size(); i++) {            tierLblVPositions[i] = ((Integer) vPosIntegers.elementAt(i)).intValue();        }        // loop over tierLabel positions, find each next page break, count pages        for (int k = 0; k < tierLblVPositions.length; k++) {            if (tierLblVPositions[k] > (lastPageBreak + pageHeight)) { // next break passed                if (pageCounter == pageIndex) { // right page found                    break;                } else {                    if (k > 0) {                        lastPageBreak = tierLblVPositions[k - 1];                    }                    pageCounter++;                }            }            boundaries[0] = lastPageBreak;            boundaries[1] = tierLblVPositions[k];        }        if (pageIndex > pageCounter) { // nothing on page pageIndex, terminate            boundaries[0] = 0;            boundaries[1] = 0;        }        return boundaries;    }    /**     * DOCUMENT ME!     * $Id: Metrics.java,v 1.2 2005/08/18 14:00:44 klasal Exp $     * @author $Author: klasal $     * @version $Revision: 1.2 $     */    class AnnotationComparator implements Comparator {        /**         * Compares Annotations, first on basis of their horizontal position as         * stored in horizontalPositions, then on basis of their position in         * the tier hierarchy.         *         * @see java.util.Comparator#compare(java.lang.Object,         *      java.lang.Object)         */        public int compare(Object arg0, Object arg1) {            Annotation a0 = (Annotation) arg0;            Annotation a1 = (Annotation) arg1;            int hpos0 = ((Integer) horizontalPositions.get(a0)).intValue();            int hpos1 = ((Integer) horizontalPositions.get(a1)).intValue();            if (hpos0 < hpos1) {                return -1;            }            if (hpos0 > hpos1) {                return 1;            }            if (hpos0 == hpos1) {                if (transcription.isAncestorOf(a1.getTier(), a0.getTier())) {                    //	if (((TierImpl)a0.getTier()).hasAncestor((TierImpl)a1.getTier())) {                    return 1;                } else {                    return -1;                }            }            return 0;        }    }    /**     * DOCUMENT ME!     * $Id: Metrics.java,v 1.2 2005/08/18 14:00:44 klasal Exp $     * @author $Author: klasal $     * @version $Revision: 1.2 $     */    class AnnotComparatorOnVPos implements Comparator {        /**         * Compares Annotations, on basis of vertical position         *         * @see java.util.Comparator#compare(java.lang.Object,         *      java.lang.Object)         */        public int compare(Object arg0, Object arg1) {            Annotation a0 = (Annotation) arg0;            Annotation a1 = (Annotation) arg1;            int vpos0 = ((Integer) verticalPositions.get(a0)).intValue();            int vpos1 = ((Integer) verticalPositions.get(a1)).intValue();            if (vpos0 < vpos1) {                return -1;            }            if (vpos0 >= vpos1) {                return 1;            }            return 0;        }    }}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -