mirror of
https://github.com/eclipse-sailing-analytics/sailing-analytics.git
synced 2026-10-28 14:57:12 +00:00
multi-line SmallTransparentTextOverlay that scales font size with map size
This commit is contained in:
1 parent
42b1d6aaef
commit
c327260fec
2 files changed
+30
-8
No files matched your search
@@ -71,7 +71,7 @@
|
||||
<booleanAttribute key="org.eclipse.jdt.launching.DEFAULT_CLASSPATH" value="false"/>
|
||||
<stringAttribute key="org.eclipse.jdt.launching.JRE_CONTAINER" value="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"/>
|
||||
<stringAttribute key="org.eclipse.jdt.launching.MAIN_TYPE" value="com.google.gwt.dev.DevMode"/>
|
||||
<stringAttribute key="org.eclipse.jdt.launching.PROGRAM_ARGUMENTS" value="-superDevMode -incremental -workDir "${project_loc:com.sap.sailing.gwt.ui}/.tmp/gwt-work" -war "${project_loc:com.sap.sailing.gwt.ui}" -noserver -remoteUI "${gwt_remote_ui_server_port}:${unique_id}" -logLevel INFO -codeServerPort 9997 -startupUrl /gwt/Home.html com.sap.sailing.gwt.home.Home -startupUrl /gwt/AdminConsole.html com.sap.sailing.gwt.ui.AdminConsole -startupUrl /gwt/LeaderboardEditing.html com.sap.sailing.gwt.ui.LeaderboardEditing -startupUrl /gwt/Leaderboard.html com.sap.sailing.gwt.ui.Leaderboard -startupUrl /gwt/Spectator.html com.sap.sailing.gwt.ui.Spectator -startupUrl /gwt/RaceBoard.html com.sap.sailing.gwt.ui.RaceBoard -startupUrl /gwt/PolarSheets.html com.sap.sailing.gwt.ui.PolarSheets -startupUrl /gwt/RegattaOverview.html com.sap.sailing.gwt.regattaoverview.RegattaOverview -startupUrl /gwt/DataMining.html com.sap.sailing.gwt.ui.DataMining -startupUrl /gwt/Simulator.html com.sap.sailing.gwt.ui.Simulator -startupUrl /gwt/VideoPopup.html com.sap.sailing.gwt.ui.VideoPopup com.sap.sailing.gwt.home.Desktop com.sap.sailing.gwt.home.Home com.sap.sailing.gwt.ui.AdminConsole com.sap.sailing.gwt.AutoPlay com.sap.sailing.gwt.ui.YoutubePopup com.sap.sailing.gwt.ui.Simulator com.sap.sailing.gwt.ui.Leaderboard com.sap.sailing.gwt.ui.PolarSheets com.sap.sailing.gwt.regattaoverview.RegattaOverview com.sap.sailing.gwt.ui.Spectator com.sap.sailing.gwt.ui.LeaderboardEditing com.sap.sailing.gwt.ui.DataMining com.sap.sailing.gwt.ui.RaceBoard"/>
|
||||
<stringAttribute key="org.eclipse.jdt.launching.PROGRAM_ARGUMENTS" value="-superDevMode -incremental -workDir "${project_loc:com.sap.sailing.gwt.ui}/.tmp/gwt-work" -war "${project_loc:com.sap.sailing.gwt.ui}" -noserver -remoteUI "${gwt_remote_ui_server_port}:${unique_id}" -logLevel INFO -codeServerPort 9997 -startupUrl /gwt/Home.html com.sap.sailing.gwt.home.Home -startupUrl /gwt/AdminConsole.html com.sap.sailing.gwt.ui.AdminConsole -startupUrl /gwt/LeaderboardEditing.html com.sap.sailing.gwt.ui.LeaderboardEditing -startupUrl /gwt/Leaderboard.html com.sap.sailing.gwt.ui.Leaderboard -startupUrl /gwt/Spectator.html com.sap.sailing.gwt.ui.Spectator -startupUrl /gwt/RaceBoard.html com.sap.sailing.gwt.ui.RaceBoard -startupUrl /gwt/PolarSheets.html com.sap.sailing.gwt.ui.PolarSheets -startupUrl /gwt/RegattaOverview.html com.sap.sailing.gwt.regattaoverview.RegattaOverview -startupUrl /gwt/DataMining.html com.sap.sailing.gwt.ui.DataMining -startupUrl /gwt/Simulator.html com.sap.sailing.gwt.ui.Simulator -startupUrl /gwt/VideoPopup.html com.sap.sailing.gwt.ui.VideoPopup com.sap.sailing.gwt.home.Desktop com.sap.sailing.gwt.home.Home com.sap.sailing.gwt.ui.AdminConsole com.sap.sailing.gwt.AutoPlay com.sap.sailing.gwt.ui.YoutubePopup com.sap.sailing.gwt.ui.Simulator com.sap.sailing.gwt.ui.Leaderboard com.sap.sailing.gwt.ui.PolarSheets com.sap.sailing.gwt.regattaoverview.RegattaOverview com.sap.sailing.gwt.ui.Spectator com.sap.sailing.gwt.ui.LeaderboardEditing com.sap.sailing.gwt.ui.DataMining com.sap.sailing.gwt.ui.RaceBoard com.sap.sailing.gwt.ui.EmbeddedMapAndWindChart"/>
|
||||
<stringAttribute key="org.eclipse.jdt.launching.PROJECT_ATTR" value="com.sap.sailing.gwt.ui"/>
|
||||
<stringAttribute key="org.eclipse.jdt.launching.VM_ARGUMENTS" value="-Xms1024m -Xmx3072m"/>
|
||||
</launchConfiguration>
|
||||
+29
-7
@@ -52,19 +52,35 @@ public class SmallTransparentInfoOverlay extends CanvasOverlayV3 {
|
||||
|
||||
@Override
|
||||
protected void draw() {
|
||||
final int LINE_SPACING = 3;
|
||||
final int BOTTOM_MARGIN = 8;
|
||||
final int LEFT_MARGIN = 8;
|
||||
final int RIGHT_MARGIN = 9;
|
||||
final int POLE_LENGTH = 25;
|
||||
if (mapProjection != null && position != null) {
|
||||
LatLng latLngPosition = coordinateSystem.toLatLng(position);
|
||||
Context2d context2d = getCanvas().getContext2d();
|
||||
CssColor grayTransparentColor = CssColor.make("rgba(255,255,255,0.75)");
|
||||
|
||||
context2d.setFont("12px bold Verdana sans-serif");
|
||||
TextMetrics measureText = context2d.measureText(infoText);
|
||||
double textWidth = measureText.getWidth();
|
||||
|
||||
canvasWidth = (int) textWidth + 17;
|
||||
final int fontSizeInPx = 12+2*Math.max(0, map.getZoom()-15);
|
||||
final int LINE_HEIGHT = fontSizeInPx+LINE_SPACING;
|
||||
context2d.setFont(""+fontSizeInPx+"px Roboto, Arial, sans-serif");
|
||||
// context2d.setFont(""+fontSizeInPx+"px bold Verdana sans-serif");
|
||||
double textWidth = 0;
|
||||
infoBoxHeight = BOTTOM_MARGIN;
|
||||
for (final String line : infoText.split("\n")) {
|
||||
TextMetrics measureText = context2d.measureText(line);
|
||||
if (measureText.getWidth() > textWidth) {
|
||||
textWidth = measureText.getWidth();
|
||||
}
|
||||
infoBoxHeight += LINE_HEIGHT;
|
||||
}
|
||||
canvasWidth = (int) textWidth + LEFT_MARGIN + RIGHT_MARGIN;
|
||||
infoBoxWidth = canvasWidth;
|
||||
canvasHeight = infoBoxHeight + POLE_LENGTH;
|
||||
getCanvas().setWidth(String.valueOf(canvasWidth));
|
||||
getCanvas().setCoordinateSpaceWidth(canvasWidth);
|
||||
getCanvas().setHeight(String.valueOf(canvasHeight));
|
||||
getCanvas().setCoordinateSpaceHeight(canvasHeight);
|
||||
|
||||
// Change origin and dimensions to match true size (a stroke makes the shape a bit larger)
|
||||
context2d.setFillStyle(grayTransparentColor);
|
||||
@@ -83,7 +99,13 @@ public class SmallTransparentInfoOverlay extends CanvasOverlayV3 {
|
||||
|
||||
context2d.beginPath();
|
||||
context2d.setFillStyle("black");
|
||||
context2d.fillText(infoText, 8, 14);
|
||||
// context2d.setFont(""+fontSizeInPx+"px bold Verdana sans-serif");
|
||||
context2d.setFont(""+fontSizeInPx+"px Roboto, Arial, sans-serif");
|
||||
int y = LINE_HEIGHT;
|
||||
for (final String line : infoText.split("\n")) {
|
||||
context2d.fillText(line, LEFT_MARGIN, y);
|
||||
y += LINE_HEIGHT;
|
||||
}
|
||||
context2d.stroke();
|
||||
|
||||
Point objectPositionInPx = mapProjection.fromLatLngToDivPixel(latLngPosition);
|
||||
|
||||
Reference in new issue
Block a user