/*******************************************************************************
 * Copyright (c) 2008, 2010 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
 *******************************************************************************/

package org.eclipse.help.ui.internal.util;

import org.eclipse.core.runtime.Platform;
import org.eclipse.osgi.service.environment.Constants;
import org.eclipse.swt.widgets.Display;

public class FontUtils {

	private static final int TRAY_FONT_HEIGHT_LIMIT = 17;

	/*
	 * Determine whether the font is suitable for use in a tray dialog
	 * @return true if the font is so large that the tray would look bad.
	 */
	static public boolean isFontTooLargeForTray() {
		try {
			int height = Display.getDefault().getSystemFont().getFontData()[0].getHeight();
			return height > TRAY_FONT_HEIGHT_LIMIT;
		} catch (RuntimeException e) {
			return true;
		}
	}

	/*
	 * Get a sequence of JavaScript which will scale the embedded browser contents
	 * @param percent The percentage scaling relative to the default size
	 * @return Javascript to perform the scaling or null if we cannot create scaling script for this OS/browser
	 */
	static public String getRescaleScript(int percent) {
		String scaleString = percent/100 + "." + (percent % 100) / 10; //$NON-NLS-1$
		String os = Platform.getOS();
		if (Constants.WS_WIN32.equalsIgnoreCase(os) ||
		    Constants.OS_MACOSX.equalsIgnoreCase(os)) {
			return "document.body.style.zoom = " + scaleString; //$NON-NLS-1$
		}
		return null;  // No rescale in Mozilla browsers
	}

	/*
	 * Function to determine whether the browser in the help view supports a zoom command
	 */
	static public boolean canRescaleHelpView() {
		String os = Platform.getOS();
		if (Constants.WS_WIN32.equalsIgnoreCase(os) ||
			Constants.OS_MACOSX.equalsIgnoreCase(os)) {
			return true;
		}
		// No rescale in Mozilla browsers, see Bug 227198
		return false;
	}

}
