anonl / nvlist

Compare b9e203b ... +2 ... 6f7a235

Coverage Reach
core/src/main/java/nl/weeaboo/vn/impl/script/lib/TextLib.java core/src/main/java/nl/weeaboo/vn/impl/script/lib/ImageFxLib.java core/src/main/java/nl/weeaboo/vn/impl/script/lib/SaveLib.java core/src/main/java/nl/weeaboo/vn/impl/script/lib/ImageLib.java core/src/main/java/nl/weeaboo/vn/impl/script/lib/BasicTagHandler.java core/src/main/java/nl/weeaboo/vn/impl/script/lib/LuaLib.java core/src/main/java/nl/weeaboo/vn/impl/script/lib/GuiLib.java core/src/main/java/nl/weeaboo/vn/impl/script/lib/SystemLib.java core/src/main/java/nl/weeaboo/vn/impl/script/lib/CoreLib.java core/src/main/java/nl/weeaboo/vn/impl/script/lib/SeenLib.java core/src/main/java/nl/weeaboo/vn/impl/script/lib/SoundLib.java core/src/main/java/nl/weeaboo/vn/impl/script/lib/InterpolatorsLib.java core/src/main/java/nl/weeaboo/vn/impl/script/lib/TweenLib.java core/src/main/java/nl/weeaboo/vn/impl/script/lib/InputLib.java core/src/main/java/nl/weeaboo/vn/impl/script/lib/BasicScriptInitializer.java core/src/main/java/nl/weeaboo/vn/impl/script/lib/LogLib.java core/src/main/java/nl/weeaboo/vn/impl/script/lib/VideoLib.java core/src/main/java/nl/weeaboo/vn/impl/script/lvn/RuntimeTextParser.java core/src/main/java/nl/weeaboo/vn/impl/script/lvn/LvnParser4.java core/src/main/java/nl/weeaboo/vn/impl/script/lvn/LvnParser3.java core/src/main/java/nl/weeaboo/vn/impl/script/lvn/ParserUtil.java core/src/main/java/nl/weeaboo/vn/impl/script/lvn/TextParser.java core/src/main/java/nl/weeaboo/vn/impl/script/lvn/CompiledLvnFile.java core/src/main/java/nl/weeaboo/vn/impl/script/lvn/StyleStack.java core/src/main/java/nl/weeaboo/vn/impl/script/lvn/LvnMode.java core/src/main/java/nl/weeaboo/vn/impl/script/lvn/LvnLine.java core/src/main/java/nl/weeaboo/vn/impl/script/lvn/LvnParserFactory.java core/src/main/java/nl/weeaboo/vn/impl/script/lvn/AbstractLvnParser.java core/src/main/java/nl/weeaboo/vn/impl/script/lvn/LvnParseException.java core/src/main/java/nl/weeaboo/vn/impl/script/lua/LuaConsole.java core/src/main/java/nl/weeaboo/vn/impl/script/lua/LuaScriptLoader.java core/src/main/java/nl/weeaboo/vn/impl/script/lua/LuaConvertUtil.java core/src/main/java/nl/weeaboo/vn/impl/script/lua/LuaScriptUtil.java core/src/main/java/nl/weeaboo/vn/impl/script/lua/LuaScriptThread.java core/src/main/java/nl/weeaboo/vn/impl/script/lua/LuaScriptContext.java core/src/main/java/nl/weeaboo/vn/impl/script/lua/LuaPrefsAdapter.java core/src/main/java/nl/weeaboo/vn/impl/script/lua/LuaScriptEnv.java core/src/main/java/nl/weeaboo/vn/impl/script/lua/LuaStorage.java core/src/main/java/nl/weeaboo/vn/impl/script/lua/LuaScriptFunction.java core/src/main/java/nl/weeaboo/vn/impl/script/lua/LuaImpl.java core/src/main/java/nl/weeaboo/vn/impl/script/ScriptEventDispatcher.java core/src/main/java/nl/weeaboo/vn/impl/script/DefaultScriptExceptionHandler.java core/src/main/java/nl/weeaboo/vn/impl/scene/Transformable.java core/src/main/java/nl/weeaboo/vn/impl/scene/Button.java core/src/main/java/nl/weeaboo/vn/impl/scene/Screen.java core/src/main/java/nl/weeaboo/vn/impl/scene/ImageDrawable.java core/src/main/java/nl/weeaboo/vn/impl/scene/ButtonRenderer.java core/src/main/java/nl/weeaboo/vn/impl/scene/Panel.java core/src/main/java/nl/weeaboo/vn/impl/scene/TextDrawable.java core/src/main/java/nl/weeaboo/vn/impl/scene/Layer.java core/src/main/java/nl/weeaboo/vn/impl/scene/Viewport.java core/src/main/java/nl/weeaboo/vn/impl/scene/AxisAlignedContainer.java core/src/main/java/nl/weeaboo/vn/impl/scene/VisualElement.java core/src/main/java/nl/weeaboo/vn/impl/scene/AnimatedRenderable.java core/src/main/java/nl/weeaboo/vn/impl/scene/ScreenTextState.java core/src/main/java/nl/weeaboo/vn/impl/scene/BoundsHelper.java core/src/main/java/nl/weeaboo/vn/impl/scene/GridPanel.java core/src/main/java/nl/weeaboo/vn/impl/scene/ButtonModel.java core/src/main/java/nl/weeaboo/vn/impl/scene/SceneUtil.java core/src/main/java/nl/weeaboo/vn/impl/scene/AbstractRenderable.java core/src/main/java/nl/weeaboo/vn/impl/scene/ButtonImageLoader.java core/src/main/java/nl/weeaboo/vn/impl/scene/ChildCollection.java core/src/main/java/nl/weeaboo/vn/impl/scene/ColorHelper.java core/src/main/java/nl/weeaboo/vn/impl/scene/TextLayoutElem.java core/src/main/java/nl/weeaboo/vn/impl/scene/VisualOrdering.java core/src/main/java/nl/weeaboo/vn/impl/scene/NullRenderer.java core/src/main/java/nl/weeaboo/vn/impl/core/ResourceLoader.java core/src/main/java/nl/weeaboo/vn/impl/core/DestructibleElemList.java core/src/main/java/nl/weeaboo/vn/impl/core/Context.java core/src/main/java/nl/weeaboo/vn/impl/core/ContextManager.java core/src/main/java/nl/weeaboo/vn/impl/core/EnvironmentFactory.java core/src/main/java/nl/weeaboo/vn/impl/core/SystemModule.java core/src/main/java/nl/weeaboo/vn/impl/core/Novel.java core/src/main/java/nl/weeaboo/vn/impl/core/StaticEnvironment.java core/src/main/java/nl/weeaboo/vn/impl/core/NovelPrefsStore.java core/src/main/java/nl/weeaboo/vn/impl/core/AbstractEnvironment.java core/src/main/java/nl/weeaboo/vn/impl/core/SkipState.java core/src/main/java/nl/weeaboo/vn/impl/core/DefaultEnvironment.java core/src/main/java/nl/weeaboo/vn/impl/core/ResourceQualifiers.java core/src/main/java/nl/weeaboo/vn/impl/core/RenderEnv.java core/src/main/java/nl/weeaboo/vn/impl/core/SimulationRateLimiter.java core/src/main/java/nl/weeaboo/vn/impl/core/FileResourceLoader.java core/src/main/java/nl/weeaboo/vn/impl/core/AlignUtil.java core/src/main/java/nl/weeaboo/vn/impl/core/DurationLogger.java core/src/main/java/nl/weeaboo/vn/impl/core/LruSet.java core/src/main/java/nl/weeaboo/vn/impl/core/ResourceMetaDataCache.java core/src/main/java/nl/weeaboo/vn/impl/core/Indirect.java core/src/main/java/nl/weeaboo/vn/impl/core/ContextFactory.java core/src/main/java/nl/weeaboo/vn/impl/core/Animation.java core/src/main/java/nl/weeaboo/vn/impl/core/LUTInterpolator.java core/src/main/java/nl/weeaboo/vn/impl/core/StaticRef.java core/src/main/java/nl/weeaboo/vn/impl/core/SizeQualifier.java core/src/main/java/nl/weeaboo/vn/impl/core/BuiltinAssets.java core/src/main/java/nl/weeaboo/vn/impl/core/SystemEnv.java core/src/main/java/nl/weeaboo/vn/impl/core/TransientListenerSupport.java core/src/main/java/nl/weeaboo/vn/impl/core/ContextUtil.java core/src/main/java/nl/weeaboo/vn/impl/core/EngineVersion.java core/src/main/java/nl/weeaboo/vn/impl/core/AbstractModule.java core/src/main/java/nl/weeaboo/vn/impl/core/LoggerNotifier.java core/src/main/java/nl/weeaboo/vn/impl/core/Destructibles.java core/src/main/java/nl/weeaboo/vn/impl/core/UnsupportedVersionException.java core/src/main/java/nl/weeaboo/vn/impl/core/ContextArgs.java core/src/main/java/nl/weeaboo/vn/impl/image/desc/ImageDefinitionIO.java core/src/main/java/nl/weeaboo/vn/impl/image/desc/ImageDefinitionBuilder.java core/src/main/java/nl/weeaboo/vn/impl/image/desc/ImageDefinition.java core/src/main/java/nl/weeaboo/vn/impl/image/desc/ImageSubRect.java core/src/main/java/nl/weeaboo/vn/impl/image/desc/ImageDefinitionCache.java core/src/main/java/nl/weeaboo/vn/impl/image/desc/ImageDefinitionFileJson.java core/src/main/java/nl/weeaboo/vn/impl/image/ImageModule.java core/src/main/java/nl/weeaboo/vn/impl/image/TextureStore.java core/src/main/java/nl/weeaboo/vn/impl/image/BitmapTweenRenderer.java core/src/main/java/nl/weeaboo/vn/impl/image/NinePatchRenderer.java core/src/main/java/nl/weeaboo/vn/impl/image/NinePatch.java core/src/main/java/nl/weeaboo/vn/impl/image/GdxTexture.java core/src/main/java/nl/weeaboo/vn/impl/image/ResolutionFolderSelector.java core/src/main/java/nl/weeaboo/vn/impl/image/BitmapTweenConfig.java core/src/main/java/nl/weeaboo/vn/impl/image/TextureRenderer.java core/src/main/java/nl/weeaboo/vn/impl/image/ShaderStore.java core/src/main/java/nl/weeaboo/vn/impl/image/AbstractScreenshot.java core/src/main/java/nl/weeaboo/vn/impl/image/GdxTextureStore.java core/src/main/java/nl/weeaboo/vn/impl/image/PixelTextureData.java core/src/main/java/nl/weeaboo/vn/impl/image/NinePatchLoader.java core/src/main/java/nl/weeaboo/vn/impl/image/DecodingScreenshot.java core/src/main/java/nl/weeaboo/vn/impl/image/CrossFadeConfig.java core/src/main/java/nl/weeaboo/vn/impl/image/CrossFadeRenderer.java core/src/main/java/nl/weeaboo/vn/impl/image/ImageResourceLoader.java core/src/main/java/nl/weeaboo/vn/impl/image/VolatileTextureData.java core/src/main/java/nl/weeaboo/vn/impl/image/PixelTextureDataIO.java core/src/main/java/nl/weeaboo/vn/impl/image/AlignedTexture.java core/src/main/java/nl/weeaboo/vn/impl/image/PixmapDecodingScreenshot.java core/src/main/java/nl/weeaboo/vn/impl/image/EmptyScreenshot.java core/src/main/java/nl/weeaboo/vn/impl/image/WritableScreenshot.java core/src/main/java/nl/weeaboo/vn/impl/render/fx/BlurTask.java core/src/main/java/nl/weeaboo/vn/impl/render/fx/PingPongFbo.java core/src/main/java/nl/weeaboo/vn/impl/render/fx/ImageCompositeConfig.java core/src/main/java/nl/weeaboo/vn/impl/render/fx/ImageCompositeTask.java core/src/main/java/nl/weeaboo/vn/impl/render/fx/ColorMatrix.java core/src/main/java/nl/weeaboo/vn/impl/render/fx/ColorMatrixTask.java core/src/main/java/nl/weeaboo/vn/impl/render/GLScreenRenderer.java core/src/main/java/nl/weeaboo/vn/impl/render/TriangleGrid.java core/src/main/java/nl/weeaboo/vn/impl/render/BaseScreenRenderer.java core/src/main/java/nl/weeaboo/vn/impl/render/OffscreenRenderTask.java core/src/main/java/nl/weeaboo/vn/impl/render/FboBackBuffer.java core/src/main/java/nl/weeaboo/vn/impl/render/RenderStats.java core/src/main/java/nl/weeaboo/vn/impl/render/HybridBackBuffer.java core/src/main/java/nl/weeaboo/vn/impl/render/RenderLog.java core/src/main/java/nl/weeaboo/vn/impl/render/DrawBuffer.java core/src/main/java/nl/weeaboo/vn/impl/render/DrawTransform.java core/src/main/java/nl/weeaboo/vn/impl/render/DirectBackBuffer.java core/src/main/java/nl/weeaboo/vn/impl/render/ScreenshotBuffer.java core/src/main/java/nl/weeaboo/vn/impl/render/OffscreenRenderTaskBuffer.java core/src/main/java/nl/weeaboo/vn/impl/render/BaseRenderCommand.java core/src/main/java/nl/weeaboo/vn/impl/render/TextRenderCommand.java core/src/main/java/nl/weeaboo/vn/impl/render/DistortQuadCommand.java core/src/main/java/nl/weeaboo/vn/impl/render/LayerRenderCommand.java core/src/main/java/nl/weeaboo/vn/impl/render/GdxViewports.java core/src/main/java/nl/weeaboo/vn/impl/render/QuadRenderCommand.java core/src/main/java/nl/weeaboo/vn/impl/render/RenderCommand.java core/src/main/java/nl/weeaboo/vn/impl/render/AsyncRenderTask.java core/src/main/java/nl/weeaboo/vn/impl/render/CustomRenderCommand.java core/src/main/java/nl/weeaboo/vn/impl/render/ScreenshotRenderCommand.java core/src/main/java/nl/weeaboo/vn/impl/save/SaveModule.java core/src/main/java/nl/weeaboo/vn/impl/save/Storage.java core/src/main/java/nl/weeaboo/vn/impl/save/StorageIO.java core/src/main/java/nl/weeaboo/vn/impl/save/UnmodifiableStorage.java core/src/main/java/nl/weeaboo/vn/impl/save/SaveFileHeaderJson.java core/src/main/java/nl/weeaboo/vn/impl/save/SharedGlobalsSavePlugin.java core/src/main/java/nl/weeaboo/vn/impl/save/SeenLogSavePlugin.java core/src/main/java/nl/weeaboo/vn/impl/save/AnalyticsSavePlugin.java core/src/main/java/nl/weeaboo/vn/impl/save/PlayTimerSavePlugin.java core/src/main/java/nl/weeaboo/vn/impl/save/SaveFileIO.java core/src/main/java/nl/weeaboo/vn/impl/save/SaveFileHeader.java core/src/main/java/nl/weeaboo/vn/impl/save/SaveParams.java core/src/main/java/nl/weeaboo/vn/impl/save/ThumbnailInfoJson.java core/src/main/java/nl/weeaboo/vn/impl/save/SaveFile.java core/src/main/java/nl/weeaboo/vn/impl/save/JsonUtil.java core/src/main/java/nl/weeaboo/vn/impl/save/SaveFileConstants.java core/src/main/java/nl/weeaboo/vn/impl/sound/desc/SoundDefinitionIO.java core/src/main/java/nl/weeaboo/vn/impl/sound/desc/SoundDefinition.java core/src/main/java/nl/weeaboo/vn/impl/sound/desc/SoundDefinitionBuilder.java core/src/main/java/nl/weeaboo/vn/impl/sound/desc/SoundDefinitionCache.java core/src/main/java/nl/weeaboo/vn/impl/sound/desc/SoundDefinitionFileJson.java core/src/main/java/nl/weeaboo/vn/impl/sound/SoundController.java core/src/main/java/nl/weeaboo/vn/impl/sound/NativeAudio.java core/src/main/java/nl/weeaboo/vn/impl/sound/SoundModule.java core/src/main/java/nl/weeaboo/vn/impl/sound/Sound.java core/src/main/java/nl/weeaboo/vn/impl/sound/AbstractSound.java core/src/main/java/nl/weeaboo/vn/impl/sound/GdxMusicStore.java core/src/main/java/nl/weeaboo/vn/impl/sound/NativeAudioFactory.java core/src/main/java/nl/weeaboo/vn/impl/sound/SoundResourceLoader.java core/src/main/java/nl/weeaboo/vn/impl/stats/SeenLog.java core/src/main/java/nl/weeaboo/vn/impl/stats/Analytics.java core/src/main/java/nl/weeaboo/vn/impl/stats/FileLine.java core/src/main/java/nl/weeaboo/vn/impl/stats/PlayTimer.java core/src/main/java/nl/weeaboo/vn/impl/stats/StatsModule.java core/src/main/java/nl/weeaboo/vn/impl/stats/ResourceLoadLog.java core/src/main/java/nl/weeaboo/vn/impl/stats/AnalyticsPreloader.java core/src/main/java/nl/weeaboo/vn/impl/text/TextRenderer.java core/src/main/java/nl/weeaboo/vn/impl/text/GdxFontStore.java core/src/main/java/nl/weeaboo/vn/impl/text/TextLog.java core/src/main/java/nl/weeaboo/vn/impl/text/LoadingFontStore.java core/src/main/java/nl/weeaboo/vn/impl/text/TextModule.java core/src/main/java/nl/weeaboo/vn/impl/text/FontResourceLoader.java core/src/main/java/nl/weeaboo/vn/impl/text/TextUtil.java core/src/main/java/nl/weeaboo/vn/impl/layout/GridLayout.java core/src/main/java/nl/weeaboo/vn/impl/layout/LayoutElem.java core/src/main/java/nl/weeaboo/vn/impl/layout/DummyLayoutElem.java core/src/main/java/nl/weeaboo/vn/impl/layout/LayoutGroup.java core/src/main/java/nl/weeaboo/vn/impl/layout/DummyLayoutElemPeer.java core/src/main/java/nl/weeaboo/vn/impl/layout/NullLayout.java core/src/main/java/nl/weeaboo/vn/impl/input/NativeInput.java core/src/main/java/nl/weeaboo/vn/impl/input/Input.java core/src/main/java/nl/weeaboo/vn/impl/input/InputConfig.java core/src/main/java/nl/weeaboo/vn/impl/input/ButtonState.java core/src/main/java/nl/weeaboo/vn/impl/input/InputAccumulator.java core/src/main/java/nl/weeaboo/vn/impl/video/NativeVideo.java core/src/main/java/nl/weeaboo/vn/impl/video/VideoModule.java core/src/main/java/nl/weeaboo/vn/impl/video/Video.java core/src/main/java/nl/weeaboo/vn/impl/video/GdxVideoPlayerFactory.java core/src/main/java/nl/weeaboo/vn/impl/video/NativeVideoFactory.java core/src/main/java/nl/weeaboo/vn/impl/video/VideoResourceLoader.java core/src/main/java/nl/weeaboo/vn/impl/debug/Osd.java core/src/main/java/nl/weeaboo/vn/impl/debug/DebugControls.java core/src/main/java/nl/weeaboo/vn/impl/debug/PerformanceMetrics.java core/src/main/java/nl/weeaboo/vn/impl/debug/ScreenshotTaker.java core/src/main/java/nl/weeaboo/vn/impl/Launcher.java core/src/main/java/nl/weeaboo/vn/impl/signal/SignalSupport.java core/src/main/java/nl/weeaboo/vn/impl/signal/SignalUtil.java core/src/main/java/nl/weeaboo/vn/impl/InitConfig.java core/src/main/java/nl/weeaboo/vn/gdx/graphics/jng/JngReader.java core/src/main/java/nl/weeaboo/vn/gdx/graphics/jng/JngWriter.java core/src/main/java/nl/weeaboo/vn/gdx/graphics/jng/JngHeader.java core/src/main/java/nl/weeaboo/vn/gdx/graphics/jng/PngHelper.java core/src/main/java/nl/weeaboo/vn/gdx/graphics/jng/JngInputUtil.java core/src/main/java/nl/weeaboo/vn/gdx/graphics/jng/JngColorType.java core/src/main/java/nl/weeaboo/vn/gdx/graphics/jng/JngAlphaType.java core/src/main/java/nl/weeaboo/vn/gdx/graphics/jng/PngColorType.java core/src/main/java/nl/weeaboo/vn/gdx/graphics/jng/JngParseException.java core/src/main/java/nl/weeaboo/vn/gdx/graphics/jng/JpegHelper.java core/src/main/java/nl/weeaboo/vn/gdx/graphics/jng/JngConstants.java core/src/main/java/nl/weeaboo/vn/gdx/graphics/jng/JngReaderOpts.java core/src/main/java/nl/weeaboo/vn/gdx/graphics/PremultUtil.java core/src/main/java/nl/weeaboo/vn/gdx/graphics/PixmapUtil.java core/src/main/java/nl/weeaboo/vn/gdx/graphics/GdxBitmapTweenRenderer.java core/src/main/java/nl/weeaboo/vn/gdx/graphics/blur/ImageBlur.java core/src/main/java/nl/weeaboo/vn/gdx/graphics/PremultFileTextureData.java core/src/main/java/nl/weeaboo/vn/gdx/graphics/GLMatrixStack.java core/src/main/java/nl/weeaboo/vn/gdx/graphics/GdxCrossFadeRenderer.java core/src/main/java/nl/weeaboo/vn/gdx/graphics/PremultTextureLoader.java core/src/main/java/nl/weeaboo/vn/gdx/graphics/GdxTextureUtil.java core/src/main/java/nl/weeaboo/vn/gdx/graphics/ColorTextureLoader.java core/src/main/java/nl/weeaboo/vn/gdx/graphics/GLBlendMode.java core/src/main/java/nl/weeaboo/vn/gdx/graphics/GdxShaderUtil.java core/src/main/java/nl/weeaboo/vn/gdx/graphics/GdxScreenshotUtil.java core/src/main/java/nl/weeaboo/vn/gdx/graphics/PixmapLoader.java core/src/main/java/nl/weeaboo/vn/gdx/graphics/GdxViewportUtil.java core/src/main/java/nl/weeaboo/vn/gdx/res/DesktopGdxFileSystem.java core/src/main/java/nl/weeaboo/vn/gdx/res/AssetManagerResourceStore.java core/src/main/java/nl/weeaboo/vn/gdx/res/NativeMemoryTracker.java core/src/main/java/nl/weeaboo/vn/gdx/res/GdxFileSystem.java core/src/main/java/nl/weeaboo/vn/gdx/res/GdxCleaner.java core/src/main/java/nl/weeaboo/vn/gdx/res/InternalGdxFileSystem.java core/src/main/java/nl/weeaboo/vn/gdx/res/LoadingResourceStore.java core/src/main/java/nl/weeaboo/vn/gdx/res/ResourceStoreCache.java core/src/main/java/nl/weeaboo/vn/gdx/res/NonFileGdxFileHandle.java core/src/main/java/nl/weeaboo/vn/gdx/res/TransformedResource.java core/src/main/java/nl/weeaboo/vn/gdx/res/ResourceStoreCacheConfig.java core/src/main/java/nl/weeaboo/vn/gdx/res/ResourceStore.java core/src/main/java/nl/weeaboo/vn/gdx/res/FileResource.java core/src/main/java/nl/weeaboo/vn/gdx/res/WritableGdxFileSystem.java core/src/main/java/nl/weeaboo/vn/gdx/res/RefWeigher.java core/src/main/java/nl/weeaboo/vn/gdx/res/Ref.java core/src/main/java/nl/weeaboo/vn/gdx/res/GdxAssetManager.java core/src/main/java/nl/weeaboo/vn/gdx/res/DisposeUtil.java core/src/main/java/nl/weeaboo/vn/gdx/res/NullResource.java core/src/main/java/nl/weeaboo/vn/gdx/res/DefaultWeigher.java core/src/main/java/nl/weeaboo/vn/gdx/res/AbstractResource.java core/src/main/java/nl/weeaboo/vn/gdx/input/GdxInputAdapter.java core/src/main/java/nl/weeaboo/vn/gdx/scene2d/Scene2dEnv.java core/src/main/java/nl/weeaboo/vn/gdx/scene2d/Scene2dUtil.java api/src/main/java/nl/weeaboo/vn/math/AbstractMatrix.java api/src/main/java/nl/weeaboo/vn/math/MutableMatrix.java api/src/main/java/nl/weeaboo/vn/math/Polygon.java api/src/main/java/nl/weeaboo/vn/math/Vec2.java api/src/main/java/nl/weeaboo/vn/math/Matrix.java api/src/main/java/nl/weeaboo/vn/core/ResourceId.java api/src/main/java/nl/weeaboo/vn/core/DistortGrid.java api/src/main/java/nl/weeaboo/vn/core/Direction.java api/src/main/java/nl/weeaboo/vn/core/ResourceLoadInfo.java api/src/main/java/nl/weeaboo/vn/core/Duration.java api/src/main/java/nl/weeaboo/vn/core/NovelPrefs.java api/src/main/java/nl/weeaboo/vn/core/MediaType.java api/src/main/java/nl/weeaboo/vn/core/SkipMode.java api/src/main/java/nl/weeaboo/vn/core/ContextListener.java api/src/main/java/nl/weeaboo/vn/core/InitException.java api/src/main/java/nl/weeaboo/vn/core/Interpolators.java api/src/main/java/nl/weeaboo/vn/core/BlendMode.java api/src/main/java/nl/weeaboo/vn/core/VerticalAlign.java api/src/main/java/nl/weeaboo/vn/core/IUpdateable.java api/src/main/java/nl/weeaboo/vn/input/KeyCode.java api/src/main/java/nl/weeaboo/vn/input/VKey.java api/src/main/java/nl/weeaboo/vn/input/KeyCombination.java api/src/main/java/nl/weeaboo/vn/image/desc/GLScaleFilter.java api/src/main/java/nl/weeaboo/vn/image/desc/GLTilingMode.java api/src/main/java/nl/weeaboo/vn/image/Color.java api/src/main/java/nl/weeaboo/vn/image/INinePatch.java api/src/main/java/nl/weeaboo/vn/image/ITexture.java api/src/main/java/nl/weeaboo/vn/save/StoragePrimitive.java api/src/main/java/nl/weeaboo/vn/save/ThumbnailInfo.java api/src/main/java/nl/weeaboo/vn/save/SaveFormatException.java api/src/main/java/nl/weeaboo/vn/layout/LayoutSize.java api/src/main/java/nl/weeaboo/vn/layout/GridCellConstraints.java api/src/main/java/nl/weeaboo/vn/layout/LayoutSizeType.java api/src/main/java/nl/weeaboo/vn/render/RenderUtil.java api/src/main/java/nl/weeaboo/vn/render/DisplayMode.java api/src/main/java/nl/weeaboo/vn/signal/AbstractSignal.java api/src/main/java/nl/weeaboo/vn/signal/PrefsChangeSignal.java api/src/main/java/nl/weeaboo/vn/signal/RenderEnvChangeSignal.java api/src/main/java/nl/weeaboo/vn/signal/TickSignal.java api/src/main/java/nl/weeaboo/vn/scene/ButtonViewState.java api/src/main/java/nl/weeaboo/vn/scene/signal/VisualElementDestroySignal.java api/src/main/java/nl/weeaboo/vn/sound/SoundType.java api/src/main/java/nl/weeaboo/vn/script/ScriptException.java buildtools/src/main/java/nl/weeaboo/vn/buildtools/optimizer/image/encoder/JngEncoder.java buildtools/src/main/java/nl/weeaboo/vn/buildtools/optimizer/image/encoder/DesktopJpegEncoder.java buildtools/src/main/java/nl/weeaboo/vn/buildtools/optimizer/image/encoder/JngEncoderParams.java buildtools/src/main/java/nl/weeaboo/vn/buildtools/optimizer/image/encoder/DesktopPngEncoder.java buildtools/src/main/java/nl/weeaboo/vn/buildtools/optimizer/image/encoder/JpegEncoderParams.java buildtools/src/main/java/nl/weeaboo/vn/buildtools/optimizer/image/encoder/PngEncoderParams.java buildtools/src/main/java/nl/weeaboo/vn/buildtools/optimizer/image/ImageOptimizer.java buildtools/src/main/java/nl/weeaboo/vn/buildtools/optimizer/image/ImageResizer.java buildtools/src/main/java/nl/weeaboo/vn/buildtools/optimizer/image/BufferedImageUtil.java buildtools/src/main/java/nl/weeaboo/vn/buildtools/optimizer/image/EncodedImage.java buildtools/src/main/java/nl/weeaboo/vn/buildtools/optimizer/image/ImageWithDef.java buildtools/src/main/java/nl/weeaboo/vn/buildtools/optimizer/image/ImageResizerConfig.java buildtools/src/main/java/nl/weeaboo/vn/buildtools/optimizer/image/ImageEncoderConfig.java buildtools/src/main/java/nl/weeaboo/vn/buildtools/optimizer/image/decoder/DefaultImageDecoder.java buildtools/src/main/java/nl/weeaboo/vn/buildtools/optimizer/sound/SoundOptimizer.java buildtools/src/main/java/nl/weeaboo/vn/buildtools/optimizer/sound/encoder/FfmpegSoundEncoder.java buildtools/src/main/java/nl/weeaboo/vn/buildtools/optimizer/sound/encoder/NoOpSoundEncoder.java buildtools/src/main/java/nl/weeaboo/vn/buildtools/optimizer/sound/EncodedSound.java buildtools/src/main/java/nl/weeaboo/vn/buildtools/optimizer/sound/SoundWithDef.java buildtools/src/main/java/nl/weeaboo/vn/buildtools/optimizer/video/VideoOptimizer.java buildtools/src/main/java/nl/weeaboo/vn/buildtools/optimizer/video/encoder/FfmpegVideoEncoder.java buildtools/src/main/java/nl/weeaboo/vn/buildtools/optimizer/video/encoder/NoOpVideoEncoder.java buildtools/src/main/java/nl/weeaboo/vn/buildtools/optimizer/video/EncodedVideo.java buildtools/src/main/java/nl/weeaboo/vn/buildtools/optimizer/FfmpegEncoder.java buildtools/src/main/java/nl/weeaboo/vn/buildtools/optimizer/OptimizerContext.java buildtools/src/main/java/nl/weeaboo/vn/buildtools/optimizer/OptimizerConfigJson.java buildtools/src/main/java/nl/weeaboo/vn/buildtools/optimizer/UnoptimizedFileCopier.java buildtools/src/main/java/nl/weeaboo/vn/buildtools/optimizer/ResourceOptimizerLauncher.java buildtools/src/main/java/nl/weeaboo/vn/buildtools/optimizer/OptimizerFileSet.java buildtools/src/main/java/nl/weeaboo/vn/buildtools/optimizer/ResourceOptimizer.java buildtools/src/main/java/nl/weeaboo/vn/buildtools/optimizer/ParallelExecutor.java buildtools/src/main/java/nl/weeaboo/vn/buildtools/optimizer/IParallelExecutor.java buildtools/src/main/java/nl/weeaboo/vn/buildtools/optimizer/MainOptimizerConfig.java buildtools/src/main/java/nl/weeaboo/vn/buildtools/project/NvlistProjectConnection.java buildtools/src/main/java/nl/weeaboo/vn/buildtools/project/ProjectFolderConfig.java buildtools/src/main/java/nl/weeaboo/vn/buildtools/project/TemplateProjectGenerator.java buildtools/src/main/java/nl/weeaboo/vn/buildtools/project/BuildProperties.java buildtools/src/main/java/nl/weeaboo/vn/buildtools/file/EncodedResource.java buildtools/src/main/java/nl/weeaboo/vn/buildtools/file/FilePathPattern.java buildtools/src/main/java/nl/weeaboo/vn/buildtools/file/TempFileProvider.java buildtools/src/main/java/nl/weeaboo/vn/buildtools/file/OptimizerFileUtil.java buildtools/src/main/java/nl/weeaboo/vn/buildtools/task/AbstractTask.java buildtools/src/main/java/nl/weeaboo/vn/buildtools/task/TaskResultType.java buildtools/src/main/java/nl/weeaboo/vn/buildtools/task/IProgressListener.java buildtools/src/main/java/nl/weeaboo/vn/buildtools/archive/NvlArchiver.java buildtools/src/main/java/nl/weeaboo/vn/buildtools/gdx/HeadlessGdx.java

