First set of updates to get CAVE working on macOS

Implement jogl changes, changes to the developer.product and feature.xml
Change the rendering method of E/W GOES combos so they render on macOS

com.raytheon.uf.viz.gl.image.stipple/META-INF/MANIFEST.MF
- add com.jogamp.jogl as a required bundle

""/src/com/raytheon/uf/viz/gl/image/stipple/GLStippledColormappedImageExtension.java
- import jogamp and remove opengl import
- use GL2 objects and constants instead of GL

com.ratheon.uf.viz.gl.triangulated/META-INF/MANIFEST.MF
- add com.jogamp.jogl as required bundled

""/src/com/raytheon/uf/viz/gl/triangulated/GLTriangulatedImage.java
- use jogamp import instead of opengl
- use GL2 objects and constants instead of GL

com.raytheon.uf.viz.radar.gl/META-INF/MANIFEST.MF
- add com.jogamp.jogl as required bundle

""/src/com/raytheon/uf/viz/radar/gl/RadarRadialMesh.java
- use GL2 import, variables, and constants instead of GL

com.raytheon.uf.viz.truecolor.gl/META-INF/MANIFEST.MF
- remove javax.media.opengl as required bundle
- add com.jogamp.jogl as required bundle

""/src/com/raytheon/uf/viz/truecolor/gl/extension/GLTrueColorImagingExtension.java
- use GL2 import, variables and constants instead of GL

com.raytheon.viz.feature.awips.developer/feature.xml
- replaced with existing v18 feature.xml for macOS

com.raytheon.viz.product.awips/META-INF/MANIFEST.MF
- changed the java execution environment form 1.7 to 1.8 (which is what we have in v18, it should at least be 1.8, possibly 1.11)

""/developer.product
- modified the program arguments with the proper locationfor caveData (in ~/Library/) and remove the -alertviz flag
- add a flag for start on first thread (this is how our current v18-osx one is)
- changed the logback to alertview
- removed the python jep library path
- renamed the DvizVersion to DcaveVersion
- added an argument for build system
- removed windows image argument
- add a line defining the JRE for macos
- added a preferencesInfo and ccs lines to be the same as our v18-osx version

""/plugin.xml
- remove windows image property

com.raytheon.viz.satellite/src/com/raytheon/viz/satellite/rsc/SatBlendedResource.java
- change the way we draw E/W GOES combos so they can render on macOS
This commit is contained in:
srcarter3 2023-01-25 10:20:04 -07:00
parent 845c878de6
commit b45838f0e6
13 changed files with 113 additions and 197 deletions

View file

@ -9,4 +9,5 @@ Require-Bundle: com.raytheon.uf.viz.core,
com.raytheon.uf.viz.drawables.image.stipple,
com.raytheon.uf.common.colormap,
com.raytheon.viz.core.gl,
javax.measure
javax.measure,
com.jogamp.jogl;bundle-version="2.3.2"

View file

