⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 coloredshadingcolors.java

📁 openmap java写的开源数字地图程序. 用applet实现,可以像google map 那样放大缩小地图.
💻 JAVA
字号:
// **********************************************************************// // <copyright>// //  BBN Technologies//  10 Moulton Street//  Cambridge, MA 02138//  (617) 873-8000// //  Copyright (C) BBNT Solutions LLC. All rights reserved.// // </copyright>// **********************************************************************// // $Source: /cvs/distapps/openmap/src/openmap/com/bbn/openmap/omGraphics/grid/ColoredShadingColors.java,v $// $RCSfile: ColoredShadingColors.java,v $// $Revision: 1.2.2.2 $// $Date: 2005/12/22 18:42:47 $// $Author: dietrick $// // **********************************************************************package com.bbn.openmap.omGraphics.grid;import java.awt.Color;import com.bbn.openmap.omGraphics.OMColor;import com.bbn.openmap.proj.Length;/** * A holder for handling colors for elevations. This ElevationColors object also * takes into account slope when providing pixel int values. */public class ColoredShadingColors implements ElevationColors {    protected ColorHelper[] colors;    public Color waterColor = OMColor.clear;    public final int[] DEFAULT_COLOR_CUTOFFS = { 0, 50, 100, 200, 400, 800,            1200, 1600, 2000, 3000, 4000, 6000, 8000, 10000, 12000, 33000 };    public final int[] DEFAULT_COLORS = { 0x00bfeffa, 0xff145f46, 0xff286650,            0xff3c8064, 0xff6e9982, 0xff8caf96, 0xffbec896, 0xffe1c89b,            0xffb39e4d, 0xff9f8e33, 0xffa39833, 0xffb2a54d, 0xffb9a570,            0xffd7cd8c, 0xffd9d9d9, 0xfff3f3e6 };    /**     * Slope color adjustment, gets subtracted from the color for slopes of zerp     * or less. Default is 0x0a0a0a.     */    protected int slopeColorAdjustment = 0x000a0a0a;    /*     * Default constructor, used default elevation cutoffs and color values.     */    public ColoredShadingColors() {        getColors();    }    /**     * Constructor to provide unique evevation cutoffs and colors.     */    public ColoredShadingColors(ColorHelper[] colors) {        this.colors = colors;    }    /**     * Set the color factor to subtract from the colors for level or negative     * slopes. Should be the same for each byte, or the colors will change     * drastically.     */    public void setSlopeColorAdjustment(int adj) {        slopeColorAdjustment = adj;    }    public int getSlopeColorAdjustment() {        return slopeColorAdjustment;    }    /**     * Get an array of colors with elevation values.     */    public ColorHelper[] getColors() {        if (colors == null) {            colors = createDefaultColors();        }        return colors;    }    /**     * Set the list of ColorHelpers. The elevations of the ColorHelpers should     * be in order, from lowest to highest.     */    public void setColors(ColorHelper[] clrs) {        colors = clrs;    }    public int[] getColortable() {        ColorHelper[] helpers = getColors();        int[] cs = new int[helpers.length];        for (int i = 0; i < helpers.length; i++) {            cs[i] = helpers[i].value;        }        return cs;    }    /**     * Set the color to use for water/invalid data, zero elevation.     */    public void setWaterColor(Color water) {        waterColor = water;    }    /**     * Get the color to use for water/invalid data, zero elevation.     */    public Color getWaterColor() {        return waterColor;    }    /**     * Get the Color for the given elevation, with the provided units. The slope     * of the land, from the northwest to the southeast, is provided.     */    public Color getColor(int elevation, Length units, double slope) {        return new Color(getARGB(elevation, units, slope));    }    /**     * Get the int argb value for a given elevation, with the provided units.     * The slope of the land, from the northwest to the southeast, is provided     * in case that should matter. It's not used in this version of the     * algorithm.     */    public int getARGB(int elevation, Length units, double slope) {        if (elevation < 0) {            return waterColor.getRGB();        }        float elev = units.toRadians(elevation);        float numCutoffs = colors.length;        int i = 0;        while (colors != null && i < numCutoffs && colors[i] != null                && colors[i].height < elev) {            i++;        }        int value = colors[i].value;        if (slope < 0) {            value -= 2 * slopeColorAdjustment;        } else if (slope == 0) {            value -= slopeColorAdjustment;        }        return value;    }    public ColorHelper[] createDefaultColors() {        int number = DEFAULT_COLOR_CUTOFFS.length;        ColorHelper[] helpers = new ColorHelper[number];        for (int i = 0; i < number; i++) {            helpers[i] = new ColorHelper(Length.FEET.toRadians((float) DEFAULT_COLOR_CUTOFFS[i]), DEFAULT_COLORS[i]);        }        return helpers;    }    /**     * A helper class that associates an int color value with an elevation.     * Elevation has to be in radians.     */    public static class ColorHelper {        /** height value in radians. */        public double height = 0; // in radians        /** Integer ARGB color value. */        public int value = 0;        /**         * Create a ColorHelper.         *          * @param radianHeight minimum elevation for color use, in radians.         * @param val integer ARGB color value         */        public ColorHelper(double radianHeight, int val) {            height = radianHeight;            value = val;        }    }}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -