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

📄 segmentationviewer.java

📁 编辑视频文件
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
            crossHairPos = xAt(crossHairTime);        } else {            if (!panMode) {                intervalBeginTime = begin - (SCROLL_OFFSET * msPerPixel);            } else {                intervalBeginTime = begin;            }            if (intervalBeginTime < 0) {                intervalBeginTime = 0;            }            intervalEndTime = intervalBeginTime + (imageWidth * msPerPixel);            crossHairPos = xAt(crossHairTime);        }        paintBuffer();    }    /**     * @see mpi.eudico.client.annotator.AbstractViewer#controllerUpdate(mpi.eudico.client.annotator.ControllerEvent)     */    public void controllerUpdate(ControllerEvent event) {        if (event instanceof TimeEvent || event instanceof StopEvent) {            crossHairTime = getMediaTime();            //System.out.println("SV time: " + crossHairTime);            if ((crossHairTime < intervalBeginTime) ||                    (crossHairTime >= intervalEndTime)) {                setIntervalBeginTime(crossHairTime);            } else if (playerIsPlaying()) {                long intervalMidTime = (intervalBeginTime + intervalEndTime) / 2;                if (crossHairTime > (intervalMidTime + (1 * msPerPixel))) {                    setIntervalBeginTime(intervalBeginTime +                        (crossHairTime - intervalMidTime));                } else if (crossHairTime < intervalMidTime) {                    int oldPos = crossHairPos;                    crossHairPos = xAt(crossHairTime);                    if (crossHairPos >= oldPos) {                        repaint(oldPos - 2, 0, crossHairPos - oldPos + 4,                            getHeight());                    } else {                        repaint(crossHairPos - 2, 0, oldPos - crossHairPos + 4,                            getHeight());                    }                } else {                    repaint();                }            } else {                int oldPos = crossHairPos;                crossHairPos = xAt(crossHairTime);                if (crossHairPos >= oldPos) {                    repaint(oldPos - 2, 0, crossHairPos - oldPos + 4,                        getHeight());                } else {                    repaint(crossHairPos - 2, 0, oldPos - crossHairPos + 4,                        getHeight());                }            }        }    }    /**     * Stub.     *     * @see mpi.eudico.client.annotator.AbstractViewer#updateSelection()     */    public void updateSelection() {    }    /**     * Stub.     *     * @see mpi.eudico.client.annotator.AbstractViewer#updateActiveAnnotation()     */    public void updateActiveAnnotation() {    }    /**     * Stub.     *     * @see mpi.eudico.client.annotator.AbstractViewer#updateLocale()     */    public void updateLocale() {    }    /**     * Sets the tier for this viewer.     *     * @param tier the tier     *     * @see mpi.eudico.client.annotator.SingleTierViewer#setTier(mpi.eudico.server.corpora.clom.Tier)     */    public void setTier(Tier tier) {        if (tier instanceof TierImpl) {            this.tier = (TierImpl) tier;            segments = new ArrayList();        } else {            this.tier = null;        }        createTier2D(this.tier);        paintBuffer();    }    /**     * @see mpi.eudico.client.annotator.SingleTierViewer#getTier()     */    public Tier getTier() {        return tier;    }    /**     * Adds a segment to the list of segmentations.     *     * @param ti the new time interval / segment     */    public void addSegment(TimeInterval ti) {        if ((ti == null) || (ti.getDuration() <= 0)) {            return;        }        Tag2D tag2d = new Tag2D(null);        int x = timeToPixels(ti.getBeginTime());        int w = timeToPixels(ti.getEndTime()) - x;        tag2d.setX(x);        tag2d.setWidth(w);        if (segments2d != null) {            segments2d.insertTag(tag2d);            paintBuffer();        }    }    /**     * Creates a Tier2D with 2D tags for all annotations.     *     * @param tier the tier     */    private void createTier2D(TierImpl tier) {        if (tier == null) {            tier2d = null;            segments2d = null;        }        tier2d = new Tier2D(tier);        segments2d = new Tier2D(tier);        Tag2D tag2d;        int xPos;        int tagWidth;        Iterator annotIter = tier.getAnnotations().iterator();        while (annotIter.hasNext()) {            Annotation a = (Annotation) annotIter.next();            //System.out.println("Annotation: " + a);            tag2d = new Tag2D(a);            xPos = timeToPixels(a.getBeginTimeBoundary());            tag2d.setX(xPos);            tagWidth = timeToPixels(a.getEndTimeBoundary()) - xPos;            tag2d.setWidth(tagWidth);            tag2d.setTruncatedValue(truncateString(a.getValue(), tagWidth,                    metrics));            tier2d.addTag(tag2d);        }    }    /**     * Returns the x-ccordinate for a specific time. The coordinate is in the     * component's coordinate system.     *     * @param t time     *     * @return int the x-coordinate for the specified time     */    public int xAt(long t) {        return (int) ((t - intervalBeginTime) / msPerPixel);    }    /**     * Calculates the x coordinate in virtual image space.<br>     * This virtual image would be an image of width <br>     * media duration in ms / ms per pixel. Therefore the return value does     * not correct for interval begin time and is not necessarily within the     * bounds of this component.     *     * @param theTime the media time     *     * @return the x coordinate in the virtual image space     */    private int timeToPixels(long theTime) {        return (int) theTime / msPerPixel;    }    /**     * Returns the time in ms at a given position in the current image. The     * given x coordinate is in the component's ("this") coordinate system.     * The interval begin time is included in the calculation of the time at     * the given coordinate.     *     * @param x x-coordinate     *     * @return the mediatime corresponding to the specified position     */    public long timeAt(int x) {        return intervalBeginTime + (x * msPerPixel);    }    /**     * @see java.awt.event.MouseListener#mouseClicked(java.awt.event.MouseEvent)     */    public void mouseClicked(MouseEvent e) {        setMediaTime(timeAt(e.getPoint().x));    }    /**     * Stub.     *     * @see java.awt.event.MouseListener#mouseEntered(java.awt.event.MouseEvent)     */    public void mouseEntered(MouseEvent e) {    }    /**     * Stub.     *     * @see java.awt.event.MouseListener#mouseExited(java.awt.event.MouseEvent)     */    public void mouseExited(MouseEvent e) {    }    /**     * If the alt key is down the view can be "panned".     *     * @see java.awt.event.MouseListener#mousePressed(java.awt.event.MouseEvent)     */    public void mousePressed(MouseEvent e) {        if (e.isAltDown()) {            if (playerIsPlaying()) {                stopPlayer();            }            dragStartPoint = e.getPoint();            dragStartTime = timeAt(dragStartPoint.x);            panMode = true;            setCursor(Cursor.getPredefinedCursor(Cursor.MOVE_CURSOR));        }    }    /**     * @see java.awt.event.MouseListener#mouseReleased(java.awt.event.MouseEvent)     */    public void mouseReleased(MouseEvent e) {        if (panMode) {            panMode = false;            setCursor(Cursor.getDefaultCursor());        }    }    /**     * Handles panning when the alt key is down.     *     * @see java.awt.event.MouseMotionListener#mouseDragged(java.awt.event.MouseEvent)     */    public void mouseDragged(MouseEvent e) {        //panning        if (panMode) {            dragEndPoint = e.getPoint();            int scrolldiff = dragEndPoint.x - dragStartPoint.x;            // some other viewer may have a media offset...            long newTime = intervalBeginTime - (scrolldiff * msPerPixel);            if ((intervalBeginTime < 0) && (newTime < intervalBeginTime)) {                newTime = intervalBeginTime;            }            setIntervalBeginTime(newTime);            dragStartPoint = dragEndPoint;        }    }    /**     * @see java.awt.event.MouseMotionListener#mouseMoved(java.awt.event.MouseEvent)     */    public void mouseMoved(MouseEvent e) {    }    /**     * Stub.     *     * @see java.awt.event.ComponentListener#componentHidden(java.awt.event.ComponentEvent)     */    public void componentHidden(ComponentEvent e) {    }    /**     * Stub.     *     * @see java.awt.event.ComponentListener#componentMoved(java.awt.event.ComponentEvent)     */    public void componentMoved(ComponentEvent e) {    }    /**     * @see java.awt.event.ComponentListener#componentResized(java.awt.event.ComponentEvent)     */    public void componentResized(ComponentEvent e) {        paintBuffer();    }    /**     * @see java.awt.event.ComponentListener#componentShown(java.awt.event.ComponentEvent)     */    public void componentShown(ComponentEvent e) {        paintBuffer();    }}

⌨️ 快捷键说明

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