@ -22,7 +22,7 @@ package com.raytheon.uf.viz.gl.image.stipple;
import java.util.Arrays;
import java.util.List;
import javax.media.opengl.GL;
import com.jogamp.opengl.GL2;
import com.raytheon.uf.common.colormap.prefs.ColorMapParameters;
import com.raytheon.uf.viz.core.DrawableImage;
@ -51,6 +51,7 @@ import com.raytheon.viz.core.gl.IGLTarget;
* Date Ticket# Engineer Description
* ------------- -------- --------- -----------------
* Nov 01, 2016 5957 bsteffen Initial creation
* Jan 19, 2023 srcarter@ucar Add MJ changes for GL2
*
* </pre>
*
@ -75,7 +76,7 @@ public class GLStippledColormappedImageExtension
IColormappedImageExtension cmapExt = target
.getExtension(IColormappedImageExtension.class);
boolean result = true;
GL gl = target.getGl();
GL2 gl = target.getGl().getGL2();
for (DrawableImage image : images) {
GLStippledColormappedImage stippled = (GLStippledColormappedImage) image
.getImage();
@ -148,14 +149,14 @@ public class GLStippledColormappedImageExtension
}
byte[] pattern = patterns.get(i);
if (pattern != null) {
gl.glEnable(GL.GL_POLYGON_STIPPLE);
gl.glEnable(GL2.GL_POLYGON_STIPPLE);
gl.glPolygonStipple(pattern, 0);
}
params.setAlphaMask(alphaMask);
params.setUseMask(true);
result &= cmapExt.drawRasters(paintProps, images);
if (pattern != null) {
gl.glDisable(GL.GL_POLYGON_STIPPLE);
gl.glDisable(GL2.GL_POLYGON_STIPPLE);
}
/* Reset the alpha for the next loop. */
for (int a = alphaStart; a < alphaEnd; a += 1) {

View file

@ -9,6 +9,7 @@ Require-Bundle: com.raytheon.uf.viz.drawables.triangulated,
com.raytheon.uf.viz.core,
com.raytheon.uf.common.colormap,
com.raytheon.viz.core.gl,
javax.measure
javax.measure,
com.jogamp.jogl;bundle-version="2.3.2"
Import-Package: org.locationtech.jts.algorithm,
org.locationtech.jts.geom

View file

@ -26,7 +26,7 @@ import java.nio.FloatBuffer;
import java.nio.IntBuffer;
import javax.measure.Unit;
import javax.media.opengl.GL;
import com.jogamp.opengl.GL2;
import com.raytheon.uf.common.colormap.image.ColorMapData;
import com.raytheon.uf.common.colormap.prefs.ColorMapParameters;
@ -85,6 +85,7 @@ import org.locationtech.jts.geom.Triangle;
* Aug 24, 2015 4709 bsteffen Initial creation
* Dec 04, 2015 5146 bsteffen Rewind attrib buffer before use.
* May 19, 2016 5146 bsteffen Add debug code for drawing triangles.
* Jan 19, 2023 srcarter@ucar Add MJs changes for GL2
*
* </pre>
*
@ -200,35 +201,35 @@ public class GLTriangulatedImage implements ITriangulatedImage {
if (this.indexBuffer == null) {
stage();
}
GL gl = target.getGl();
GL2 gl = target.getGl().getGL2();
target.pushGLState();
try {
gl.glPolygonMode(GL.GL_BACK, GL.GL_FILL);
gl.glPolygonMode(GL.GL_FRONT, GL.GL_FILL);
gl.glPolygonMode(GL2.GL_BACK, GL2.GL_FILL);
gl.glPolygonMode(GL2.GL_FRONT, GL2.GL_FILL);
gl.glEnable(GL.GL_BLEND);
gl.glBlendFunc(GL.GL_SRC_ALPHA, GL.GL_ONE_MINUS_SRC_ALPHA);
gl.glEnable(GL2.GL_BLEND);
gl.glBlendFunc(GL2.GL_SRC_ALPHA, GL2.GL_ONE_MINUS_SRC_ALPHA);
GLTextureObject cmapTexture = target
.getColorMapTexture(colorMapParameters);
gl.glActiveTexture(GL.GL_TEXTURE1);
cmapTexture.bind(gl, GL.GL_TEXTURE_1D);
gl.glActiveTexture(GL2.GL_TEXTURE1);
cmapTexture.bind(gl, GL2.GL_TEXTURE_1D);
if (colorMapParameters.isInterpolate()) {
gl.glTexParameteri(GL.GL_TEXTURE_1D, GL.GL_TEXTURE_MIN_FILTER,
GL.GL_LINEAR);
gl.glTexParameteri(GL.GL_TEXTURE_1D, GL.GL_TEXTURE_MAG_FILTER,
GL.GL_LINEAR);
gl.glTexParameteri(GL2.GL_TEXTURE_1D, GL2.GL_TEXTURE_MIN_FILTER,
GL2.GL_LINEAR);
gl.glTexParameteri(GL2.GL_TEXTURE_1D, GL2.GL_TEXTURE_MAG_FILTER,
GL2.GL_LINEAR);
} else {
gl.glTexParameteri(GL.GL_TEXTURE_1D, GL.GL_TEXTURE_MIN_FILTER,
GL.GL_NEAREST);
gl.glTexParameteri(GL.GL_TEXTURE_1D, GL.GL_TEXTURE_MAG_FILTER,
GL.GL_NEAREST);
gl.glTexParameteri(GL2.GL_TEXTURE_1D, GL2.GL_TEXTURE_MIN_FILTER,
GL2.GL_NEAREST);
gl.glTexParameteri(GL2.GL_TEXTURE_1D, GL2.GL_TEXTURE_MAG_FILTER,
GL2.GL_NEAREST);
}
setupDataMapping(gl, GL.GL_TEXTURE3, GL.GL_TEXTURE4);
setupDataMapping(gl, GL2.GL_TEXTURE3, GL2.GL_TEXTURE4);
GLShaderProgram program = GLSLFactory.getInstance()
.getShaderProgram(gl, "copyValueVertexShader",
@ -248,9 +249,9 @@ public class GLTriangulatedImage implements ITriangulatedImage {
GLSLStructFactory.createColorModifiers(program, "modifiers",
paintProps.getAlpha(), brightness, contrast);
gl.glEnableClientState(GL.GL_VERTEX_ARRAY);
gl.glEnableClientState(GL2.GL_VERTEX_ARRAY);
vertexBuffer.rewind();
gl.glVertexPointer(2, GL.GL_FLOAT, 0, vertexBuffer);
gl.glVertexPointer(2, GL2.GL_FLOAT, 0, vertexBuffer);
Buffer attribBufferData = attribBuffer.getData();
attribBufferData.rewind();
@ -258,8 +259,8 @@ public class GLTriangulatedImage implements ITriangulatedImage {
attribBuffer.getTextureType(), attribBufferData);
indexBuffer.rewind();
gl.glDrawElements(GL.GL_TRIANGLES, indexBuffer.capacity(),
GL.GL_UNSIGNED_INT, indexBuffer);
gl.glDrawElements(GL2.GL_TRIANGLES, indexBuffer.capacity(),
GL2.GL_UNSIGNED_INT, indexBuffer);
program.endShader();
if (SHOW_MESH_LINES) {
@ -268,27 +269,27 @@ public class GLTriangulatedImage implements ITriangulatedImage {
* lines on top of the image for debugging.
*/
indexBuffer.rewind();
gl.glDisable(GL.GL_BLEND);
gl.glPolygonMode(GL.GL_FRONT_AND_BACK, GL.GL_LINE);
gl.glDrawElements(GL.GL_TRIANGLES, indexBuffer.capacity(),
GL.GL_UNSIGNED_INT, indexBuffer);
gl.glPolygonMode(GL.GL_FRONT_AND_BACK, GL.GL_FILL);
gl.glEnable(GL.GL_BLEND);
gl.glDisable(GL2.GL_BLEND);
gl.glPolygonMode(GL2.GL_FRONT_AND_BACK, GL2.GL_LINE);
gl.glDrawElements(GL2.GL_TRIANGLES, indexBuffer.capacity(),
GL2.GL_UNSIGNED_INT, indexBuffer);
gl.glPolygonMode(GL2.GL_FRONT_AND_BACK, GL2.GL_FILL);
gl.glEnable(GL2.GL_BLEND);
}
gl.glDisableClientState(GL.GL_VERTEX_ARRAY);
gl.glDisableClientState(GL2.GL_VERTEX_ARRAY);
gl.glActiveTexture(GL.GL_TEXTURE1);
gl.glBindTexture(GL.GL_TEXTURE_1D, 0);
gl.glActiveTexture(GL2.GL_TEXTURE1);
gl.glBindTexture(GL2.GL_TEXTURE_1D, 0);
gl.glDisable(GL.GL_BLEND);
gl.glDisable(GL2.GL_BLEND);
} finally {
target.popGLState();
}
}
protected void setupDataMapping(GL gl,
protected void setupDataMapping(GL2 gl,
int dataMappedTexBinding, int colorMappedTexBinding)
throws VizException {
if (dataMapping == null && colorMapParameters.getColorMap() != null) {

View file

@ -7,6 +7,7 @@ Bundle-Vendor: RAYTHEON
Require-Bundle: com.raytheon.viz.radar,
com.raytheon.viz.core.gl,
com.raytheon.uf.viz.core,
com.raytheon.uf.common.geospatial
com.raytheon.uf.common.geospatial,
com.jogamp.jogl;bundle-version="2.3.2"
Bundle-RequiredExecutionEnvironment: JavaSE-1.7
Bundle-ActivationPolicy: lazy

View file

@ -22,7 +22,7 @@ package com.raytheon.uf.viz.radar.gl;
import java.util.HashMap;
import java.util.Map;
import javax.media.opengl.GL;
import com.jogamp.opengl.GL2;
import org.geotools.coverage.grid.GeneralGridGeometry;
import org.geotools.coverage.grid.GridGeometry2D;
@ -53,6 +53,7 @@ import com.raytheon.viz.radar.rsc.image.IRadialMeshExtension.RadialMeshData;
* Oct 09, 2012 15018 kshresth
* Jun 24, 2014 3072 bsteffen Remove RadarRecord dependency for Radial
* Mesh
* Jan 19, 2023 srcarter@ucar Add MJ's change to GL2
* </pre>
*
* @author mschenke
@ -117,7 +118,7 @@ public class RadarRadialMesh extends AbstractGLMesh {
public RadarRadialMesh(RadialMeshData data,
GeneralGridGeometry targetGeometry, CacheKey cacheKey)
throws VizException {
super(GL.GL_TRIANGLE_STRIP);
super(GL2.GL_TRIANGLE_STRIP);
this.data = data;
this.cacheKey = cacheKey;
ProjectedCRS crs = CRSCache.getInstance().constructStereographic(

View file

@ -8,9 +8,9 @@ Require-Bundle: org.eclipse.core.runtime,
com.raytheon.uf.viz.core,
com.raytheon.uf.viz.truecolor,
com.raytheon.viz.core.gl,
javax.media.opengl,
com.raytheon.uf.common.util,
com.raytheon.uf.common.colormap
com.raytheon.uf.common.colormap,
com.jogamp.jogl;bundle-version="2.3.2"
Bundle-RequiredExecutionEnvironment: JavaSE-1.7
Bundle-ActivationPolicy: lazy
Bundle-ClassPath: com.raytheon.uf.viz.truecolor.gl.jar

View file

@ -22,7 +22,7 @@ package com.raytheon.uf.viz.truecolor.gl.extension;
import java.util.IdentityHashMap;
import java.util.Map;
import javax.media.opengl.GL;
import com.jogamp.opengl.GL2;
import com.raytheon.uf.common.colormap.prefs.ColorMapParameters;
import com.raytheon.uf.viz.core.DrawableImage;
@ -55,6 +55,7 @@ import com.raytheon.viz.core.gl.images.AbstractGLImage;
* Aug 6, 2012 mschenke Initial creation
* Nov 4, 2013 2492 mschenke Reworked to use GLSL Data mapping
* Jan 27, 2016 DR 17997 jgerth Support for gamma control
* Jan 19, 2023 srcarter@ucar Add in MJs changes for GL2
*
* </pre>
*
@ -154,7 +155,7 @@ public class GLTrueColorImagingExtension extends AbstractGLSLImagingExtension
renderingGamma = 1.0;
writeToImage = null;
trueColorImage.setImageParameters(parameters.keySet());
trueColorImage.bind(target.getGl());
trueColorImage.bind(target.getGl().getGL2());
return imageCoverage;
} else {
target.drawRasters(paintProps,
@ -163,13 +164,13 @@ public class GLTrueColorImagingExtension extends AbstractGLSLImagingExtension
return null;
}
} else if (image instanceof AbstractGLColormappedImage) {
GL gl = target.getGl();
GL2 gl = target.getGl().getGL2();
GLColormappedImageExtension.setupDataMapping(gl,
(AbstractGLColormappedImage) image, GL.GL_TEXTURE2,
GL.GL_TEXTURE3);
(AbstractGLColormappedImage) image, GL2.GL_TEXTURE2,
GL2.GL_TEXTURE3);
// bind on GL_TEXTURE1 as 0 is channel image
writeToImage.bind(gl, GL.GL_TEXTURE1);
writeToImage.bind(gl, GL2.GL_TEXTURE1);
return image;
}
return null;
@ -193,17 +194,17 @@ public class GLTrueColorImagingExtension extends AbstractGLSLImagingExtension
((GLTrueColorImage) image).getWrappedImage(),
(PixelCoverage) data));
} else if (writeToImage != null) {
GL gl = target.getGl();
GL2 gl = target.getGl().getGL2();
// Unbind the writeToImage from GL_TEXTURE1
gl.glActiveTexture(GL.GL_TEXTURE1);
gl.glActiveTexture(GL2.GL_TEXTURE1);
gl.glBindTexture(writeToImage.getTextureStorageType(), 0);
// Unbind the data mapped textures
gl.glActiveTexture(GL.GL_TEXTURE2);
gl.glBindTexture(GL.GL_TEXTURE_1D, 0);
gl.glActiveTexture(GL2.GL_TEXTURE2);
gl.glBindTexture(GL2.GL_TEXTURE_1D, 0);
gl.glActiveTexture(GL.GL_TEXTURE3);
gl.glBindTexture(GL.GL_TEXTURE_1D, 0);
gl.glActiveTexture(GL2.GL_TEXTURE3);
gl.glBindTexture(GL2.GL_TEXTURE_1D, 0);
}
}
@ -270,7 +271,7 @@ public class GLTrueColorImagingExtension extends AbstractGLSLImagingExtension
* (javax.media.opengl.GL)
*/
@Override
protected void enableBlending(GL gl) {
protected void enableBlending(GL2 gl) {
// Do not enable blending for this extension as it messes with alpha
// values between passes
}

View file

@ -61,10 +61,6 @@
id="com.raytheon.viz.radar.feature"
version="0.0.0"/>
<includes
id="com.raytheon.uf.viz.radarapps.feature"
version="0.0.0"/>
<includes
id="com.raytheon.viz.text.feature"
version="0.0.0"/>
@ -74,11 +70,15 @@
version="0.0.0"/>
<includes
id="com.raytheon.uf.viz.grid.feature"
id="com.raytheon.viz.dataaccess.feature"
version="0.0.0"/>
<includes
id="com.raytheon.viz.gfe.feature"
id="com.raytheon.viz.warnings.feature"
version="0.0.0"/>
<includes
id="com.raytheon.uf.viz.grid.feature"
version="0.0.0"/>
<includes
@ -101,10 +101,6 @@
id="com.raytheon.uf.viz.ncep.dataplugins.feature"
version="0.0.0"/>
<includes
id="com.raytheon.viz.hydro.feature"
version="0.0.0"/>
<includes
id="com.raytheon.uf.viz.d2d.xy.feature"
version="0.0.0"/>
@ -121,14 +117,6 @@
id="com.raytheon.uf.viz.d2d.nsharp.feature"
version="0.0.0"/>
<includes
id="com.raytheon.uf.viz.archive.feature"
version="0.0.0"/>
<includes
id="com.raytheon.uf.viz.ncep.perspective.feature"
version="0.0.0"/>
<includes
id="com.raytheon.uf.viz.thinclient.feature"
version="0.0.0"/>
@ -157,54 +145,10 @@
id="com.raytheon.uf.viz.acarssounding.feature"
version="0.0.0"/>
<includes
id="com.raytheon.viz.avnfps.feature"
version="0.0.0"/>
<includes
id="com.raytheon.uf.viz.dat.feature"
version="0.0.0"/>
<includes
id="com.raytheon.uf.viz.d2d.gfe.feature"
version="0.0.0"/>
<includes
id="com.raytheon.uf.viz.collaboration.feature"
version="0.0.0"/>
<includes
id="com.raytheon.uf.viz.gisdatastore.feature"
version="0.0.0"/>
<includes
id="com.raytheon.uf.viz.d2d.ui.awips.feature"
version="0.0.0"/>
<includes
id="com.raytheon.uf.viz.registry.feature"
version="0.0.0"/>
<includes
id="com.raytheon.uf.viz.aviation.advisory.feature"
version="0.0.0"/>
<includes
id="com.raytheon.uf.viz.datadelivery.feature"
version="0.0.0"/>
<includes
id="edu.wisc.ssec.cimss.viz.convectprob.feature"
version="0.0.0"/>
<includes
id="com.raytheon.uf.viz.d2d.damagepath.feature"
version="0.0.0"/>
<includes
id="gov.noaa.gsd.viz.hazards.feature"
version="0.0.0"/>
<includes
id="com.raytheon.uf.viz.ncep.npp.feature"
version="0.0.0"/>
@ -214,23 +158,19 @@
version="0.0.0"/>
<includes
id="com.raytheon.uf.viz.bmh.feature"
id="gov.noaa.gsd.viz.ensemble.feature"
version="0.0.0"/>
<includes
id="com.raytheon.uf.viz.server.edex.feature"
id="gov.noaa.nws.mdl.viz.boundaryTool.common.feature"
version="0.0.0"/>
<includes
id="gov.noaa.nws.ocp.uf.viz.gisdatastore.feature"
id="com.raytheon.uf.viz.d2d.gfe.feature"
version="0.0.0"/>
<includes
id="gov.noaa.nws.ocp.viz.firewx.feature"
version="0.0.0"/>
<includes
id="com.raytheon.viz.warnings.feature"
id="com.raytheon.viz.gfe.feature"
version="0.0.0"/>
<includes
@ -238,39 +178,15 @@
version="0.0.0"/>
<includes
id="com.raytheon.uf.viz.fssobs.feature"
id="edu.wisc.ssec.cimss.viz.probsevere.feature"
version="0.0.0"/>
<includes
id="com.raytheon.uf.viz.scan.feature"
version="0.0.0"/>
<includes
id="com.raytheon.uf.viz.ffmp.feature"
version="0.0.0"/>
<includes
id="gov.noaa.nws.ocp.viz.psh.feature"
version="0.0.0"/>
<includes
id="gov.noaa.nws.ocp.viz.climate.feature"
version="0.0.0"/>
<includes
id="gov.noaa.nws.ocp.viz.firewx.feature"
version="0.0.0"/>
<includes
id="gov.noaa.nws.sr.oun.viz.mping.feature"
version="0.0.0"/>
<includes
id="gov.noaa.nws.ost.viz.stq.feature"
id="com.raytheon.uf.viz.gisdatastore.feature"
version="0.0.0"/>
<requires>
<import feature="com.raytheon.uf.viz.application.feature" version="1.0.0.qualifier"/>
</requires>
</feature>
</feature>

View file

@ -9,5 +9,5 @@ Export-Package: com.raytheon.viz.product.awips;uses:="org.eclipse.jface.resource
Require-Bundle: org.eclipse.core.runtime,
org.eclipse.ui
Bundle-ActivationPolicy: lazy
Bundle-RequiredExecutionEnvironment: JavaSE-1.7
Bundle-RequiredExecutionEnvironment: JavaSE-1.8
Bundle-Localization: plugin

View file

@ -14,21 +14,21 @@
</configIni>
<launcherArgs>
<programArgs>-data @user.home/caveData -user @user.home/caveData -clean -consoleLog -alertviz
<programArgs>-data @user.home/Library/caveData -user @user.home/Library/caveData -clean -consoleLog
</programArgs>
<vmArgs>-Xmx6144M
-XX:+UseG1GC
-XstartOnFirstThread
-Dosgi.instance.area.readOnly=true
-Dorg.eclipse.update.reconcile=false
-Dorg.eclipse.ui/KEY_CONFIGURATION_ID=com.raytheon.viz.ui.cave.scheme
-Dlogback.configurationFile=logback-viz-core-developer.xml
-Dlogback.configurationFile=logback-viz-alertview.xml
-Dlogback.statusListenerClass=com.raytheon.uf.common.logback.UFLogbackInternalStatusListener
-Dthrift.stream.maxsize=320
-Dviz.memory.warn.threshold=10M
-Dorg.eclipse.swt.internal.gtk.cairoGraphics=false
-Dorg.eclipse.swt.internal.gtk.useCairo=false
-Dhttps.certificate.check=false
-Djava.library.path=/awips2/python/lib/python3.6/site-packages/jep
-XX:MaxDirectMemorySize=1G
-XX:+UnlockExperimentalVMOptions
-XX:G1HeapRegionSize=4M
@ -38,14 +38,14 @@
-XX:G1OldCSetRegionThresholdPercent=25
-XX:G1HeapWastePercent=5
-XX:SoftRefLRUPolicyMSPerMB=1000
-DvizVersion=DEVELOPMENT
-Djava.io.tmpdir=/awips2/tmp
-DcaveVersion=20.3.2
-DbuildSystem=macOS
</vmArgs>
<vmArgsWin>-Dfile.encoding=UTF-8
</vmArgsWin>
</launcherArgs>
<windowImages i16="/com.raytheon.viz.product.awips/icons/cave_16x16.png" i32="/com.raytheon.viz.product.awips/icons/cave_32x32.png" i48="/com.raytheon.viz.product.awips/icons/cave_48x48.png" i64="/com.raytheon.viz.product.awips/icons/cave_64x64.png" i128="/com.raytheon.viz.product.awips/icons/cave_128x128.png"/>
<windowImages/>
<splash
location="com.raytheon.viz.ui.personalities.awips"
@ -60,6 +60,7 @@
<vm>
<linux include="true">org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-11</linux>
<macos include="true">org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-11</macos>
<windows include="true">org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-11</windows>
</vm>
@ -78,4 +79,11 @@
<plugin id="org.eclipse.equinox.common" autoStart="true" startLevel="2" />
</configurations>
<preferencesInfo>
<targetfile overwrite="false"/>
</preferencesInfo>
<cssInfo>
</cssInfo>
</product>

View file

@ -53,10 +53,6 @@
name="startupForegroundColor"
value="000000">
</property>
<property
name="windowImages"
value="icons/cave_16x16.png,icons/cave_32x32.png,icons/cave_48x48.png,icons/cave_64x64.png,icons/cave_128x128.png">
</property>
<property
name="rendererFactoryUri"
value="bundleclass://com.raytheon.uf.viz.personalities.cave/com.raytheon.uf.viz.personalities.cave.presentation.VizRendererFactory">

View file

@ -79,6 +79,7 @@ import com.raytheon.uf.viz.core.rsc.interrogation.Interrogator;
* Nov 20, 2013 2492 bsteffen Update inspect to use Measure objects
* Oct 27, 2014 3681 bsteffen Implement Interrogatable
* Nov 28, 2017 5863 bsteffen Change dataTimes to a NavigableSet
* Jan 20, 2023 srcarter@ucar Enable E/W rendering on macOS
*
* </pre>
*
@ -146,23 +147,19 @@ public class SatBlendedResource extends
}
}
private List<DrawableImage> images = new ArrayList<>();
@Override
/*
* For the mac build, skip the use of the mosaicImage completely
* and simply draw the individual SatResource images.
* (non-Javadoc)
* @see com.raytheon.uf.viz.core.rsc.AbstractVizResource#paintInternal(com.raytheon.uf.viz.core.IGraphicsTarget, com.raytheon.uf.viz.core.drawables.PaintProperties)
*/
protected void paintInternal(IGraphicsTarget target,
PaintProperties paintProps) throws VizException {
ColorMapParameters params = getCapability(ColorMapCapability.class)
.getColorMapParameters();
// If first paint, initialize and wait for next paint
if (mosaicImage == null) {
initImage(target, paintProps, params);
} else if (mosaicImage.getWidth() != paintProps.getCanvasBounds().width
|| mosaicImage
.getHeight() != paintProps.getCanvasBounds().height) {
// If Window size changed, recreate the off screen buffer
disposeImage();
initImage(target, paintProps, params);
}
PaintProperties rscProps = new PaintProperties(paintProps);
List<DataTime> rscTimes = new ArrayList<>();
for (ResourcePair rp : getResourceList()) {
AbstractVizResource<?, ?> rsc = rp.getResource();
@ -175,7 +172,7 @@ public class SatBlendedResource extends
if (!extent.equals(lastExtent) || !rscTimes.equals(lastTimes)) {
lastTimes = rscTimes;
lastExtent = extent;
List<DrawableImage> images = new ArrayList<>();
List<DrawableImage> tempImages = new ArrayList<>();
for (ResourcePair rp : getResourceList()) {
AbstractVizResource<?, ?> rsc = rp.getResource();
@ -185,40 +182,32 @@ public class SatBlendedResource extends
SatResource sr = (SatResource) rsc;
DataTime timeForRsc = paintProps.getFramesInfo()
.getTimeForResource(rsc);
PaintProperties rscProps = new PaintProperties(paintProps);
rscProps.setDataTime(timeForRsc);
rscProps.setAlpha(1.0f);
List<DrawableImage> rscImages = sr.getImages(target,
rscProps);
for (DrawableImage di : rscImages) {
if (di != null && di.getImage() != null
&& di.getCoverage() != null
&& di.getCoverage().getMesh() != null) {
// If image is ready to go, add
images.add(di);
tempImages.add(di);
}
}
}
}
if(tempImages.size()>0){
images = new ArrayList(tempImages);
}
mosaicImage.setImagesToMosaic(
images.toArray(new DrawableImage[images.size()]));
mosaicImage.setImageExtent(extent);
Coordinate ul = new Coordinate(extent.getMinX(), extent.getMaxY());
Coordinate ur = new Coordinate(extent.getMaxX(), extent.getMaxY());
Coordinate lr = new Coordinate(extent.getMaxX(), extent.getMinY());
Coordinate ll = new Coordinate(extent.getMinX(), extent.getMinY());
imageCoverage = new PixelCoverage(ul, ur, lr, ll);
}
mosaicImage.setContrast(
getCapability(ImagingCapability.class).getContrast());
mosaicImage.setBrightness(
getCapability(ImagingCapability.class).getBrightness());
target.drawRaster(mosaicImage, imageCoverage, paintProps);
if(images.size()>0){
target.drawRasters(rscProps, images.toArray(new DrawableImage[0]));
}
}
private void initImage(IGraphicsTarget target, PaintProperties paintProps,