Retired Document
Important: This sample code may not represent best practices for current development. The project may use deprecated symbols and illustrate technologies and techniques that are no longer recommended.
src/TextDemo.java
/* |
* QuickTime for Java SDK Sample Code |
Usage subject to restrictions in SDK License Agreement |
* Copyright: © 1996-1999 Apple Computer, Inc. |
*/ |
import java.awt.*; |
import java.awt.event.*; |
import java.util.Vector; |
import quicktime.*; |
import quicktime.qd.*; |
import quicktime.app.display.*; |
import quicktime.app.image.*; |
public class TextDemo extends Frame |
{ |
public static final int width = 1024; |
public static final int height = 640; |
public static QDRect myBounds = new QDRect(width, height); |
public QTCanvas myQTCanvas; |
public QDGraphics newQDG; |
public ImagePresenter imagePres; |
public static void main (String args[]) |
{ |
try |
{ |
QTSession.open(); |
TextDemo td = new TextDemo ("Text Demo in QTJ"); |
td.pack(); |
td.show(); |
td.toFront(); |
} catch (Exception e) |
{ |
e.printStackTrace(); |
QTSession.close(); |
} |
} |
TextDemo(String title) throws Exception |
{ |
super(title); |
myQTCanvas = new QTCanvas (); |
add("Center", myQTCanvas); |
// add a WindowListener to close the program down |
addWindowListener(new WindowAdapter () |
{ |
public void windowClosing(WindowEvent e) |
{ |
QTSession.close(); |
dispose(); |
} |
public void windowClosed (WindowEvent e) |
{ |
System.exit(0); |
} |
}); |
// create a QDGraphics and QDDrawer to draw the text |
newQDG = new QDGraphics (myBounds); |
newQDG.beginDraw(new QDDrawer() |
{ |
public void draw(QDGraphics g) throws QTException |
{ |
int strIndex = 0; |
int tmpInt, fntNum, x, y; |
int savedSize, savedFNum, savedStyle, savedMode; |
String strToDraw; |
savedFNum = g.getTextFont(); |
savedSize = g.getTextSize(); |
savedStyle = g.getTextFace(); |
savedMode = g.getTextMode(); |
// prepare canvas |
g.setBackColor(QDColor.gray); |
g.eraseRect(myBounds); |
// calculate where to start centered line of text |
g.textSize(24); |
g.textFace(QDConstants.bold + QDConstants.italic); |
g.setForeColor(QDColor.green); |
strToDraw = new String ("P r e s e n t i n g..."); |
tmpInt = g.textWidth(strToDraw, 0, strToDraw.length()); |
x = ((TextDemo.width / 2) - (tmpInt / 2)); |
y = 30; |
g.moveTo(x, y); |
x = 40; |
// use drawChar |
g.drawChar('P'); |
tmpInt = g.charWidth(' '); |
g.move(tmpInt, 0); |
g.drawChar('r'); |
g.move(tmpInt, 0); |
g.drawChar('e'); |
g.move(tmpInt, 0); |
g.drawChar('s'); |
g.move(tmpInt, 0); |
g.drawChar('e'); |
g.move(tmpInt, 0); |
g.drawChar('n'); |
g.move(tmpInt, 0); |
g.drawChar('t'); |
g.move(tmpInt, 0); |
g.drawChar('i'); |
g.move(tmpInt, 0); |
g.drawChar('n'); |
g.move(tmpInt, 0); |
g.drawChar('g'); |
g.drawText("...", 0, "...".length()); |
y += 60; |
g.moveTo(x, y); |
strToDraw = new String ("Text in QTJ"); |
g.setForeColor(QDColor.black); |
g.drawText(strToDraw, 0, strToDraw.length()); |
y += 25; |
tmpInt = g.textWidth(strToDraw, strIndex, (strToDraw.length() - strIndex)); |
g.move(-tmpInt, 25); |
fntNum = QDFont.getFNum("Courier"); |
g.textFont(fntNum); |
g.textSize(16); |
g.textFace(QDConstants.italic); |
g.setForeColor(QDColor.green); |
g.drawText(strToDraw, 0, strToDraw.length()); |
x += tmpInt; |
y += 25; |
if (strIndex < (strToDraw.length() - 1)) |
{ |
strIndex++; |
} |
tmpInt = g.textWidth(strToDraw, strIndex, (strToDraw.length() - strIndex)); |
g.move(-tmpInt, 25); |
fntNum = QDFont.getFNum("Times"); |
if (fntNum == 0) |
{ |
fntNum = QDFont.getFNum("Times New Roman"); |
} |
g.textFont(fntNum); |
g.textSize(16); |
g.textFace(QDConstants.normal); |
g.setForeColor(QDColor.red); |
g.drawText(strToDraw, 0, strToDraw.length()); |
x += tmpInt; |
y += 25; |
if (strIndex < (strToDraw.length() - 1)) |
{ |
strIndex++; |
} |
tmpInt = g.textWidth(strToDraw, strIndex, (strToDraw.length() - strIndex)); |
g.move(-tmpInt, 25); |
fntNum = QDFont.getFNum("Arial"); |
if (fntNum == 0) |
{ |
fntNum = QDFont.getFNum("Helvetica"); |
} |
g.textFont(fntNum); |
g.textSize(16); |
g.textFace(QDConstants.normal); |
g.setForeColor(QDColor.brown); |
g.drawText(strToDraw, 0, strToDraw.length()); |
x += tmpInt; |
y += 25; |
if (strIndex < (strToDraw.length() - 1)) |
{ |
strIndex++; |
} |
tmpInt = g.textWidth(strToDraw, strIndex, (strToDraw.length() - strIndex)); |
g.move(-tmpInt, 25); |
fntNum = QDFont.getFNum("Lucida Console"); |
if (fntNum == 0) |
{ |
fntNum = QDFont.getFNum("New York"); |
} |
g.textFont(fntNum); |
g.textSize(16); |
g.textFace(QDConstants.normal); |
g.setForeColor(QDColor.orange); |
g.drawText(strToDraw, 0, strToDraw.length()); |
x += tmpInt; |
y += 25; |
if (strIndex < (strToDraw.length() - 1)) |
{ |
strIndex++; |
} |
tmpInt = g.textWidth(strToDraw, strIndex, (strToDraw.length() - strIndex)); |
g.move(-tmpInt, 25); |
fntNum = QDFont.getFNum("Courier New"); |
if (fntNum == 0) |
{ |
fntNum = QDFont.getFNum("Monaco"); |
} |
g.textFont(fntNum); |
g.textSize(16); |
g.textFace(QDConstants.normal); |
g.setForeColor(QDColor.magenta); |
g.drawText(strToDraw, 0, strToDraw.length()); |
y += 25; |
if (strIndex < (strToDraw.length() - 1)) |
{ |
strIndex++; |
} |
tmpInt = g.textWidth(strToDraw, strIndex, (strToDraw.length() - strIndex)); |
g.move(-tmpInt, 25); |
fntNum = QDFont.getFNum("Verdana"); |
if (fntNum == 0) |
{ |
fntNum = QDFont.getFNum("Charcoal"); |
} |
g.textFont(fntNum); |
g.textSize(16); |
g.textFace(QDConstants.bold); |
g.setForeColor(QDColor.green); |
g.drawText(strToDraw, 0, strToDraw.length()); |
y += 25; |
if (strIndex < (strToDraw.length() - 1)) |
{ |
strIndex++; |
} |
tmpInt = g.textWidth(strToDraw, strIndex, (strToDraw.length() - strIndex)); |
g.move(-tmpInt, 25); |
fntNum = QDFont.getFNum("Symbol"); |
if (fntNum == 0) |
{ |
fntNum = QDFont.getFNum("Trebuchet MS"); |
} |
g.textFont(fntNum); |
g.textSize(16); |
g.textFace(QDConstants.underlined); |
g.setForeColor(QDColor.red); |
g.drawText(strToDraw, 0, strToDraw.length()); |
y += 25; |
if (strIndex < (strToDraw.length() - 1)) |
{ |
strIndex++; |
} |
tmpInt = g.textWidth(strToDraw, strIndex, (strToDraw.length() - strIndex)); |
g.move(-tmpInt, 25); |
fntNum = QDFont.getFNum("Times"); |
if (fntNum == 0) |
{ |
fntNum = QDFont.getFNum("Times New Roman"); |
} |
g.textFont(fntNum); |
g.textSize(16); |
g.textFace(QDConstants.bold + QDConstants.italic); |
g.setForeColor(QDColor.green); |
g.drawText(strToDraw, 0, strToDraw.length()); |
y += 25; |
// Draw some scaled text |
if (strIndex < (strToDraw.length() - 1)) |
{ |
strIndex++; |
} |
tmpInt = g.textWidth(strToDraw, strIndex, (strToDraw.length() - strIndex)); |
g.move(-tmpInt, 25); |
fntNum = QDFont.getFNum("Comic Sans MS"); |
if (fntNum == 0) |
{ |
fntNum = QDFont.getFNum("Courier"); |
} |
g.textFont(fntNum); |
g.textSize(16); |
g.textFace(QDConstants.bold + QDConstants.italic); |
g.setForeColor(QDColor.green); |
g.drawTextScaled(strToDraw.length(), strToDraw, 0.5f, 1.0f); |
y += 40; |
if (strIndex < (strToDraw.length() - 1)) |
{ |
strIndex++; |
} |
tmpInt = g.measureScaledText(strToDraw.length(), strToDraw, 0.5f, 1.0f); |
tmpInt -= g.measureScaledText(1, strToDraw, 0.5f, 1.0f); |
g.move(-tmpInt, 25); |
fntNum = QDFont.getFNum("Courier"); |
g.textFont(fntNum); |
g.textSize(16); |
g.textFace(QDConstants.bold + QDConstants.italic); |
g.setForeColor(QDColor.green); |
g.drawTextScaled(strToDraw.length(), strToDraw, 0.5f, 1.0f); |
x += 30; |
y += 40; |
if (strIndex < (strToDraw.length() - 1)) |
{ |
strIndex++; |
} |
tmpInt = g.measureScaledText(strToDraw.length(), strToDraw, 0.5f, 1.0f); |
g.moveTo(x, y); |
fntNum = QDFont.getFNum("Courier"); |
g.textFont(fntNum); |
g.textSize(16); |
g.textFace(QDConstants.bold + QDConstants.underlined); |
g.setForeColor(QDColor.blue); |
g.drawTextScaled(strToDraw.length(), strToDraw, 1.0f, 0.5f); |
x += (tmpInt / 2); |
y += 40; |
if (strIndex < (strToDraw.length() - 1)) |
{ |
strIndex++; |
} |
tmpInt = g.measureScaledText(strToDraw.length(), strToDraw, 1.0f, 0.5f); |
g.moveTo(x, y); |
fntNum = QDFont.getFNum("Courier"); |
g.textFont(fntNum); |
g.textSize(16); |
g.textFace(QDConstants.normal); |
g.setForeColor(QDColor.pink); |
g.drawTextScaled(strToDraw.length(), strToDraw, 2.0f, 1.0f); |
x += (tmpInt / 3); |
y += 40; |
if (strIndex < (strToDraw.length() - 1)) |
{ |
strIndex++; |
} |
tmpInt = g.measureScaledText(strToDraw.length(), strToDraw, 2.0f, 1.0f); |
g.moveTo(x, y); |
fntNum = QDFont.getFNum("Courier"); |
g.textFont(fntNum); |
g.textSize(16); |
g.textFace(QDConstants.normal); |
g.setForeColor(QDColor.white); |
g.drawTextScaled(strToDraw.length(), strToDraw, 1.0f, 2.0f); |
x += (tmpInt / 4); |
y += 40; |
// Restore all and draw again |
// tmpInt = g.measureScaledText(strToDraw.length(), strToDraw, 1.0f, 2.0f); |
g.moveTo(x, y); |
g.textFont(savedFNum); |
g.textSize(savedSize); |
g.textFace(savedStyle); |
g.textMode(savedMode); |
g.setForeColor(QDColor.black); |
g.drawText(strToDraw, 0, strToDraw.length()); |
} |
}); |
imagePres = ImagePresenter.fromGWorld(newQDG); |
myQTCanvas.setClient(imagePres, true); |
} |
} |
Copyright © 2003 Apple Computer, Inc. All Rights Reserved. Terms of Use | Privacy Policy | Updated: 2003-01-14