Mercurial > projects > dwt-samples
view snippets/styledtext/Snippet211.d @ 155:04d05db6dca4
styledtext: Snippet211, Snippet213, Snippet217, Snippet218, Snippet222, Snippet244
author | yidabu <yidabu@gmail.com> |
---|---|
date | Fri, 22 Aug 2008 07:27:56 +0800 |
parents | |
children |
line wrap: on
line source
/******************************************************************************* * Copyright (c) 2000, 2004 IBM Corporation and others. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html * * Contributors: * IBM Corporation - initial API and implementation * Port to the D programming language: * yidabu at gmail dot com ( D China http://www.d-programming-language-china.org/ ) *******************************************************************************/ module styledtext.Snippet211; /* * SWT StyledText snippet: use rise and font with StyleRange. * * For a list of all SWT example snippets see * http://www.eclipse.org/swt/snippets/ * * @since 3.2 */ import dwt.DWT; import dwt.custom.StyledText; import dwt.custom.StyleRange; import dwt.layout.FillLayout; import dwt.widgets.Display; import dwt.widgets.Shell; import dwt.widgets.Event; import dwt.widgets.Listener; import dwt.graphics.FontData; import dwt.graphics.Font; import dwt.graphics.Rectangle; import dwt.graphics.GC; import dwt.graphics.Image; import dwt.dwthelper.utils; version(JIVE){ import jive.stacktrace; } void main() { static String text = "You can set any font you want in a range. You can also set a baseline rise and all other old features" " like background and foreground, and mix them any way you want. Totally awesome."; Display display = new Display(); Shell shell = new Shell(display); shell.setLayout(new FillLayout()); StyledText styledText = new StyledText(shell, DWT.WRAP | DWT.BORDER); styledText.setText(text); FontData data = styledText.getFont().getFontData()[0]; Font font1 = new Font(display, data.getName(), data.getHeight() * 2f, data.getStyle()); Font font2 = new Font(display, data.getName(), data.getHeight() * 4f / 5, data.getStyle()); StyleRange[] styles = new StyleRange[8]; styles[0] = new StyleRange(); styles[0].font = font1; styles[1] = new StyleRange(); styles[1].rise = data.getHeight() / 3; styles[2] = new StyleRange(); styles[2].background = display.getSystemColor(DWT.COLOR_GREEN); styles[3] = new StyleRange(); styles[3].foreground = display.getSystemColor(DWT.COLOR_MAGENTA); styles[4] = new StyleRange(); styles[4].font = font2; styles[4].foreground = display.getSystemColor(DWT.COLOR_BLUE);; styles[4].underline = true; styles[5] = new StyleRange(); styles[5].rise = -data.getHeight() / 3; styles[5].strikeout = true; styles[5].underline = true; styles[6] = new StyleRange(); styles[6].font = font1; styles[6].foreground = display.getSystemColor(DWT.COLOR_YELLOW); styles[6].background = display.getSystemColor(DWT.COLOR_BLUE); styles[7] = new StyleRange(); styles[7].rise = data.getHeight() / 3; styles[7].underline = true; styles[7].fontStyle = DWT.BOLD; styles[7].foreground = display.getSystemColor(DWT.COLOR_RED); styles[7].background = display.getSystemColor(DWT.COLOR_BLACK); int[] ranges = [16, 4, 61, 13, 107, 10, 122, 10, 134, 3, 143, 6, 160, 7, 168, 7]; styledText.setStyleRanges(ranges, styles); shell.setSize(300, 300); shell.open(); while (!shell.isDisposed()) { if (!display.readAndDispatch()) display.sleep(); } font1.dispose(); font2.dispose(); display.dispose(); }