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

📄 annotationdensityviewer.java

📁 编辑视频文件
💻 JAVA
字号:
/* * File:     AnnotationDensityViewer.java * Project:  MPI Linguistic Application * Date:     02 May 2007 * * Copyright (C) 2001-2007  Max Planck Institute for Psycholinguistics * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA */package mpi.eudico.client.annotator.viewer;import mpi.eudico.client.mediacontrol.ControllerEvent;import mpi.eudico.server.corpora.clom.Annotation;import mpi.eudico.server.corpora.clom.Transcription;import mpi.eudico.server.corpora.clomimpl.abstr.TierImpl;import mpi.eudico.server.corpora.clomimpl.type.Constraint;import mpi.eudico.server.corpora.util.ACMEditEvent;import mpi.eudico.server.corpora.util.ACMEditListener;import java.awt.Color;import java.awt.Dimension;import java.awt.Graphics;import java.awt.Graphics2D;import java.awt.RenderingHints;import java.awt.image.BufferedImage;import java.util.Vector;/** * DOCUMENT ME! * $Id: AnnotationDensityViewer.java,v 1.3 2005/08/18 10:09:17 klasal Exp $ * @author $Author: klasal $ * @version $Revision: 1.3 $ */public class AnnotationDensityViewer extends AbstractViewer    implements ACMEditListener {    private static Dimension SLIDERDIMENSION = new Dimension(600, 30);    /** Holds value of property DOCUMENT ME! */    final private int imageHeight = 5;    private int imageWidth;    private Transcription transcription;    private BufferedImage bi;    private Graphics2D big2d;    private BufferedImage displayImage;    /**     * Constructor     *     * @param transcription DOCUMENT ME!     */    public AnnotationDensityViewer(Transcription transcription) {        super();        this.transcription = transcription;        setPreferredSize(SLIDERDIMENSION);        paintBuffer();    }    /**     * Sets minimum size of the slider See also getPreferredSize     *     * @return DOCUMENT ME!     */    public Dimension getMinimumSize() {        return SLIDERDIMENSION;    }    /**     * Sets minimum size of the slider See also getMinimumSize     *     * @return DOCUMENT ME!     */    public Dimension getPreferredSize() {        return SLIDERDIMENSION;    }    private void paintBuffer() {        if (getWidth() > 0) {            imageWidth = getWidth();        } else {            imageWidth = SLIDERDIMENSION.width;        }        bi = new BufferedImage(imageWidth, imageHeight,                BufferedImage.TYPE_INT_RGB);        big2d = bi.createGraphics();        //big2d.setRenderingHint(RenderingHints.KEY_TEXT_ANTIALIASING,        //    RenderingHints.VALUE_TEXT_ANTIALIAS_ON);        //paint the background color        big2d.setColor(Color.lightGray);        //complete rectangle        big2d.fillRect(0, 0, imageWidth, imageHeight);        big2d.setColor(Color.white);        //upper line        big2d.fillRect(0, 0, imageWidth, 1);        //left line        big2d.drawLine(0, 0, 0, imageHeight);        big2d.setColor(Color.darkGray);        //lower line        big2d.fillRect(0, imageHeight - 1, imageWidth, 1);        //paint the vertical line where the annotations are        big2d.setColor(Color.darkGray.brighter());        Vector vTiers = new Vector(0);        Vector annotations = null;        TierImpl tier;        Annotation ann;        int begintime;        int endtime;        int midtime;        int intx;        int duration = (int) getMediaDuration();        if (duration == 0) {            return;        }        vTiers = transcription.getTiers();        int vTiers_size = vTiers.size();        for (int i = 0; i < vTiers_size; i++) {            tier = (TierImpl) vTiers.elementAt(i);            // aug 2005: if the tier is of type SymbolicAssociation it is             // guaranteed that the line for each annotation has been or             // will be drawn for the parent annotation            if ((tier.getLinguisticType().getConstraints() != null) &&                    (tier.getLinguisticType().getConstraints().getStereoType() == Constraint.SYMBOLIC_ASSOCIATION)) {                continue;            }            annotations = ((TierImpl) tier).getAnnotations();            int size = annotations.size();            for (int j = 0; j < size; j++) {                ann = (Annotation) annotations.elementAt(j);                begintime = (int) ann.getBeginTimeBoundary();                endtime = (int) ann.getEndTimeBoundary();                midtime = (begintime + endtime) / 2;                //intx = (int) ((imageWidth * midtime) / duration);                intx = (int) (imageWidth * ((float) midtime / duration));                big2d.drawLine(intx, 0, intx, imageHeight);            }        }        displayImage = bi.getSubimage(0, 0, imageWidth, imageHeight);        repaint();    }    /**     * Handles the painting of the slider Consists of a vertical bar, a     * crosshair and maybe a selection     *     * @param g DOCUMENT ME!     */    public void paintComponent(Graphics g) {        super.paintComponent(g);        if (getWidth() != imageWidth) {            paintBuffer();        }        Graphics2D g2d = (Graphics2D) g;        if (displayImage != null) {            g2d.drawImage(displayImage, 0, 15, this);        }    }    /**     * DOCUMENT ME!     *     * @param e DOCUMENT ME!     */    public void ACMEdited(ACMEditEvent e) {        switch (e.getOperation()) {        case ACMEditEvent.ADD_TIER:        case ACMEditEvent.REMOVE_TIER:        case ACMEditEvent.ADD_ANNOTATION_HERE:        case ACMEditEvent.ADD_ANNOTATION_BEFORE:        case ACMEditEvent.ADD_ANNOTATION_AFTER:        case ACMEditEvent.REMOVE_ANNOTATION:        case ACMEditEvent.CHANGE_ANNOTATION_TIME:        case ACMEditEvent.CHANGE_ANNOTATIONS:            paintBuffer();        }    }    /**     * DOCUMENT ME!     */    public void updateLocale() {    }    /**     * DOCUMENT ME!     */    public void updateActiveAnnotation() {    }    /**     * DOCUMENT ME!     */    public void updateSelection() {    }    /**     * DOCUMENT ME!     *     * @param event DOCUMENT ME!     */    public void controllerUpdate(ControllerEvent event) {    }}//end of AnnotationDensityViewer

⌨️ 快捷键说明

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