1 /******************************************************************************* 2 * Copyright (c) 2005 IBM Corporation and others. 3 * All rights reserved. This program and the accompanying materials 4 * are made available under the terms of the Eclipse Public License v1.0 5 * which accompanies this distribution, and is available at 6 * http://www.eclipse.org/legal/epl-v10.html 7 * 8 * Contributors: 9 * IBM Corporation - initial API and implementation 10 * Port to the D programming language: 11 * Frank Benoit <benoit@tionex.de> 12 *******************************************************************************/ 13 module org.eclipse.swt.layout.FillData; 14 15 import org.eclipse.swt.SWT; 16 import org.eclipse.swt.graphics.Point; 17 import org.eclipse.swt.widgets.Control; 18 19 class FillData { 20 21 int defaultWidth = -1, defaultHeight = -1; 22 int currentWhint, currentHhint, currentWidth = -1, currentHeight = -1; 23 24 Point computeSize (Control control, int wHint, int hHint, bool flushCache_) { 25 if (flushCache_) flushCache(); 26 if (wHint is SWT.DEFAULT && hHint is SWT.DEFAULT) { 27 if (defaultWidth is -1 || defaultHeight is -1) { 28 Point size = control.computeSize (wHint, hHint, flushCache_); 29 defaultWidth = size.x; 30 defaultHeight = size.y; 31 } 32 return new Point(defaultWidth, defaultHeight); 33 } 34 if (currentWidth is -1 || currentHeight is -1 || wHint !is currentWhint || hHint !is currentHhint) { 35 Point size = control.computeSize (wHint, hHint, flushCache_); 36 currentWhint = wHint; 37 currentHhint = hHint; 38 currentWidth = size.x; 39 currentHeight = size.y; 40 } 41 return new Point(currentWidth, currentHeight); 42 } 43 void flushCache () { 44 defaultWidth = defaultHeight = -1; 45 currentWidth = currentHeight = -1; 46 } 47 }