No flags found

Use flags to group coverage reports by test type, project and/or folders.
Then setup custom commit statuses and notifications for each flag.

e.g., #unittest #integration

#production #enterprise

#frontend #backend

Learn more about Codecov Flags here.

Showing 5 of 20 files from the diff.

@@ -5,45 +5,47 @@
Loading
5 5
import java.io.IOException;
6 6
import java.io.InputStreamReader;
7 7
import java.nio.charset.StandardCharsets;
8 +
import java.util.ArrayList;
8 9
import java.util.Arrays;
9 10
import java.util.List;
10 11
11 12
import org.slf4j.Logger;
12 -
import org.slf4j.LoggerFactory;
13 13
14 14
import com.google.common.base.Joiner;
15 15
import com.google.common.collect.Lists;
16 16
import com.google.common.io.Files;
17 17
18 18
import nl.weeaboo.common.Checks;
19 +
import nl.weeaboo.common.StringUtil;
19 20
import nl.weeaboo.vn.buildtools.file.EncodedResource;
20 21
import nl.weeaboo.vn.buildtools.file.IEncodedResource;
21 22
import nl.weeaboo.vn.buildtools.file.ITempFileProvider;
22 -
import nl.weeaboo.vn.buildtools.optimizer.video.encoder.FfmpegVideoEncoder;
23 23
24 24
/**
25 25
 * Resource encoder using ffmpeg.
26 26
 */
