This is an automated email from the ASF dual-hosted git repository. jsorel pushed a commit to branch feat/fontgis in repository https://gitbox.apache.org/repos/asf/sis.git
commit e85ba72967830790e75b337bbbb922b515ad4d67 Author: jsorel <johann.so...@geomatys.com> AuthorDate: Fri Mar 8 12:30:40 2024 +0100 Add javafx Glyph and FontGIS dependency --- optional/build.gradle.kts | 13 + .../main/org/apache/sis/gui/Glyph.java | 426 +++++++++++++++++++++ 2 files changed, 439 insertions(+) diff --git a/optional/build.gradle.kts b/optional/build.gradle.kts index 3f3e90f4eb..8ca6663c0f 100644 --- a/optional/build.gradle.kts +++ b/optional/build.gradle.kts @@ -129,6 +129,18 @@ fun patchForTests(args : MutableList<String>) { addExport(args, "org.apache.sis.util", "org.apache.sis.test", "org.apache.sis.gui") } +fun downloadFontGIS() { + val archiveFolder = File("fontgis") + val archiveFile = File("fontgis/fontgis.tgz") + val archiveUrl = "https://registry.npmjs.org/font-gis/-/font-gis-1.0.5.tgz" + val ttfArchiveFile = File("fontgis/package/fonts/font-gis.ttf") + val ttfSourceFile = File("src/org.apache.sis.gui/main/org/apache/sis/gui/font-gis.ttf") + ant.invokeMethod("mkdir", mapOf("dir" to archiveFolder)) + ant.invokeMethod("get", mapOf("src" to archiveUrl, "dest" to archiveFile)) + ant.invokeMethod("untar", mapOf("src" to archiveFile, "dest" to archiveFolder, "compression" to "gzip")) + ant.invokeMethod("copy", mapOf("file" to ttfArchiveFile, "tofile" to ttfSourceFile)) +} + /* * Discover and execute JUnit-based tests. */ @@ -153,6 +165,7 @@ tasks.test { * Other attributes are hard-coded in `../buildSrc`. */ tasks.jar { + downloadFontGIS(); manifest { attributes["Main-Class"] = "org.apache.sis.gui.DataViewer" } diff --git a/optional/src/org.apache.sis.gui/main/org/apache/sis/gui/Glyph.java b/optional/src/org.apache.sis.gui/main/org/apache/sis/gui/Glyph.java new file mode 100644 index 0000000000..dcaa728426 --- /dev/null +++ b/optional/src/org.apache.sis.gui/main/org/apache/sis/gui/Glyph.java @@ -0,0 +1,426 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.apache.sis.gui; + +import javafx.scene.control.Label; +import javafx.scene.text.Font; + +/** + * + * @author Johann Sorel (Geomatys) + */ +public final class Glyph extends Label { + + /** + * Create a new Glyph label. + * + * @param font Font to use + * @param glyphs label text + */ + public Glyph(Font font, char ... glyphs) { + this(font, new String(glyphs)); + } + + /** + * Create a new Glyph label. + * + * @param font Font to use + * @param glyphs label text + */ + public Glyph(Font font, String glyphs) { + this(font, glyphs, 1.0); + } + + /** + * Create a new Glyph label. + * + * @param font Font to use + * @param glyphs label text + * @param scale scaling factor for the font + */ + public Glyph(Font font, String glyphs, double scale) { + if (scale != 1.0) { + setFont(Font.font(font.getName(),font.getSize() * scale)); + } else { + setFont(font); + } + setText(glyphs); + } + + public static final class FontGIS { + + public static final Font FONT; + static { + Font.loadFont(Glyph.class.getResource("font-gis.ttf").toExternalForm(), 0); + FONT = Font.font("font-gis"); + } + + public static Glyph glyph(char code) { + return glyph(code, 1.0); + } + + public static Glyph glyph(char code, double scale) { + return new Glyph(FONT, new String(new char[]{code}), scale); + } + + public static final char NORTH_ARROW = 60043; + public static final char NORTH_ARROW_N = 60044; + public static final char COMPASS = 60048; + public static final char COMPASS_NEEDLE = 60049; + public static final char COMPASS_ROSE = 60050; + public static final char COMPASS_ROSE_N = 60051; + public static final char COMPASS_ALT = 60166; + public static final char COMPASS_ALT_O = 60167; + public static final char ARROW_O = 59962; + public static final char ARROW = 59963; + public static final char MODIFY_LINE = 59964; + public static final char MODIFY_POLY = 59965; + public static final char MODIFY_POLY_O = 59968; + public static final char COPY_POINT = 59983; + public static final char COPY_LINE = 59984; + public static final char COPY_POLY = 59985; + public static final char BUFFER = 60014; + public static final char DIFFERENCE = 60015; + public static final char INTERSECTION = 60016; + public static final char UNION = 60017; + public static final char SYM_DIFFERENCE = 60018; + public static final char MOVE = 60019; + public static final char MOVE_ALT = 60020; + public static final char OFFSET = 60021; + public static final char SNAP = 60022; + public static final char SPLIT = 60023; + public static final char SPLIT_LINE = 60024; + public static final char SPLIT_POLYGON = 60025; + public static final char CONVEX_HULL = 60072; + public static final char SELECT_EXTENT = 60077; + public static final char SNAP_ORTHO = 60078; + public static final char COLOR = 60079; + public static final char ROTATE = 60131; + public static final char FLIP_H = 60132; + public static final char FLIP_V = 60133; + public static final char SIMPLIFY = 60134; + public static final char PROJ_POINT = 60135; + public static final char SCALE_POLY = 60136; + public static final char SKELETONIZE = 60183; + public static final char DILATATION = 60184; + public static final char EROSION = 60185; + public static final char TRANSLATE = 60198; + public static final char TRANSLATE_X = 60199; + public static final char TRANSLATE_Y = 60200; + public static final char GPX_FILE = 60057; + public static final char GEOJSON_FILE = 60058; + public static final char KML_FILE = 60059; + public static final char WMS = 60060; + public static final char WMTS = 60061; + public static final char WFS = 60062; + public static final char WFS_T = 60063; + public static final char MVT = 60064; + public static final char XYZ = 60065; + public static final char SHAPE_FILE = 60066; + public static final char ESRI_JSON_FILE = 60067; + public static final char TOPOJSON_FILE = 60068; + public static final char FOLDER_MAP = 60207; + public static final char WORLD_FOLDER_O = 60208; + public static final char WORLD_FOLDER = 60209; + public static final char FOLDER_GLOBE = 60210; + public static final char FOLDER_GLOBE_O = 60211; + public static final char FOLDER_MAPS = 60212; + public static final char FOLDER_POI = 60213; + public static final char FOLDER_POI_O = 60214; + public static final char FOLDER_POIS = 60215; + public static final char EARTH_NET = 60216; + public static final char EARTH_NET_O = 60217; + public static final char WCS = 60249; + public static final char POINT = 59905; + public static final char POLYLINE_PT = 59906; + public static final char POLYGON_PT = 59907; + public static final char POLYGON_HOLE_PT = 59908; + public static final char RECTANGLE_PT = 59909; + public static final char SQUARE_PT = 59910; + public static final char CIRCLE_O = 59911; + public static final char POLYLINE = 59913; + public static final char POLYGON_O = 59914; + public static final char POLYGON_HOLE_O = 59915; + public static final char RECTANGLE_O = 59916; + public static final char SQUARE_O = 59917; + public static final char POLYGON_HOLE = 59918; + public static final char POLYGON = 59919; + public static final char RECTANGLE = 59920; + public static final char SQUARE = 59921; + public static final char CIRCLE = 59922; + public static final char MULTIPOINT = 59986; + public static final char BBOX_ALT = 60073; + public static final char EXTENT_ALT = 60074; + public static final char BBOX = 60075; + public static final char EXTENT = 60076; + public static final char MAP_EXTENT = 60080; + public static final char REGULAR_SHAPE_PT = 60139; + public static final char REGULAR_SHAPE_O = 60140; + public static final char REGULAR_SHAPE = 60141; + public static final char LAYER = 59969; + public static final char LAYER_O = 59970; + public static final char LAYERS = 59971; + public static final char LAYERS_O = 59972; + public static final char LAYER_UP = 59973; + public static final char LAYER_DOWN = 59974; + public static final char LAYER_ALT = 59975; + public static final char LAYER_ALT_O = 59976; + public static final char LAYER_STACK = 59977; + public static final char LAYER_STACK_O = 59978; + public static final char LAYER_ADD = 59979; + public static final char LAYER_ADD_O = 59980; + public static final char LAYER_RM = 59981; + public static final char LAYER_RM_O = 59982; + public static final char LAYER_POI = 60010; + public static final char LAYER_DOWNLOAD = 60055; + public static final char LAYER_UPLOAD = 60056; + public static final char LAYER_ROAD = 60144; + public static final char LAYER_HYDRO = 60145; + public static final char LAYER_LANDCOVER = 60146; + public static final char LAYER_CONTOUR = 60147; + public static final char LAYER_STAT = 60148; + public static final char LAYER_STAT_ALT = 60201; + public static final char LAYER_EDIT = 60205; + public static final char LAYER_ALT_EDIT = 60206; + public static final char LAYER_HEIGHT = 60225; + public static final char LAYER_2_ADD_O = 60230; + public static final char LAYER_2_RM_O = 60231; + public static final char LAYER_ALT_ADD_O = 60232; + public static final char LAYER_ALT_RM_O = 60233; + public static final char LAYER_ALT_X_O = 60234; + public static final char LAYERS_POI = 60239; + public static final char LAYER_ALT_POI = 60240; + public static final char EARTH = 59938; + public static final char EARTH_EURO_AFRICA = 59939; + public static final char EARTH_ATLANTIC = 59940; + public static final char EARTH_AMERICA = 59941; + public static final char EARTH_PACIFIC = 59942; + public static final char EARTH_AUSTRALIA = 59943; + public static final char EARTH_ASIA = 59944; + public static final char EARTH_NORTH = 59945; + public static final char EARTH_SOUTH = 59946; + public static final char EARTH_O = 59947; + public static final char EARTH_EURO_AFRICA_O = 59948; + public static final char EARTH_ATLANTIC_O = 59949; + public static final char EARTH_AMERICA_O = 59950; + public static final char EARTH_PACIFIC_O = 59951; + public static final char EARTH_AUSTRALIA_O = 59952; + public static final char EARTH_ASIA_O = 59953; + public static final char EARTH_NORTH_O = 59954; + public static final char EARTH_SOUTH_O = 59955; + public static final char GLOBE = 59958; + public static final char GLOBE_O = 59959; + public static final char GLOBE_ALT = 59960; + public static final char GLOBE_ALT_O = 59961; + public static final char GLOBE_POI = 60034; + public static final char NETWORK = 60091; + public static final char NETWORK_O = 60092; + public static final char TAG = 60097; + public static final char TAG_O = 60098; + public static final char TAGS = 60099; + public static final char TAGS_O = 60100; + public static final char EARTH_GEAR = 60117; + public static final char GLOBE_EARTH = 60152; + public static final char GLOBE_EARTH_ALT = 60153; + public static final char GLOBE_FAVORITE = 60155; + public static final char GLOBE_OPTIONS = 60156; + public static final char GLOBE_SHARE = 60157; + public static final char GLOBE_STAR = 60158; + public static final char GLOBE_SMILEY = 60159; + public static final char GLOBE_USER = 60172; + public static final char GLOBE_USERS = 60173; + public static final char GLOBE_SHIELD = 60174; + public static final char EARTH_NETWORK = 60175; + public static final char EARTH_NETWORK_O = 60176; + public static final char GLOBE_GEAR = 60177; + public static final char MAP = 59987; + public static final char MAP_O = 59988; + public static final char MAP_POI = 59989; + public static final char WORLD_MAP_ALT = 59990; + public static final char MAP_ROUTE = 59991; + public static final char ROAD_MAP = 59992; + public static final char CADASTRE_MAP = 59993; + public static final char LANDCOVER_MAP = 59994; + public static final char BUS_MAP = 59995; + public static final char CONTOUR_MAP = 59996; + public static final char HYDRO_MAP = 59997; + public static final char WORLD_MAP = 60008; + public static final char PIRATE_MAP = 60011; + public static final char STORY_MAP = 60013; + public static final char MAP_BOOK = 60026; + public static final char MAP_LEGEND = 60037; + public static final char MAP_LEGEND_O = 60038; + public static final char MAP_OPTIONS = 60052; + public static final char MAP_OPTIONS_ALT = 60053; + public static final char MAP_PRINT = 60054; + public static final char WORLD_MAP_ALT_O = 60081; + public static final char FLOW_MAP = 60082; + public static final char MAP_STAT = 60083; + public static final char STATISTIC_MAP = 60084; + public static final char VORONOI_MAP = 60087; + public static final char TRIANGLE_MAP = 60088; + public static final char PHONE_MAP = 60089; + public static final char HEX_MAP = 60090; + public static final char MAP_BOOKMARK = 60093; + public static final char MAP_TAG = 60095; + public static final char MAP_TAGS = 60096; + public static final char COMPARE_MAP = 60120; + public static final char SWIPE_MAP_V = 60121; + public static final char SWIPE_MAP_H = 60122; + public static final char MAGNIFY_MAP = 60123; + public static final char MAP_SHARE = 60128; + public static final char MAP_SEND = 60129; + public static final char MAP_SHARE_ALT = 60130; + public static final char MAP_ADD = 60137; + public static final char MAP_RM = 60138; + public static final char MAP_TIME = 60142; + public static final char TIME_MAP = 60143; + public static final char MAP_PLAY = 60149; + public static final char MAP_STAR = 60150; + public static final char MAP_FAVORITE = 60151; + public static final char MAP_SMILEY = 60160; + public static final char MAP_CONTROL = 60162; + public static final char MAP_LOCK = 60164; + public static final char MAP_UNLOCK = 60165; + public static final char WEATHER_MAP = 60171; + public static final char STORY_MAP_O = 60202; + public static final char STORY_MAPS = 60203; + public static final char MAP_EDIT = 60204; + public static final char HEIGHT_MAP = 60224; + public static final char MAP_USER = 60235; + public static final char MAP_USERS = 60236; + public static final char MEASURE = 59912; + public static final char MEASURE_LINE = 59923; + public static final char MEASURE_AREA = 59924; + public static final char MEASURE_AREA_ALT = 59925; + public static final char SCALE = 60161; + public static final char AZIMUTH = 60243; + public static final char HELP_LARROW = 59966; + public static final char HELP_RARROW = 59967; + public static final char HOME = 60180; + public static final char SATELLITE = 60218; + public static final char SATELLITE_EARTH = 60219; + public static final char DRONE = 60223; + public static final char POI = 59926; + public static final char POI_O = 59927; + public static final char POI_ALT = 59928; + public static final char POI_ALT_O = 59929; + public static final char PIN = 59930; + public static final char PUSHPIN = 59931; + public static final char POIS = 59932; + public static final char POIS_O = 59933; + public static final char POI_FAVORITE = 59934; + public static final char POI_FAVORITE_O = 59935; + public static final char POI_HOME = 59936; + public static final char POI_HOME_O = 59937; + public static final char POI_EARTH = 59956; + public static final char PIN_EARTH = 59957; + public static final char PIRATE_POI = 60012; + public static final char LOCATION_POI = 60035; + public static final char LOCATION_POI_O = 60036; + public static final char BOOKMARK_POI = 60094; + public static final char BOOKMARK_POI_B = 60111; + public static final char POI_MAP = 60118; + public static final char POI_MAP_O = 60119; + public static final char LOCATION_MAN = 60181; + public static final char LOCATION_MAN_ALT = 60182; + public static final char POI_INFO = 60188; + public static final char POI_INFO_O = 60189; + public static final char POSITION = 60194; + public static final char POSITION_O = 60195; + public static final char POSITION_MAN = 60196; + public static final char POI_SLASH = 60237; + public static final char POI_SLASH_O = 60238; + public static final char ROUTE = 60027; + public static final char ROUTE_START = 60028; + public static final char ROUTE_END = 60029; + public static final char CAR = 60030; + public static final char BICYCLE = 60031; + public static final char PEDESTRIAN = 60032; + public static final char HIKER = 60033; + public static final char LOCATION_ARROW = 60039; + public static final char LOCATION_ARROW_O = 60040; + public static final char LOCATION = 60041; + public static final char LOCATION_ON = 60042; + public static final char DIRECT = 60045; + public static final char REVERS = 60046; + public static final char TIMER = 60047; + public static final char SIGNPOST = 60085; + public static final char DIRECTION = 60086; + public static final char FLAG = 60101; + public static final char FLAG_O = 60102; + public static final char FLAG_START = 60103; + public static final char FLAG_START_O = 60104; + public static final char FLAG_FINISH = 60105; + public static final char FLAG_B = 60106; + public static final char FLAB_B_O = 60107; + public static final char FLAG_START_B = 60108; + public static final char FLAG_START_B_O = 60109; + public static final char FLAG_FINISH_B_O = 60110; + public static final char START = 60112; + public static final char START_O = 60113; + public static final char STEP = 60114; + public static final char STEP_O = 60115; + public static final char FINISH = 60116; + public static final char DIRECTIONS = 60163; + public static final char PHONE_ROUTE = 60168; + public static final char PHONE_ROUTE_ALT = 60169; + public static final char PHONE_ROUTE_ALT_R = 60170; + public static final char MAP_SEARCH = 59998; + public static final char SEARCH_MAP = 59999; + public static final char SEARCH_POI = 60000; + public static final char SEARCH_GLOBE = 60001; + public static final char SEARCH_HOME = 60002; + public static final char SEARCH_ADDRESS = 60003; + public static final char SEARCH_ATTRIBTUES = 60004; + public static final char SEARCH_PROPERTIE = 60005; + public static final char SEARCH_FEATURE = 60006; + public static final char SEARCH_LAYER = 60007; + public static final char SEARCH_COUNTRY = 60009; + public static final char SEARCH_GLOBE_ALT = 60154; + public static final char SEARCH_COORD = 60178; + public static final char SEARCH_DATA = 60179; + public static final char ZOOM_IN = 60069; + public static final char ZOOM_OUT = 60070; + public static final char FULL_SCREEN = 60071; + public static final char SCREEN_DUB = 60124; + public static final char SCREEN_SPLIT_H = 60125; + public static final char SCREEN_SPLIT_V = 60126; + public static final char SCREEN_MAG = 60127; + public static final char COORD_SYSTEM = 60186; + public static final char COORD_SYSTEM_3D = 60187; + public static final char COORD_SYSTEM_ALT = 60190; + public static final char COORD_SYSTEM_3D_ALT = 60191; + public static final char GRID = 60192; + public static final char CUBE_3D = 60193; + public static final char COORD_GRID = 60197; + public static final char PHOTOGRAMMETRY = 60220; + public static final char D360 = 60221; + public static final char TOPOGRAPHY = 60222; + public static final char GNSS = 60226; + public static final char GNSS_ANTENNA = 60227; + public static final char TACHEOMETER = 60228; + public static final char THEODOLITE = 60229; + public static final char PROFILE = 60241; + public static final char PROFILE_O = 60242; + public static final char SCREEN_DUB1 = 60244; + public static final char SCREEN_DUB2 = 60245; + public static final char SCREEN_DUB_O = 60246; + public static final char SCREEN_MAG_O = 60247; + public static final char SCREEN_MAG_ALT = 60248; + } +}