Java 类org.eclipse.swt.graphics.FontMetrics 实例源码
项目:AppleCommander
文件:SwtUtil.java
/**
* Setup some sensible paging information.
*/
public static void setupPagingInformation(ScrolledComposite composite) {
GC gc = new GC(composite);
FontMetrics fontMetrics = gc.getFontMetrics();
gc.dispose();
int fontHeight = fontMetrics.getHeight();
int fontWidth = fontMetrics.getAverageCharWidth();
Rectangle clientArea = composite.getClientArea();
int lines = clientArea.height / fontHeight;
int pageHeight = lines * fontHeight;
int pageWidth = clientArea.width - fontWidth;
composite.getVerticalBar().setIncrement(fontHeight);
composite.getVerticalBar().setPageIncrement(pageHeight);
composite.getHorizontalBar().setIncrement(fontWidth);
composite.getHorizontalBar().setPageIncrement(pageWidth);
}
项目:applecommander
文件:SwtUtil.java
/**
* Setup some sensible paging information.
*/
public static void setupPagingInformation(ScrolledComposite composite) {
GC gc = new GC(composite);
FontMetrics fontMetrics = gc.getFontMetrics();
gc.dispose();
int fontHeight = fontMetrics.getHeight();
int fontWidth = fontMetrics.getAverageCharWidth();
Rectangle clientArea = composite.getClientArea();
int lines = clientArea.height / fontHeight;
int pageHeight = lines * fontHeight;
int pageWidth = clientArea.width - fontWidth;
composite.getVerticalBar().setIncrement(fontHeight);
composite.getVerticalBar().setPageIncrement(pageHeight);
composite.getHorizontalBar().setIncrement(fontWidth);
composite.getHorizontalBar().setPageIncrement(pageWidth);
}
项目:termsuite-ui
文件:ProgressCanvasViewer.java
/**
* Get the size hints for the receiver. These are used for
* layout data.
* @return Point - the preferred x and y coordinates
*/
public Point getSizeHints() {
Display display = canvas.getDisplay();
GC gc = new GC(canvas);
FontMetrics fm = gc.getFontMetrics();
int charWidth = fm.getAverageCharWidth();
int charHeight = fm.getHeight();
int maxWidth = display.getBounds().width / 2;
int maxHeight = display.getBounds().height / 6;
int fontWidth = charWidth * maxCharacterWidth;
int fontHeight = charHeight * numShowItems;
if (maxWidth < fontWidth) {
fontWidth = maxWidth;
}
if (maxHeight < fontHeight) {
fontHeight = maxHeight;
}
gc.dispose();
return new Point(fontWidth, fontHeight);
}
项目:PhET
文件:PSWTText.java
/**
* Calculates the bounds of the text in the box as measured by the given
* graphics context and font metrics.
*
* @param gc graphics context from which the measurements are done
* @return point representing the dimensions of the text's bounds
*/
private Point calculateTextBounds(final GC gc) {
final SWTGraphics2D g2 = new SWTGraphics2D(gc, Display.getDefault());
g2.setFont(font);
final FontMetrics fm = g2.getSWTFontMetrics();
final Point textBounds = new Point(0, 0);
boolean firstLine = true;
final Iterator lineIterator = lines.iterator();
while (lineIterator.hasNext()) {
String line = (String) lineIterator.next();
Point lineBounds = gc.stringExtent(line);
if (firstLine) {
textBounds.x = lineBounds.x;
textBounds.y += fm.getAscent() + fm.getDescent() + fm.getLeading();
firstLine = false;
}
else {
textBounds.x = Math.max(lineBounds.x, textBounds.x);
textBounds.y += fm.getHeight();
}
}
return textBounds;
}
项目:team-explorer-everywhere
文件:BasePreferencePage.java
private void computeMetrics() {
Control control = getControl();
if (control == null && Display.getCurrent() != null) {
control = Display.getCurrent().getActiveShell();
}
if (control == null) {
return;
}
/* Compute metrics in pixels */
final GC gc = new GC(control);
final FontMetrics fontMetrics = gc.getFontMetrics();
gc.dispose();
horizontalSpacing = Dialog.convertHorizontalDLUsToPixels(fontMetrics, IDialogConstants.HORIZONTAL_SPACING);
verticalSpacing = Dialog.convertVerticalDLUsToPixels(fontMetrics, IDialogConstants.VERTICAL_SPACING);
spacing = Math.max(horizontalSpacing, verticalSpacing);
horizontalMargin = Dialog.convertHorizontalDLUsToPixels(fontMetrics, IDialogConstants.HORIZONTAL_MARGIN);
verticalMargin = Dialog.convertVerticalDLUsToPixels(fontMetrics, IDialogConstants.VERTICAL_MARGIN);
}
项目:team-explorer-everywhere
文件:BaseControl.java
public BaseControl(final Composite parent, final int style) {
super(parent, style);
/* Compute metrics in pixels */
final GC gc = new GC(this);
final FontMetrics fontMetrics = gc.getFontMetrics();
gc.dispose();
horizontalSpacing = Dialog.convertHorizontalDLUsToPixels(fontMetrics, IDialogConstants.HORIZONTAL_SPACING);
verticalSpacing = Dialog.convertVerticalDLUsToPixels(fontMetrics, IDialogConstants.VERTICAL_SPACING);
spacing = Math.max(horizontalSpacing, verticalSpacing);
horizontalMargin = Dialog.convertHorizontalDLUsToPixels(fontMetrics, IDialogConstants.HORIZONTAL_MARGIN);
verticalMargin = Dialog.convertVerticalDLUsToPixels(fontMetrics, IDialogConstants.VERTICAL_MARGIN);
minimumMessageAreaWidth =
Dialog.convertHorizontalDLUsToPixels(fontMetrics, IDialogConstants.MINIMUM_MESSAGE_AREA_WIDTH);
}
项目:team-explorer-everywhere
文件:ControlSize.java
/**
* Obtains a {@link FontMetrics} object corresponding to the specified
* {@link Control}. This method creates and disposes a {@link GC} object to
* get {@link FontMetrics}.
*
* @param control
* a {@link Control} to get {@link FontMetrics} for (must not be
* <code>null</code>)
* @return a {@link FontMetrics} object (never <code>null</code>)
*/
public static FontMetrics getFontMetrics(final Control control) {
Check.notNull(control, "control"); //$NON-NLS-1$
/*
* TODO A possible performance enhancement would be to cache the
* FontMetrics on a Control (control.setData). This would allow multiple
* calls to this method for the same control to avoid the overhead of
* creating and disposing a GC each time. We should do this only if
* profiling indicates a performance problem. If we do this, we should
* provide an overload of this method that takes a boolean that controls
* whether the cache is used or not - useful when the client changes the
* font on a control in between calls, etc.
*/
final GC gc = new GC(control);
try {
gc.setFont(control.getFont());
return gc.getFontMetrics();
} finally {
gc.dispose();
}
}
项目:team-explorer-everywhere
文件:BaseWizardPage.java
private final void computeMetrics() {
Control control = getControl();
if (control == null && Display.getCurrent() != null) {
control = Display.getCurrent().getActiveShell();
}
if (control == null) {
return;
}
/* Compute metrics in pixels */
final GC gc = new GC(control);
final FontMetrics fontMetrics = gc.getFontMetrics();
gc.dispose();
horizontalSpacing = Dialog.convertHorizontalDLUsToPixels(fontMetrics, IDialogConstants.HORIZONTAL_SPACING);
verticalSpacing = Dialog.convertVerticalDLUsToPixels(fontMetrics, IDialogConstants.VERTICAL_SPACING);
spacing = Math.max(horizontalSpacing, verticalSpacing);
horizontalMargin = Dialog.convertHorizontalDLUsToPixels(fontMetrics, IDialogConstants.HORIZONTAL_MARGIN);
verticalMargin = Dialog.convertVerticalDLUsToPixels(fontMetrics, IDialogConstants.VERTICAL_MARGIN);
initializedMetrics = true;
}
项目:angular-eclipse
文件:NgGenerateBlueprintWizardPage.java
protected void createFilesPreviewControl(Composite parent) {
Font font = parent.getFont();
// file preview group
Composite filePreview = new Composite(parent, SWT.NONE);
GridLayout layout = new GridLayout();
layout.numColumns = 1;
layout.marginWidth = 0;
filePreview.setLayout(layout);
filePreview.setLayoutData(new GridData(GridData.FILL_HORIZONTAL | GridData.GRAB_HORIZONTAL));
filePreview.setFont(font);
// Generated files
Label label = new Label(filePreview, SWT.NONE);
label.setText(AngularCLIMessages.NgGenerateBlueprintWizardPage_generated_files);
label.setFont(font);
generatedFiles = new Text(filePreview, SWT.READ_ONLY | SWT.MULTI | SWT.H_SCROLL);
GridData data = new GridData(GridData.FILL_HORIZONTAL | GridData.GRAB_HORIZONTAL);
GC gc = new GC(generatedFiles);
gc.setFont(font);
FontMetrics fm = gc.getFontMetrics();
data.heightHint = 7 * fm.getHeight();
generatedFiles.setLayoutData(data);
gc.dispose();
}
项目:typescript.java
文件:IndentFoldingStrategy.java
/**
* Does not paint hidden annotations. Annotations are hidden when they
* only span one line.
*
* @see ProjectionAnnotation#paint(org.eclipse.swt.graphics.GC,
* org.eclipse.swt.widgets.Canvas,
* org.eclipse.swt.graphics.Rectangle)
*/
@Override
public void paint(GC gc, Canvas canvas, Rectangle rectangle) {
/* workaround for BUG85874 */
/*
* only need to check annotations that are expanded because hidden
* annotations should never have been given the chance to collapse.
*/
if (!isCollapsed()) {
// working with rectangle, so line height
FontMetrics metrics = gc.getFontMetrics();
if (metrics != null) {
// do not draw annotations that only span one line and
// mark them as not visible
if ((rectangle.height / metrics.getHeight()) <= 1) {
visible = false;
return;
}
}
}
visible = true;
super.paint(gc, canvas, rectangle);
}
项目:typescript.java
文件:AbstractInformationControl.java
/**
* @param parent
* parent control
*/
private void createFilterText(Composite parent) {
// Create the widget
filterText = new Text(parent, SWT.NONE);
// Set the font
GC gc = new GC(parent);
gc.setFont(parent.getFont());
FontMetrics fontMetrics = gc.getFontMetrics();
gc.dispose();
// Create the layout
GridData data = new GridData(GridData.FILL_HORIZONTAL);
data.heightHint = Dialog.convertHeightInCharsToPixels(fontMetrics, 1);
data.horizontalAlignment = GridData.FILL;
data.verticalAlignment = GridData.CENTER;
filterText.setLayoutData(data);
}
项目:piccolo2d.java
文件:PSWTText.java
/**
* Calculates the bounds of the text in the box as measured by the given
* graphics context and font metrics.
*
* @param gc graphics context from which the measurements are done
* @return point representing the dimensions of the text's bounds
*/
private Point calculateTextBounds(final GC gc) {
final SWTGraphics2D g2 = new SWTGraphics2D(gc, Display.getDefault());
g2.setFont(font);
final FontMetrics fm = g2.getSWTFontMetrics();
final Point textBounds = new Point(0, 0);
boolean firstLine = true;
final Iterator lineIterator = lines.iterator();
while (lineIterator.hasNext()) {
String line = (String) lineIterator.next();
Point lineBounds = gc.stringExtent(line);
if (firstLine) {
textBounds.x = lineBounds.x;
textBounds.y += fm.getAscent() + fm.getDescent() + fm.getLeading();
firstLine = false;
}
else {
textBounds.x = Math.max(lineBounds.x, textBounds.x);
textBounds.y += fm.getHeight();
}
}
return textBounds;
}
项目:skin4eclipse
文件:ManageSessionsDialog.java
private GridData getButtonGridData(Button button) {
GridData gd = new GridData(GridData.FILL_HORIZONTAL
| GridData.VERTICAL_ALIGN_BEGINNING);
GC gc = new GC(button);
gc.setFont(button.getFont());
FontMetrics fontMetrics = gc.getFontMetrics();
gc.dispose();
int widthHint = Dialog.convertHorizontalDLUsToPixels(fontMetrics,
IDialogConstants.BUTTON_WIDTH);
gd.widthHint = Math.max(widthHint, button.computeSize(SWT.DEFAULT, SWT.DEFAULT,
true).x);
gd.heightHint = Dialog
.convertVerticalDLUsToPixels(fontMetrics, 14 /*IDialogConstants.BUTTON_HEIGHT*/);
return gd;
}
项目:APICloud-Studio
文件:CommonLineNumberRulerColumn.java
/**
* Returns the difference between the baseline of the widget and the
* baseline as specified by the font for <code>gc</code>. When drawing
* line numbers, the returned bias should be added to obtain text lined up
* on the correct base line of the text widget.
*
* @param gc the <code>GC</code> to get the font metrics from
* @param widgetLine the widget line
* @return the baseline bias to use when drawing text that is lined up with
* <code>fCachedTextWidget</code>
* @since 3.2
*/
private int getBaselineBias(GC gc, int widgetLine) {
/*
* https://bugs.eclipse.org/bugs/show_bug.cgi?id=62951
* widget line height may be more than the font height used for the
* line numbers, since font styles (bold, italics...) can have larger
* font metrics than the simple font used for the numbers.
*/
int offset= fCachedTextWidget.getOffsetAtLine(widgetLine);
int widgetBaseline= fCachedTextWidget.getBaseline(offset);
FontMetrics fm= gc.getFontMetrics();
int fontBaseline= fm.getAscent() + fm.getLeading();
int baselineBias= widgetBaseline - fontBaseline;
return Math.max(0, baselineBias);
}
项目:durian-swt
文件:SwtMisc.java
/** Populates the height and width of the system font. */
private static void populateSystemFont() {
// create a tiny image to bind our GC to (not that it can't be size 0)
Image dummyImg = new Image(assertUI(), 1, 1);
GC gc = new GC(dummyImg);
FontMetrics metrics = gc.getFontMetrics();
systemFontHeight = metrics.getHeight();
systemFontWidth = metrics.getAverageCharWidth();
if (OS.getNative().isMac()) {
// add 20% width on Mac
systemFontWidth = (systemFontWidth * 12) / 10;
}
gc.dispose();
dummyImg.dispose();
}
项目:gef-gwt
文件:ImageUtilities.java
/**
* Returns a new Image with the given String rotated left (by 90 degrees).
* The String will be rendered using the provided colors and fonts. The
* client is responsible for disposing the returned Image. Strings cannot
* contain newline or tab characters.
*
* @param string
* the String to be rendered
* @param font
* the font
* @param foreground
* the text's color
* @param background
* the background color
* @return an Image which must be disposed
*/
public static Image createRotatedImageOfString(String string, Font font,
Color foreground, Color background) {
Display display = Display.getDefault();
FontMetrics metrics = FigureUtilities.getFontMetrics(font);
Dimension strSize = FigureUtilities.getStringExtents(string, font);
Image srcImage = new Image(display, strSize.width, metrics.getAscent());
GC gc = new GC(srcImage);
gc.setFont(font);
gc.setForeground(foreground);
gc.setBackground(background);
gc.fillRectangle(srcImage.getBounds());
gc.drawString(string, 0, 0 - metrics.getLeading());
Image result = createRotatedImage(srcImage);
gc.dispose();
srcImage.dispose();
return result;
}
项目:gef-gwt
文件:FieldEditor.java
/**
* Set the GridData on button to be one that is spaced for the
* current font.
* @param button the button the data is being set on.
*/
protected void setButtonLayoutData(Button button) {
GridData data = new GridData(GridData.HORIZONTAL_ALIGN_FILL);
// Compute and store a font metric
GC gc = new GC(button);
gc.setFont(button.getFont());
FontMetrics fontMetrics = gc.getFontMetrics();
gc.dispose();
int widthHint = org.eclipse.jface.dialogs.Dialog
.convertVerticalDLUsToPixels(fontMetrics,
IDialogConstants.BUTTON_WIDTH);
data.widthHint = Math.max(widthHint, button.computeSize(SWT.DEFAULT,
SWT.DEFAULT, true).x);
button.setLayoutData(data);
}
项目:gef-gwt
文件:LayoutConstants.java
private static void initializeConstants() {
if (dialogMargins != null) {
return;
}
GC gc = new GC(Display.getCurrent());
gc.setFont(JFaceResources.getDialogFont());
FontMetrics fontMetrics = gc.getFontMetrics();
dialogMargins = new Point(Dialog.convertHorizontalDLUsToPixels(fontMetrics, IDialogConstants.HORIZONTAL_MARGIN),
Dialog.convertVerticalDLUsToPixels(fontMetrics, IDialogConstants.VERTICAL_MARGIN));
dialogSpacing = new Point(Dialog.convertHorizontalDLUsToPixels(fontMetrics, IDialogConstants.HORIZONTAL_SPACING),
Dialog.convertVerticalDLUsToPixels(fontMetrics, IDialogConstants.VERTICAL_SPACING));
minButtonSize = new Point(Dialog.convertHorizontalDLUsToPixels(fontMetrics, IDialogConstants.BUTTON_WIDTH), 0);
gc.dispose();
}
项目:MAS
文件:SwarmDemo.java
@Override
public void initializePanel(Composite parent) {
final FillLayout rl = new FillLayout();
parent.setLayout(rl);
final Text t = new Text(parent, SWT.SINGLE | SWT.ICON_CANCEL | SWT.CANCEL);
t.setText(startString);
final int chars = 30;
final GC gc = new GC(t);
final FontMetrics fm = gc.getFontMetrics();
final int width = chars * fm.getAverageCharWidth();
final int height = fm.getHeight();
gc.dispose();
t.setSize(t.computeSize(width, height));
t.addListener(SWT.DefaultSelection, this);
t.addListener(SWT.Modify, this);
}
项目:birt
文件:DesignerRepresentation.java
private void showNullChart( Dimension dSize )
{
// Display error message for null chart. This behavior is consistent
// with invalid table.
String MSG = Messages.getString( "DesignerRepresentation.msg.InvalidChart" ); //$NON-NLS-1$
logger.log( ILogger.ERROR,
Messages.getString( "DesignerRepresentation.log.UnableToFind" ) ); //$NON-NLS-1$
Device dv = Display.getCurrent( );
Font font = FontManager.getFont( "Dialog", 10, SWT.ITALIC ); //$NON-NLS-1$
gc.setFont( font );
FontMetrics fm = gc.getFontMetrics( );
gc.setForeground( dv.getSystemColor( SWT.COLOR_RED ) );
gc.setBackground( dv.getSystemColor( SWT.COLOR_WHITE ) );
gc.fillRectangle( 0, 0, dSize.width - 1, dSize.height - 1 );
gc.drawRectangle( 0, 0, dSize.width - 1, dSize.height - 1 );
String[] texts = splitOnBreaks( MSG, font, dSize.width - 10 );
int y = 5;
for ( String text : texts )
{
gc.drawText( text, 5, y );
y += fm.getHeight( );
}
}
项目:birt
文件:SelectionButtonDialogField.java
public Control[] doFillIntoGrid( Composite parent, int nColumns )
{
assertEnoughColumns( nColumns );
Button button = getSelectionButton( parent );
GridData gd = new GridData( );
gd.horizontalSpan = nColumns;
gd.horizontalAlignment = GridData.FILL;
if ( fButtonStyle == SWT.PUSH )
{
GC gc = new GC( button.getFont( ).getDevice( ) );
gc.setFont( button.getFont( ) );
FontMetrics fFontMetrics = gc.getFontMetrics( );
gc.dispose( );
int widthHint = Dialog.convertHorizontalDLUsToPixels( fFontMetrics,
IDialogConstants.BUTTON_WIDTH );
gd.widthHint = Math.max( widthHint,
button.computeSize( SWT.DEFAULT, SWT.DEFAULT, true ).x );
}
button.setLayoutData( gd );
return new Control[]{
button
};
}
项目:n4js
文件:TestProgressBar.java
/**
* Paint.
*/
protected void onPaint(GC gc) {
final Rectangle b = getBounds();
final TestStatus status = counter != null ? counter.getAggregatedStatus() : null;
if (status != null) {
final int total = Math.max(expectedTotal, counter.getTotal()); // this is our 100% value
final int value = counter.getTotal(); // current value
final int totalPx = b.width;
final int valuePx = Math.round(totalPx * (((float) value) / ((float) total)));
gc.setBackground(getColorForStatus(status));
gc.fillRectangle(0, 0, valuePx, b.height);
gc.setBackground(getBackground());
gc.fillRectangle(0 + valuePx, 0, b.width - valuePx, b.height);
} else {
// clear
gc.setBackground(getBackground());
gc.fillRectangle(b);
}
if (counter != null) {
final FontMetrics fm = gc.getFontMetrics();
gc.setForeground(getForeground());
final int pending = expectedTotal > 0 ? expectedTotal - counter.getTotal() : -1;
gc.drawString(counter.toString(true, pending, SWT.RIGHT),
4, b.height / 2 - fm.getHeight() / 2 - fm.getDescent(), true);
}
}
项目:eclipse-plugin-commander
文件:KaviList.java
private int averageCharacterWidth(Font font) {
int width;
GC gc = new GC(Display.getDefault());
gc.setFont(font);
FontMetrics fontMetrics = gc.getFontMetrics();
width = fontMetrics.getAverageCharWidth();
gc.dispose();
return width;
}
项目:gw4e.project
文件:EdgeDefaultSection.java
private void setHeight(FormData fd, Control control, int rowcount) {
GC gc = new GC(control);
try {
gc.setFont(control.getFont());
FontMetrics fm = gc.getFontMetrics();
fd.height = rowcount * fm.getHeight();
} finally {
gc.dispose();
}
}
项目:gw4e.project
文件:VertexDefaultSection.java
private void setHeight(FormData fd, Control control, int rowcount) {
GC gc = new GC(control);
try {
gc.setFont(control.getFont());
FontMetrics fm = gc.getFontMetrics();
fd.height = rowcount * fm.getHeight();
} finally {
gc.dispose();
}
}
项目:gw4e.project
文件:GraphDefaultSection.java
private void setHeight(FormData fd, Control control, int rowcount) {
GC gc = new GC(control);
try {
gc.setFont(control.getFont());
FontMetrics fm = gc.getFontMetrics();
fd.height = rowcount * fm.getHeight();
} finally {
gc.dispose();
}
}
项目:Hydrograph
文件:HydrographInstallationDialog.java
public void update(String currentPageId) {
if (composite == null || composite.isDisposed())
return;
GC metricsGC = new GC(composite);
FontMetrics metrics = metricsGC.getFontMetrics();
metricsGC.dispose();
List buttons = (List) buttonMap.get(currentPageId);
Control[] children = composite.getChildren();
int visibleChildren = 0;
Button closeButton = getButton(IDialogConstants.CLOSE_ID);
for (int i = 0; i < children.length; i++) {
Control control = children[i];
if (closeButton == control)
closeButton.dispose();
else {
control.setVisible(false);
setButtonLayoutData(metrics, control, false);
}
}
if (buttons != null) {
for (int i = 0; i < buttons.size(); i++) {
Button button = (Button) buttons.get(i);
button.setVisible(true);
setButtonLayoutData(metrics, button, true);
GridData data = (GridData) button.getLayoutData();
data.exclude = false;
visibleChildren++;
}
}
GridLayout compositeLayout = (GridLayout) composite.getLayout();
compositeLayout.numColumns = visibleChildren;
composite.layout(true);
}
项目:Hydrograph
文件:HydrographInstallationDialog.java
protected void setButtonLayoutData(FontMetrics metrics, Control button,
boolean visible) {
GridData data = new GridData(GridData.HORIZONTAL_ALIGN_FILL);
int widthHint = Dialog.convertHorizontalDLUsToPixels(metrics,
IDialogConstants.BUTTON_WIDTH);
Point minSize = button.computeSize(SWT.DEFAULT, SWT.DEFAULT, true);
data.widthHint = Math.max(widthHint, minSize.x);
data.exclude = !visible;
button.setLayoutData(data);
}
项目:albaum
文件:GUI.java
private int getReaderSize(final KeyText r) {
final GC gc = new GC(r);
try
{
gc.setFont(r.getFont());
final FontMetrics fm = gc.getFontMetrics();
return READER_ROWS * fm.getHeight();
}
finally {
gc.dispose();
}
}
项目:PhET
文件:PSWTText.java
/**
* Paints this object normally (show it's text). Note that the entire text
* gets rendered so that it's upper left corner appears at the origin of
* this local object.
*
* @param ppc The graphics context to paint into.
*/
public void paintAsText(final PPaintContext ppc) {
final SWTGraphics2D sg2 = (SWTGraphics2D) ppc.getGraphics();
if (!transparent) {
if (getPaint() == null) {
sg2.setBackground(Color.WHITE);
}
else {
sg2.setBackground((Color) getPaint());
}
sg2.fillRect(0, 0, (int) getWidth(), (int) getHeight());
}
sg2.translate(padding, padding);
sg2.setColor(penColor);
sg2.setFont(font);
String line;
double y = 0;
final FontMetrics fontMetrics = sg2.getSWTFontMetrics();
final Iterator lineIterator = lines.iterator();
while (lineIterator.hasNext()) {
line = (String) lineIterator.next();
if (line.length() != 0) {
sg2.drawString(line, 0, y, true);
}
y += fontMetrics.getHeight();
}
sg2.translate(-padding, -padding);
}
项目:team-explorer-everywhere
文件:DeprecatedByTeamExplorerView.java
@Override
public final void createPartControl(final Composite parent) {
/* Compute metrics in pixels */
final GC gc = new GC(parent);
final FontMetrics fontMetrics = gc.getFontMetrics();
gc.dispose();
final GridLayout layout = new GridLayout(2, false);
layout.horizontalSpacing =
Dialog.convertHorizontalDLUsToPixels(fontMetrics, IDialogConstants.HORIZONTAL_SPACING) * 2;
layout.verticalSpacing = Dialog.convertVerticalDLUsToPixels(fontMetrics, IDialogConstants.VERTICAL_SPACING);
layout.marginWidth = Dialog.convertHorizontalDLUsToPixels(fontMetrics, IDialogConstants.HORIZONTAL_MARGIN);
layout.marginHeight = Dialog.convertVerticalDLUsToPixels(fontMetrics, IDialogConstants.VERTICAL_MARGIN);
parent.setLayout(layout);
final Label imageLabel = new Label(parent, SWT.NONE);
imageLabel.setImage(Display.getCurrent().getSystemImage(SWT.ICON_INFORMATION));
final Link textLabel = new Link(parent, SWT.READ_ONLY | SWT.WRAP);
textLabel.setText(Messages.getString("DeprecatedByTeamExplorerView.DeprecatedText")); //$NON-NLS-1$
textLabel.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(final SelectionEvent e) {
try {
final IWorkbenchPage page = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage();
page.showView(TeamExplorerView.ID);
} catch (final Exception f) {
log.warn("Could not open Team Explorer View", f); //$NON-NLS-1$
MessageDialog.openError(
getSite().getShell(),
Messages.getString("DeprecatedByTeamExplorerView.OpenViewFailedTitle"), //$NON-NLS-1$
Messages.getString("DeprecatedByTeamExplorerView.OpenViewFailedMessage")); //$NON-NLS-1$
}
}
});
GridDataBuilder.newInstance().hGrab().hFill().applyTo(textLabel);
}
项目:team-explorer-everywhere
文件:FormHelper.java
public static int TextHeight(final Text control, final int width) {
final GC gc = new GC(control);
final FontMetrics fm = gc.getFontMetrics();
gc.dispose();
if (control.getText() == null) {
return SWT.DEFAULT;
}
return (fm.getHeight()
* (int) Math.ceil((((fm.getAverageCharWidth() * 1.0) * control.getText().length()) / width) + 0.25)) + 2;
}
项目:team-explorer-everywhere
文件:ButtonHelper.java
public static final void setButtonToButtonBarSize(final Button button) {
final GC gc = new GC(button);
final FontMetrics fm = gc.getFontMetrics();
gc.dispose();
final int widthHint = Dialog.convertHorizontalDLUsToPixels(fm, IDialogConstants.BUTTON_WIDTH);
final Point size = button.computeSize(SWT.DEFAULT, SWT.DEFAULT, true);
size.x = Math.max(widthHint, size.x);
ControlSize.setSizeHints(button, size);
}
项目:team-explorer-everywhere
文件:PersistentTableLayout.java
@Override
public Point computeSize(final Composite composite, final int wHint, final int hHint, final boolean flush) {
if (wHint != SWT.DEFAULT && hHint != SWT.DEFAULT) {
return new Point(wHint, hHint);
}
final Table table = (Table) composite;
/* Remove ourselves to avoid recursions */
table.setLayout(null);
final Point tableSize = table.computeSize(wHint, hHint, flush);
table.setLayout(this);
/* Get the font metrics for the table to handle charWidth */
final FontMetrics fontMetrics = ControlSize.getFontMetrics(composite);
int minWidth = 0;
for (int i = 0; i < columnData.length; i++) {
int persistWidth = -1;
if (persistenceStore != null && columnData[i].persistenceKey != null) {
persistWidth = persistenceStore.getColumnWidth(columnData[i].persistenceKey);
}
if (persistWidth >= 0) {
minWidth += persistWidth;
} else if (columnData[i].width >= 0) {
minWidth += columnData[i].width;
} else if (columnData[i].charWidth >= 0) {
minWidth += columnData[i].charWidth * fontMetrics.getAverageCharWidth();
}
}
if (minWidth > tableSize.x) {
tableSize.x = minWidth;
}
return tableSize;
}
项目:ForgedUI-Eclipse
文件:ImageCellEditor.java
private ImageData createColorImage(Control w, String fileLocation) {
GC gc = new GC(w);
FontMetrics fm = gc.getFontMetrics();
int size = fm.getAscent();
gc.dispose();
int indent = 6;
int extent = DEFAULT_EXTENT;
if (w instanceof Table) {
extent = ((Table) w).getItemHeight() - 1;
} else if (w instanceof Tree) {
extent = ((Tree) w).getItemHeight() - 1;
}
if (size > extent) {
size = extent;
}
int width = indent + size;
int height = extent;
ImageData data = null;
// If its a url then we will not show anything.
boolean isUrl = Converter.isStringUrl(fileLocation);
if (!isUrl) {
try {
Image rImage = new Image(Display.getCurrent(), fileLocation);
data = rImage.getImageData().scaledTo(width, height);
} catch (Exception e) {
ForgedUICorePlugin.logError(e);
}
return data;
} else {
return null;
}
}
项目:piccolo2d.java
文件:PSWTText.java
/**
* Paints this object normally (show it's text). Note that the entire text
* gets rendered so that it's upper left corner appears at the origin of
* this local object.
*
* @param ppc The graphics context to paint into.
*/
public void paintAsText(final PPaintContext ppc) {
final SWTGraphics2D sg2 = (SWTGraphics2D) ppc.getGraphics();
if (!transparent) {
if (getPaint() == null) {
sg2.setBackground(Color.WHITE);
}
else {
sg2.setBackground((Color) getPaint());
}
sg2.fillRect(0, 0, (int) getWidth(), (int) getHeight());
}
sg2.translate(padding, padding);
sg2.setColor(penColor);
sg2.setFont(font);
String line;
double y = 0;
final FontMetrics fontMetrics = sg2.getSWTFontMetrics();
final Iterator lineIterator = lines.iterator();
while (lineIterator.hasNext()) {
line = (String) lineIterator.next();
if (line.length() != 0) {
sg2.drawString(line, 0, y, true);
}
y += fontMetrics.getHeight();
}
sg2.translate(-padding, -padding);
}
项目:jdepend4eclipse
文件:JDependPreferencePage.java
private GridData getButtonGridData(Button button) {
GridData gd = new GridData(GridData.FILL_HORIZONTAL | GridData.VERTICAL_ALIGN_BEGINNING);
GC gc = new GC(button);
gc.setFont(button.getFont());
FontMetrics fontMetrics = gc.getFontMetrics();
gc.dispose();
int widthHint =
Dialog.convertHorizontalDLUsToPixels(fontMetrics, IDialogConstants.BUTTON_WIDTH);
gd.widthHint = Math.max(widthHint, button.computeSize(SWT.DEFAULT, SWT.DEFAULT, true).x);
gd.heightHint =
Dialog.convertVerticalDLUsToPixels(fontMetrics, IDialogConstants.BUTTON_HEIGHT);
return gd;
}
项目:PDFReporter-Studio
文件:UIUtil.java
public static int getCharWidth(Drawable control) {
GC gc = new GC(control);
FontMetrics fm = gc.getFontMetrics();
int w = fm.getAverageCharWidth();
gc.dispose();
return w;
}
项目:PDFReporter-Studio
文件:UIUtil.java
public static int getCharHeight(Drawable control) {
GC gc = new GC(control);
FontMetrics fm = gc.getFontMetrics();
int h = fm.getHeight();
gc.dispose();
return h;
}
项目:PDFReporter-Studio
文件:J2DScaledGraphics.java
public void drawString(String s, int x, int y) {
// System.err.println("drawString(" + s + "," + x + "," + y + ")");
java.awt.FontMetrics fm = _g2d.getFontMetrics();
int dy = fm.getAscent();
// Shape clip = g2d.getClip();
// g2d.setClip(null);
_g2d.drawString(s, x, y + dy);
// g2d.setClip(clip);
}