27 27
public abstract class FfmpegEncoder {
28 28
29 -
    private static final Logger LOG = LoggerFactory.getLogger(FfmpegVideoEncoder.class);
30 -
29 +
    private final Logger logger;
31 30
    private final ITempFileProvider tempFileProvider;
32 31
33 -
    protected FfmpegEncoder(ITempFileProvider tempFileProvider) {
32 +
    private String program = "ffmpeg";
33 +
34 +
    protected FfmpegEncoder(Logger logger, ITempFileProvider tempFileProvider) {
35 +
        this.logger = Checks.checkNotNull(logger);
34 36
        this.tempFileProvider = Checks.checkNotNull(tempFileProvider);
35 37
    }
36 38
37 39
    /**
38 40
     * @return {@code true} if a usable ffmpeg executable was found, allowing this encoder to be used.
39 41
     */
40 -
    public static boolean isAvailable() {
42 +
    public boolean isAvailable() {
41 43
        try {
42 -
            doRunProcess(Arrays.asList("ffmpeg", "-h"));
43 -
            LOG.debug("ffmpeg is available");
44 +
            doRunProcess(program, Arrays.asList("-h"));
45 +
            logger.debug("ffmpeg is available");
44 46
            return true;
45 47
        } catch (IOException e) {
46 -
            LOG.info("ffmpeg not available: {}", e.toString());
48 +
            logger.info("ffmpeg not available: {}", e.toString());
47 49
            return false;
48 50
        }
49 51
    }
@@ -57,7 +59,7 @@
Loading
57 59
            // Copy sound to temp file (input)
58 60
            Files.write(resource.readBytes(), inputFile);
59 61
60 -
            runProcess(getCommandLineArgs(inputFile, outputFile));
62 +
            runProcess(program, getCommandLineArgs(inputFile, outputFile));
61 63
            resultAudioData = EncodedResource.fromTempFile(outputFile);
62 64
        } finally {
63 65
            inputFile.delete();
@@ -66,13 +68,18 @@
Loading
66 68
        return resultAudioData;
67 69
    }
68 70
69 -
    protected void runProcess(List<String> command) throws IOException {
70 -
        doRunProcess(command);
71 +
    protected void runProcess(String program, List<String> args) throws IOException {
72 +
        doRunProcess(program, args);
71 73
    }
72 74
73 -
    private static void doRunProcess(List<String> command) throws IOException {
75 +
    private void doRunProcess(String program, List<String> args) throws IOException {
76 +
        List<String> command = new ArrayList<>();
77 +
        command.add(program);
78 +
        command.addAll(args);
74 79
        String commandString = Joiner.on(' ').join(command);
75 80
81 +
        logger.trace("Starting process: {}", command);
82 +
76 83
        Process process = new ProcessBuilder()
77 84
                .command(command)
78 85
                .redirectErrorStream(true)
@@ -85,42 +92,45 @@
Loading
85 92
            while (process.isAlive()) {
86 93
                String line = in.readLine();
87 94
88 -
                LOG.trace(line);
95 +
                logger.trace(line);
89 96
90 97
                output.append(line);
91 98
                output.append('\n');
92 99
            }
93 100
94 101
            int exitCode = process.waitFor();
95 102
            if (exitCode != 0) {
96 -
                throw new IOException("Process terminated with an error: " + exitCode
97 -
                        + "\ncommand: " + commandString
98 -
                        + "\noutput: " + output);
103 +
                throw new IOException(StringUtil.formatRoot(
104 +
                        "Process terminated with an error: %s\ncommand: %s\noutput: %s",
105 +
                        exitCode, commandString, output));
99 106
            }
100 107
        } catch (InterruptedException e) {
101 108
            throw new IOException("Process interrupted", e);
102 109
        }
103 110
    }
104 111
105 112
    private List<String> getCommandLineArgs(File inputFile, File outputFile) {
106 -
        List<String> command = Lists.newArrayList();
107 -
        command.add("ffmpeg");
113 +
        List<String> args = Lists.newArrayList();
108 114
109 115
        // Input file
110 -
        command.add("-i");
111 -
        command.add(inputFile.getAbsolutePath());
116 +
        args.add("-i");
117 +
        args.add(inputFile.getAbsolutePath());
112 118
113 119
        // File format (container)
114 -
        command.add("-f");
115 -
        command.add(getFileFormat());
120 +
        args.add("-f");
121 +
        args.add(getFileFormat());
116 122
117 123
        // Codec
118 -
        command.addAll(getCodecArgs());
124 +
        args.addAll(getCodecArgs());
119 125
120 126
        // Output file
121 -
        command.add("-y"); // Overwrite output file (is usually an empty temp file)
122 -
        command.add(outputFile.getAbsolutePath());
123 -
        return command;
127 +
        args.add("-y"); // Overwrite output file (is usually an empty temp file)
128 +
        args.add(outputFile.getAbsolutePath());
129 +
        return args;
130 +
    }
131 +
132 +
    public void setProgram(String program) {
133 +
        this.program = program;
124 134
    }
125 135
126 136
    protected abstract List<String> getCodecArgs();

@@ -54,8 +54,7 @@
Loading
54 54
    // --- State during optimization ---
55 55
    /** Definition per (optimized) sound file */
56 56
    private final Map<FilePath, SoundDefinition> optimizedDefs = Maps.newHashMap();
57 -
    private boolean ffmpegAvailable;
58 -
57 +
    private EAvailable ffmpegAvailable;
59 58
60 59
    public SoundOptimizer(IOptimizerContext context) {
61 60
        executor = context.getExecutor();
@@ -66,12 +65,14 @@
Loading
66 65
        NvlistProjectConnection project = context.getProject();
67 66
        resFileSystem = project.getResFileSystem();
68 67
        soundDefCache = new SoundDefinitionCache(resFileSystem);
68 +
69 +
        resetState();
69 70
    }
70 71
71 72
    private void resetState() {
72 73
        optimizedDefs.clear();
73 74
74 -
        ffmpegAvailable = FfmpegSoundEncoder.isAvailable();
75 +
        ffmpegAvailable = EAvailable.UNKNOWN;
75 76
    }
76 77
77 78
    /**
@@ -162,16 +163,23 @@
Loading
162 163
    }
163 164
164 165
    private ISoundEncoder createEncoder() {
165 -
        if (ffmpegAvailable) {
166 -
            return new FfmpegSoundEncoder(tempFileProvider);
167 -
        } else {
168 -
            return new NoOpSoundEncoder();
166 +
        if (ffmpegAvailable != EAvailable.NO) {
167 +
            FfmpegSoundEncoder encoder = new FfmpegSoundEncoder(tempFileProvider);
168 +
            if (ffmpegAvailable == EAvailable.YES || encoder.isAvailable()) {
169 +
                ffmpegAvailable = EAvailable.YES;
170 +
                return encoder;
171 +
            }
169 172
        }
173 +
        ffmpegAvailable = EAvailable.NO;
174 +
        return new NoOpSoundEncoder();
170 175
    }
171 176
172 177
    private FilePath getOutputPath(FilePath inputPath, String outputFilename) {
173 178
        FilePath folder = inputPath.getParent();
174 179
        return folder.resolve(outputFilename);
175 180
    }
176 181
182 +
    private enum EAvailable {
183 +
        YES, NO, UNKNOWN
184 +
    }
177 185
}

@@ -4,6 +4,11 @@
Loading
4 4
import java.util.Arrays;
5 5
import java.util.List;
6 6
7 +
import org.slf4j.Logger;
8 +
import org.slf4j.LoggerFactory;
9 +
10 +
import com.google.common.annotations.VisibleForTesting;
11 +
7 12
import nl.weeaboo.io.Filenames;
8 13
import nl.weeaboo.vn.buildtools.file.IEncodedResource;
9 14
import nl.weeaboo.vn.buildtools.file.ITempFileProvider;
@@ -15,14 +20,21 @@
Loading
15 20
 */
16 21
public final class FfmpegVideoEncoder extends FfmpegEncoder implements IVideoEncoder {
17 22
23 +
    private static final Logger LOG = LoggerFactory.getLogger(FfmpegVideoEncoder.class);
24 +
18 25
    private static final String OUTPUT_EXT = "webm";
19 26
    private static final String VIDEO_CODEC = "libvpx";
20 27
    private static final String VIDEO_QUALITY = "3";
21 28
    private static final String AUDIO_CODEC = "libvorbis";
22 29
    private static final String AUDIO_QUALITY = "3";
23 30
24 31
    public FfmpegVideoEncoder(ITempFileProvider tempFileProvider) {
25 -
        super(tempFileProvider);
32 +
        this(LOG, tempFileProvider);
33 +
    }
34 +
35 +
    @VisibleForTesting
36 +
    FfmpegVideoEncoder(Logger logger, ITempFileProvider tempFileProvider) {
37 +
        super(logger, tempFileProvider);
26 38
    }
27 39
28 40
    @Override

@@ -4,6 +4,11 @@
Loading
4 4
import java.util.Arrays;
5 5
import java.util.List;
6 6
7 +
import org.slf4j.Logger;
8 +
import org.slf4j.LoggerFactory;
9 +
10 +
import com.google.common.annotations.VisibleForTesting;
11 +
7 12
import nl.weeaboo.io.Filenames;
8 13
import nl.weeaboo.vn.buildtools.file.IEncodedResource;
9 14
import nl.weeaboo.vn.buildtools.file.ITempFileProvider;
@@ -17,12 +22,19 @@
Loading
17 22
 */
18 23
public final class FfmpegSoundEncoder extends FfmpegEncoder implements ISoundEncoder {
19 24
25 +
    private static final Logger LOG = LoggerFactory.getLogger(FfmpegSoundEncoder.class);
26 +
20 27
    private static final String OUTPUT_EXT = "ogg";
21 28
    private static final String AUDIO_CODEC = "libvorbis";
22 29
    private static final String AUDIO_QUALITY = "3";
23 30
24 31
    public FfmpegSoundEncoder(ITempFileProvider tempFileProvider) {
25 -
        super(tempFileProvider);
32 +
        this(LOG, tempFileProvider);
33 +
    }
34 +
35 +
    @VisibleForTesting
36 +
    FfmpegSoundEncoder(Logger logger, ITempFileProvider tempFileProvider) {
37 +
        super(logger, tempFileProvider);
26 38
    }
27 39
28 40
    @Override

@@ -19,7 +19,6 @@
Loading
19 19
import nl.weeaboo.vn.buildtools.optimizer.IOptimizerFileSet;
20 20
import nl.weeaboo.vn.buildtools.optimizer.IParallelExecutor;
21 21
import nl.weeaboo.vn.buildtools.optimizer.MainOptimizerConfig;
22 -
import nl.weeaboo.vn.buildtools.optimizer.sound.encoder.FfmpegSoundEncoder;
23 22
import nl.weeaboo.vn.buildtools.optimizer.video.encoder.FfmpegVideoEncoder;
24 23
import nl.weeaboo.vn.buildtools.optimizer.video.encoder.IVideoEncoder;
25 24
import nl.weeaboo.vn.buildtools.optimizer.video.encoder.NoOpVideoEncoder;
@@ -41,8 +40,7 @@
Loading
41 40
    private final IFileSystem resFileSystem;
42 41
43 42
    // --- State during optimization ---
44 -
    private boolean ffmpegAvailable;
45 -
43 +
    private EAvailable ffmpegAvailable;
46 44
47 45
    public VideoOptimizer(IOptimizerContext context) {
48 46
        executor = context.getExecutor();
@@ -52,10 +50,12 @@
Loading
52 50
53 51
        NvlistProjectConnection project = context.getProject();
54 52
        resFileSystem = project.getResFileSystem();
53 +
54 +
        resetState();
55 55
    }
56 56
57 57
    private void resetState() {
58 -
        ffmpegAvailable = FfmpegSoundEncoder.isAvailable();
58 +
        ffmpegAvailable = EAvailable.UNKNOWN;
59 59
    }
60 60
61 61
    /**
@@ -118,16 +118,23 @@
Loading
118 118
    }
119 119
120 120
    private IVideoEncoder createEncoder() {
121 -
        if (ffmpegAvailable) {
122 -
            return new FfmpegVideoEncoder(tempFileProvider);
123 -
        } else {
124 -
            return new NoOpVideoEncoder();
121 +
        if (ffmpegAvailable != EAvailable.NO) {
122 +
            FfmpegVideoEncoder encoder = new FfmpegVideoEncoder(tempFileProvider);
123 +
            if (ffmpegAvailable == EAvailable.YES || encoder.isAvailable()) {
124 +
                ffmpegAvailable = EAvailable.YES;
125 +
                return encoder;
126 +
            }
125 127
        }
128 +
        ffmpegAvailable = EAvailable.NO;
129 +
        return new NoOpVideoEncoder();
126 130
    }
127 131
128 132
    private FilePath getOutputPath(FilePath inputPath, String outputFilename) {
129 133
        FilePath folder = inputPath.getParent();
130 134
        return folder.resolve(outputFilename);
131 135
    }
132 136
137 +
    private enum EAvailable {
138 +
        YES, NO, UNKNOWN
139 +
    }
133 140
}

Learn more Showing 7 files with coverage changes found.

Changes in core/src/main/java/nl/weeaboo/vn/gdx/res/NativeMemoryTracker.java
-10
+10
Loading file...
Changes in core/src/main/java/nl/weeaboo/vn/impl/image/GdxTextureStore.java
-5
+5
Loading file...
Changes in core/src/main/java/nl/weeaboo/vn/impl/debug/PerformanceMetrics.java
-1
+1
Loading file...
Changes in buildtools/src/main/java/nl/weeaboo/vn/buildtools/optimizer/FfmpegEncoder.java
-3
+3
Loading file...
Changes in buildtools/src/main/java/nl/weeaboo/vn/buildtools/file/EncodedResource.java
-2
+2
Loading file...
Changes in buildtools/src/main/java/nl/weeaboo/vn/buildtools/optimizer/video/encoder/FfmpegVideoEncoder.java
-5
+5
Loading file...
Changes in buildtools/src/main/java/nl/weeaboo/vn/buildtools/optimizer/sound/encoder/FfmpegSoundEncoder.java
-7
+7
Loading file...
Files Complexity Coverage
api/src/main/java/nl/weeaboo/vn 91.53% 96.76%
buildtools/src/main/java/nl/weeaboo/vn/buildtools +8.00% 66.34% +4.37% 74.43%
core/src/main/java/nl/weeaboo/vn 81.94% -0.16% 86.14%
Project Totals (369 files) 81.78% 86.16%
Loading