Examples of bouncer types include the Bouncy Mushroom, which bounces Pikmin and leaders somewhere, and the Pikmin geyser, which throws Olimar to a different spot.
To create a new type of bouncer, please follow the making object types tutorial.
Overview
A bouncer just stands there waiting for other objects to land on top of it. It has information on what kinds of objects can ride on it, as well as what animation they'll be doing. The target destination is specified by whatever object is linked to it, so it's recommended to link it to a dummy object to serve as a target.
Bouncer objects are hardcoded to not do anything, except detect when a Pikmin or leader is above them, and throw them away to the designated spot.
Properties
Besides the global object type properties, a bouncer type has the following properties.
Mandatory
riders
: A list of what types of riders are allowed. This list is separated by space, and the possible values arepikmin
orleaders
.
Recommended
riding_pose
: What sort of animation the riders switch to when being bounced away. Possible values arestopped
,somersault
. Defaults to stopped.
Optional
None.
Animations
A bouncer type needs to have the following animations:
idling
: Idling.bouncing
: Plays when an object gets on top of it.
Script
Bouncer types have hardcoded scripts, so the only thing you can do is enhance them.
Some script variables control special behavior, like the bouncer's starting team. To know which ones exist, you can go to the area editor, select a bouncer, and read the tooltip of each variable.


Introduction¶
ACHR.cu is a CUDA implementation of the sampling algorithm Artificially Centered Hit-and-Run (ACHR) for the analysis of metabolic models. Metabolic models are mathematical representations of biological organisms forumlated as linear programs. Popular metabolic modeling tools like Flux Balance Analysis (FBA) assume an objective function that the organism optimizes for. When it is not obvious which objective function the system optimizes for, unbiased analysis like sampling is a tool of choice. Sampling is an MCMC method that explores the solution space or the set of possible phenotypes under the linear constraints.
But as metabolic models of biological systems become more complex, the sampling of the solution space of a metabolic model becomes unfeasible due to the large analysis time. In order to address the large analysis time for large metabolic models, I implemented a GP-GPU version of ACHR that reduces the sampling time by at least a factor of 10x for the sampling per se and a factor of 100x for the generation of warmup points which is the preprocessing step. Here you can find tutorials on the installation and analysis of ACHR.cu sampling software.
General approach and parallel construct¶
Sampling metabolic models is a two-step process:
1. Generation of warmup points. The generation of p warmup points is basically solving the linear program with randomly generated coefficient vector c twice as a maximization problem and a minimization problem. The use of a randomly genrated coefficient vector makes the solution of linear program extremely slow and subject to numerical instability. Particularly in parallel setting, some cores might get the linear programs that require more time to solve while others get the easier ones, which can result in an overall slower analysis time. In a previous work, I addressed a similar question through dynamic load balancing. Briefly, if a worker gets a high computational load then the idle workers can take up some of that load. Using a dynamically load balanced generation of warmup points software, the speed up achieved is at least a 100x.
2. The actual sampling using the warmup points as a starting point. With the warmup points at hand, we can proceed to the actual sampling using a cuda implementation. The architecture uses the modern specs of Nvidia cards to perform nested parallelism. In fact, there will be p random starting points at the same time (first level of parallelism) that will each launch n random chains to sample the solution space. This procedure is repeated a number of times taking each time a new starting point and saving the sampled points. In particular each chain will sample the local space close to its starting point, which could improve the convergence of the algorithm and avoid the blocking of the sampling chain in the corners of the flux cone. Additionally, the provided computational power will allow the user to sample a greater number of points which can greatly help the assessement of the uniform representation of the solution space and address the sampling of large metabolic models.


Make Safe For Work
Have you ever wanted to share a NSFW image with a coworker, but in a more stealthy way? Then this is the tool for you. Just paste the URL of whatever NSWF image you've found below, press 'Make it Safe' and you'll get a safe URL you can use to share the image.
Afterwards, you (or the recipient of the link) can see a glimpse of the image while pressing the 'show' button. If you don't want to be holding the button to see the image, click the 'Lock show' checkbox to change the way the button works.


Here is a list of things that i like
Music
Movies
here is a list of my favorite food
Butter
White sugar
Brown sugar
Eggs
Vanilla
Flour
Baking soda
Salt
Chocolate chips
Oatmeal
Coconut


This week at DBC we started learning JavaScript. Just as we we're just getting up on our two legs, starting to walk and run for the first time in ruby, we regressed back into the crawling stages of JavaScript. Though similar to ruby in its OOP ways, JavaScript is different than ruby in many ways. One of the most powerful tools in JavaScript is the object. We're going to dive into that now.
I'm going to be brutally honest for a moment. I avoid using hashes in ruby at all costs. I know, not a good practice, but I find array's to be simpler, more concise, and I can keep track of the data easier in my head. So when I was introduced to the object in JavaScript, I thought to myself, "oh crap, more of this." But with more familiarity I have learned to enjoy the object more than the hash in ruby, and here's why.
An object contains a property and a property value. This can be compared to a hash in that it has a key(property) and value(property value). The difference (in what I gather thus far) is that objects are naturally a little easier to manipulate data.
In ruby, I think of arrays and hashes as containers that hold information. If you want to use a method, you have to use a ".method" on the container, but the two seem like two separate pieces. I'll create an object and a hash side by side to see the difference
(javascript object) var menu = { appetizer: "salad", entree: "steak", desert: "chocalate mousse", cocktails: "margarita", } console.log(menu.entree); // =>steak menu.entree = "salmon" console.log(menu.entree); // => salmon menu.soup = "seafood gumbo" console.log(menu.soup); // => seafood gumbo // or....... console.log(menu["appetizer"]); // =>salad ----------------- (ruby hash) menu = { "appetizer" =>"salad", "entree" => "steak", "desert" => "chocalate mousse", "cocktails" => "margarita", } puts menu["appetizer"] # => salad menu["appetizer"] = "ceviche" puts menu["appetizer"] # => ceviche
Both have some real similarities, but I especially love that you can access the property value of an object with dot notation. It reminds me more of an "attr_reader" for a ruby class method. You can also change the value of a property the way an attr_writer works. Here we changed our menu to more of a seafood special, changing our entree to "salmon. You can also add new property's to the object with dot notation, for example we added a new property "soup" and gave it the property value of "seafood gumbo" with a simple dot notation. I find this a little easier to work with than the bracket notation in ruby.
Alright, here's a little challenge. Say you want to write a program that changes your menu every week. Look up to the object above, and notice that we have one property value in each property. Why not make it more? Objects can contain arrays and property values, so lets add some more dishes to our menu.
Now lets say we want to randomly select a dish each week. We can use this little piece of code to select a random element in an array: array[Math.floor(Math.random()*menu.desert.length)]
This means, for array
at index number[?] create a random number, multiply that by the length of the array, and round down to the nearest whole number, and give us back the element at that index number. Let's call this function four times and see what this month's menu will look like:
var menu = { appetizer: ['salad', 'ceviche', 'chips and guac'], entree: ['steak', 'salmon', 'chicken breast', ], desert: ['apple pie', 'chocolate mousse', 'creme brule'], cocktails: ['gin and tonic', 'margarita', 'tom collins'] } function changeMenu() { menu.entree = menu.entree[Math.floor(Math.random()*menu.entree.length)] menu.appetizer = menu.appetizer[Math.floor(Math.random()*menu.appetizer.length)] menu.desert = menu.desert[Math.floor(Math.random()*menu.desert.length)] menu.cocktails = menu.cocktails[Math.floor(Math.random()*menu.cocktails.length)] } // Week 1 Menu: changeMenu(); console.log(menu); // => { appetizer: 'chips and guac', // entree: 'steak', // desert: 'apple pie', // cocktails: 'gin and tonic' } // Week 2 Menu: changeMenu(); console.log(menu); // { appetizer: 'salad', // entree: 'salmon', // desert: 'apple pie', // cocktails: 'margarita' } // Week 3 Menu: changeMenu(); console.log(menu); // => { appetizer: 'ceviche', // entree: 'chicken breast', // desert: 'chocolate mousse', // cocktails: 'margarita' } // Week 4 Menu: changeMenu(); console.log(menu); // => { appetizer: 'ceviche', // entree: 'steak', // desert: 'creme brule', // cocktails: 'margarita' }
Pretty cool. I have found it a lot easier to manipulate objects than hashes. In a way object are like a hash and a class combined? - maybe that's a reach, but you get the idea...


import
statements.
Regular import
statements are unneeded when the classes and packages that are imported are not used in the source file.
Similarly for static
imports when the static
fields and methods that are imported are not used in the source file.
Example:
import java.util.ArrayList; public class Example { public static void main(String[] args) { System.out.println("Hello World!"); } }
After the quick fix is applied the result looks like:
public class Example { public static void main(String[] args) { System.out.println("Hello World!"); } }


Demystifying Normalizing Flows for Variational Inference
6.435 Bayesian Modeling and Inference, Spring 2022
We provide a visual guide for understanding how normalizing flows are used
for variational inference and how they compare to other variational
inference methods.
[paper]
Comparing Methods of Neural Net Compression
6.867 Machine Learning, Fall 2020
We compare the effectiveness of knowledge distillation, weight-based
pruning, and the lottery ticket hypothesis on preserving model accuracy
while reducing model size.
[slides]
Inference of Candidate Qualities through Political Stances
6.804 Computational Cognitive Science, Fall 2019
We study how Bayesian inference and linear regression models can predict how
personal qualities and traits are inferred from limited information about a
political candidate's stances.
[paper]


Join us for Angular Mix
October 10th-12th, 2018
Learn one way to build applications with Angular and reuse your code and abilities to build apps for any deployment target. For web, mobile web, native mobile and native desktop.
Achieve the maximum speed possible on the Web Platform today, and take it further, via Web Workers and server-side rendering.
Angular puts you in control over scalability. Meet huge data requirements by building data models on RxJS, Immutable.js or another push-model.
Build features quickly with simple, declarative templates. Extend the template language with your own components and use a wide array of existing components. Get immediate Angular-specific help and feedback with nearly every IDE and editor. All this comes together so you can focus on building amazing apps rather than trying to make the code work.
From prototype through global deployment, Angular delivers the productivity and scalable infrastructure that supports Google's largest applications.


I’ve been looking at setting a blog for quick and easy posts for a while now. As ever, I wanted to get my hands dirty with some coding rather than using some out of the box option where I have no control.
Rails seemed to be the perfect fit for the task, autogenerating the framework I needed allowing me to focus on styling and hosting. Unfortunately after going to Rails 5 I spent far to long getting active record to work, meaning I was digging around version numbers embedded in the code. So it was time to move on to something faster.
Up steps Jekyll which is static framework that allows you to create blogs using markdown (awesome!) and host it through GitHub (even better!!) It has no DB, so I needed to do some digging around various gems and themes as I definitely need features like tags.
Update
So I tried a few themes but the tagging proved a bit painful (it’s been a while since I’ve used a computer in anger). So there was a slight struggle until I found this basic framework setup (linked to a blog from So Simple Theme). Over the next few days I’ll extend it using things like Coffee and Sass.
I just need to extend the framework so other people can contribute (you never know, they might want to)


ProTool by BimmerGeeks puts the power of a BMW specialist in the palm of your hand. Transform your android device into one of the most powerful scan-tools available for BMW.
ProTool is a feature-rich, easy to use Android app that turns even the most novice of users into BMW experts. Complex software and special equipment are no longer necessary. Save time & frustration and let the app do the work for you.
1 Series: E81, E82, E87, E88 3 Series: E90, E91, E92, E93 5/6 Series: E60, E61, E63, E64 7 Series: E65, E66, E67 X Series: E70, E71, E72, E84 Z Series: E89 Mini: R55, R56, R57, R58, R59, R60, R61
All the above vehicles that support coding as well as future models such as Fxx, Gxx and Ixx series.
ProTool is feature heavy. The features are broken down and split between 3 licenses: Master, Coding & Diagnostics. Diagnostic- $85 Covers everything in the app except coding. Exceptions to this rule are battery & injector coding. View Diagnostic Features Coding- $75 Gives a full on replacement to Ncs-Expert. If a feature exist in an ecu, ProTool can access it and code it. View Coding Features Master- $145 A combo of both license at a discounted rate.


A B C D E F G H I J K L M N O P Q R S T U V W
All Classes All Packages
All Classes All Packages
All Classes All Packages
A
- Accelerated - com.jme.system.awt.PaintMode
- actualContext - Variable in class com.jme.system.awt.AwtPanelsContext
- addImage(byte[]) - Method in class com.jme.app.state.MjpegFileWriter
- addImage(Image) - Method in class com.jme.app.state.MjpegFileWriter
- addImage(Image, float) - Method in class com.jme.app.state.MjpegFileWriter
- addNotify() - Method in class com.jme.system.awt.AwtPanel
- addToExecute(Runnable) - Method in class com.jme.system.AWTTaskExecutor
-
Add the given
runnable
to the list of planned executions. - ALWAYS - com.jme.system.AWTFrameProcessor.TransferMode
- app - Variable in class com.jme.app.AppletHarness
- appCfg - Variable in class com.jme.app.AppletHarness
- appClass - Variable in class com.jme.app.AppletHarness
- AppletHarness - Class in com.jme.app
- AppletHarness() - Constructor for class com.jme.app.AppletHarness
- application - Variable in class com.jme.input.AWTInput
-
The
JMonkey application
that provide the context. - APPROVE_SELECTION - Static variable in class com.jme.app.SettingsDialog
- appToApplet - Static variable in class com.jme.app.AppletHarness
- assetCfg - Variable in class com.jme.app.AppletHarness
- associateUTCTime(String) - Method in class jme3tools.navigation.Position
-
Add a reference time for this position - useful for historical tracking
- attachTo(boolean, ViewPort...) - Method in class com.jme.system.awt.AwtPanel
- AWT_RGBA4444 - Static variable in class com.jme.texture.plugins.AWTLoader
- AWT_RGBA5551 - Static variable in class com.jme.texture.plugins.AWTLoader
- AWTComponentAppState - Class in com.jme.app.state
-
An app state dedicated to the rendering of a JMonkey application within an AWT component.
- AWTComponentAppState(Component) - Constructor for class com.jme.app.state.AWTComponentAppState
-
Create a new app state dedicated to the rendering of a JMonkey application within the given AWT
component
. - AWTComponentRenderer - Class in com.jme.system
-
This class enables to update graphics of an AWT component with the result of JMonkey 3D rendering.
- AWTComponentRenderer(Component, int, int, AWTFrameProcessor.TransferMode) - Constructor for class com.jme.system.AWTComponentRenderer
-
Create a new component renderer attached to the given
destination
. - AWTComponentRenderer(Component, AWTFrameProcessor.TransferMode, FrameBuffer, int, int) - Constructor for class com.jme.system.AWTComponentRenderer
-
Create a new component renderer attached to the given
destination
. - AWTContext - Class in com.jme.system
-
A JMonkey
context
that is dedicated to AWT component rendering. - AWTContext() - Constructor for class com.jme.system.AWTContext
- AWTFrameProcessor - Class in com.jme.system
-
A frame processor that enables to render JMonkey frame buffer onto an AWT component.
- AWTFrameProcessor() - Constructor for class com.jme.system.AWTFrameProcessor
- AWTFrameProcessor.TransferMode - Enum in com.jme.system
- AWTInput - Class in com.jme.input
-
The implementation of the
Input
dedicated to AWTcomponent
. - AWTInput(AWTContext) - Constructor for class com.jme.input.AWTInput
- AwtKeyInput - Class in com.jme.input.awt
-
AwtKeyInput
- AwtKeyInput() - Constructor for class com.jme.input.awt.AwtKeyInput
- AWTKeyInput - Class in com.jme.input
-
The implementation of the
KeyInput
dedicated to AWTcomponent
. - AWTKeyInput(AWTContext) - Constructor for class com.jme.input.AWTKeyInput
- AWTLoader - Class in com.jme.texture.plugins
- AWTLoader() - Constructor for class com.jme.texture.plugins.AWTLoader
- AwtMouseInput - Class in com.jme.input.awt
-
AwtMouseInput
- AwtMouseInput() - Constructor for class com.jme.input.awt.AwtMouseInput
- AWTMouseInput - Class in com.jme.input
-
The implementation of the
MouseInput
dedicated to AWTcomponent
. - AWTMouseInput(AWTContext) - Constructor for class com.jme.input.AWTMouseInput
- AwtPanel - Class in com.jme.system.awt
- AwtPanel(PaintMode) - Constructor for class com.jme.system.awt.AwtPanel
- AwtPanel(PaintMode, boolean) - Constructor for class com.jme.system.awt.AwtPanel
- AwtPanelsContext - Class in com.jme.system.awt
- AwtPanelsContext() - Constructor for class com.jme.system.awt.AwtPanelsContext
- AWTTaskExecutor - Class in com.jme.system
-
This class is dedicated to the queuing of AWT related tasks and their execution.
B
- backgroundContext - Variable in class com.jme.system.AWTContext
-
The background context.
- bind(Component) - Method in class com.jme.input.AWTInput
- bind(Component) - Method in class com.jme.input.AWTKeyInput
- bind(Component) - Method in class com.jme.input.AWTMouseInput
- bind(Component, Application) - Method in class com.jme.system.AWTFrameProcessor
-
Bind this processor.
- bind(Component, Application, ViewPort) - Method in class com.jme.system.AWTFrameProcessor
-
Bind this processor.
- bind(Component, Application, ViewPort, boolean) - Method in class com.jme.system.AWTFrameProcessor
-
Bind this processor.
- bindDestination(Application, Component) - Method in class com.jme.system.AWTFrameProcessor
-
Bind this processor.
- bindListeners() - Method in class com.jme.system.AWTFrameProcessor
- boolArrToStr(boolean[]) - Method in class jme3tools.navigation.StringUtil
- byteBuffer - Variable in class com.jme.system.AWTComponentRenderer
-
The byte buffer.
C
- calculateMinutesPerPixel(double) - Method in class jme3tools.navigation.MapModel2D
-
Calculates the number of minutes per pixels using a given map width in longitude
- calculateMinutesPerWorldUnit(double) - Method in class jme3tools.navigation.MapModel3D
-
Calculates the number of minutes per pixels using a given map width in longitude.
- CANCEL_SELECTION - Static variable in class com.jme.app.SettingsDialog
- canvas - Variable in class com.jme.app.AppletHarness
- checkVisibilityState() - Method in class com.jme.system.awt.AwtPanel
- cleanup() - Method in class com.jme.app.state.AWTComponentAppState
- cleanup() - Method in class com.jme.app.state.VideoRecorderAppState
- cleanup() - Method in class com.jme.system.awt.AwtPanel
- cleanup() - Method in class com.jme.system.AWTFrameProcessor
- com.jme.app - package com.jme.app
- com.jme.app.state - package com.jme.app.state
- com.jme.cursors.plugins - package com.jme.cursors.plugins
- com.jme.input - package com.jme.input
- com.jme.input.awt - package com.jme.input.awt
- com.jme.system - package com.jme.system
- com.jme.system.awt - package com.jme.system.awt
- com.jme.texture.plugins - package com.jme.texture.plugins
- com.jme.util - package com.jme.util
- component - Variable in class com.jme.input.AWTInput
-
The input node.
- computeAngle(Position, Position) - Static method in class jme3tools.navigation.NavCalculator
-
Computes the angle between two points.
- computeBearing(Position, Position) - Static method in class jme3tools.navigation.NavCalculator
-
Computes the bearing between two points.
- computeDLat(double, double) - Static method in class jme3tools.navigation.NavCalculator
-
Compute the difference in latitude between two positions
- computeDLong(double, double) - Static method in class jme3tools.navigation.NavCalculator
-
Computes the difference in Longitude between two positions and assigns the correct sign -westwards travel, + eastwards travel
- computeDMPClarkeSpheroid(double, double) - Static method in class jme3tools.navigation.NavCalculator
-
Computes the difference in meridional parts for two latitudes in minutes (based on Clark 1880 spheroid)
- computeDMPWGS84Spheroid(float, float) - Static method in class jme3tools.navigation.NavCalculator
-
Computes the difference in meridional parts for a perfect sphere between two degrees of latitude
- computeHeading(Position, Position) - Static method in class jme3tools.navigation.NavCalculator
- computeLongDiff(double, double) - Static method in class jme3tools.navigation.NavCalculator
-
Computes the difference in Longitude between two positions and assigns the correct sign -westwards travel, + eastwards travel
- computePosition(Position, double, double) - Static method in class jme3tools.navigation.NavCalculator
-
Computes the coordinate of position B relative to an offset given a distance and an angle.
- context - Variable in class com.jme.app.AppletHarness
- context - Variable in class com.jme.input.AWTInput
-
The context.
- convert(Image, boolean, boolean, int) - Static method in class jme3tools.converters.ImageToAwt
- convert(Image, Image) - Static method in class jme3tools.converters.ImageToAwt
-
Convert the image from the given format to the output format.
- convert(BufferedImage, Image.Format, ByteBuffer) - Static method in class jme3tools.converters.ImageToAwt
-
Convert an AWT image to jME image.
- convertAwtKey(int) - Static method in class com.jme.input.awt.AwtKeyInput
-
convertAwtKey
converts AWT key codes to KeyInput key codes. - convertCourse(float, Position, Position) - Static method in class jme3tools.navigation.NavCalculator
-
Converts a course from cardinal XddY to ddd notation
- convertJmeCode(int) - Static method in class com.jme.input.awt.AwtKeyInput
-
convertJmeCode
converts KeyInput key codes to AWT key codes. - convertScreenShot(ByteBuffer, BufferedImage) - Static method in class com.jme.util.Screenshots
-
Flips the image along the Y axis and converts BGRA to ABGR
- convertScreenShot2(IntBuffer, BufferedImage) - Static method in class com.jme.util.Screenshots
- Coordinate - Class in jme3tools.navigation
-
Coordinate class.
- Coordinate(double, int) - Constructor for class jme3tools.navigation.Coordinate
-
Constructor
- Coordinate(int, float, int, int) - Constructor for class jme3tools.navigation.Coordinate
-
Constructor
- Coordinate(String) - Constructor for class jme3tools.navigation.Coordinate
-
This constructor takes a coordinate in the ALRS formats i.e 38∞31.64'N for lat, and 28∞19.12'W for long Note: ALRS positions are occasionally written with the decimal minutes apostrophe in the 'wrong' place and with a non CP1252 compliant decimal character.
- copyFrameBufferToImage(RenderManager) - Method in class com.jme.system.AWTComponentRenderer
-
Copy the JMonkey frame buffer that has been rendered by the JMonkey engine and schedule the rendering of the component.
- create(boolean) - Method in class com.jme.system.awt.AwtPanelsContext
- create(boolean) - Method in class com.jme.system.AWTContext
- createBackgroundContext() - Method in class com.jme.system.AWTContext
- createData(Image, boolean) - Static method in class jme3tools.converters.ImageToAwt
- createFrameTransfer(FrameBuffer, int, int) - Method in class com.jme.system.AWTFrameProcessor
-
Create a new frame transfer.
- createPanel(PaintMode) - Method in class com.jme.system.awt.AwtPanelsContext
- createPanel(PaintMode, boolean) - Method in class com.jme.system.awt.AwtPanelsContext
- createSettings() - Method in class com.jme.system.AWTContext
- CursorLoader - Class in com.jme.cursors.plugins
-
Created Jun 5, 2012 9:45:58 AM
- CursorLoader() - Constructor for class com.jme.cursors.plugins.CursorLoader
D
- decVal() - Method in class jme3tools.navigation.Coordinate
-
Returns the coordinate's decimal value
- DEFAULT_MAP_WIDTH_LONGITUDE - Static variable in class jme3tools.navigation.MapModel2D
- DEFAULT_MAP_WIDTH_LONGITUDE - Static variable in class jme3tools.navigation.MapModel3D
- DEFAULT_TITLE - Static variable in class com.jme.system.ErrorDialog
- DEGPRECISION - Static variable in class jme3tools.navigation.Coordinate
- destination - Variable in class com.jme.system.AWTFrameProcessor
-
The destination of jMe frames.
- destroy() - Method in class com.jme.app.AppletHarness
- destroy() - Method in class com.jme.input.awt.AwtKeyInput
- destroy() - Method in class com.jme.input.awt.AwtMouseInput
- destroy() - Method in class com.jme.input.AWTInput
- destroy(boolean) - Method in class com.jme.system.awt.AwtPanelsContext
- destroy(boolean) - Method in class com.jme.system.AWTContext
- dispose() - Method in class com.jme.system.AWTComponentRenderer
-
Dispose this renderer.
- DISPOSED_STATE - Static variable in class com.jme.system.AWTComponentRenderer
-
The constant DISPOSED_STATE.
- DISPOSING_STATE - Static variable in class com.jme.system.AWTComponentRenderer
-
The constant DISPOSING_STATE.
- drawFrameInThread() - Method in class com.jme.system.awt.AwtPanel
E
- E - Static variable in class jme3tools.navigation.Coordinate
- ErrorDialog - Class in com.jme.system
-
Simple dialog for diplaying error messages,
- ErrorDialog(String) - Constructor for class com.jme.system.ErrorDialog
- ErrorDialog(String, String) - Constructor for class com.jme.system.ErrorDialog
-
Create a new Dialog with a title and a message.
- execute() - Method in class com.jme.system.AWTTaskExecutor
-
Execute all the tasks that are waiting.
- EXECUTOR - Static variable in class com.jme.input.AWTInput
- extractNativeLibraries(Platform, File) - Static method in class com.jme.system.NativeLibraryLoader
- ExtractNativeLibraries - Class in com.jme.system
-
Allows extraction of platform specific binaries from classpath via build systems.
- ExtractNativeLibraries() - Constructor for class com.jme.system.ExtractNativeLibraries
- extractNativeLibrary(Platform, String, File) - Static method in class com.jme.system.NativeLibraryLoader
F
- finishAVI() - Method in class com.jme.app.state.MjpegFileWriter
- frameBuffer - Variable in class com.jme.system.AWTComponentRenderer
-
The Frame buffer.
- frameByteBuffer - Variable in class com.jme.system.AWTComponentRenderer
-
The Frame byte buffer.
- frameCount - Variable in class com.jme.system.AWTComponentRenderer
-
How many frames need to write else.
- frameState - Variable in class com.jme.system.AWTComponentRenderer
-
The Frame state.
G
- GC - Static variable in class jme3tools.navigation.NavCalculator
- GCSailing - Class in jme3tools.navigation
-
A utility class to package up a great circle sailing.
- GCSailing(int[], float[]) - Constructor for class jme3tools.navigation.GCSailing
- generateMipMaps(Image) - Static method in class jme3tools.converters.MipMapGenerator
- getApplet(Application) - Static method in class com.jme.app.AppletHarness
- getApplication() - Method in class com.jme.system.AWTFrameProcessor
-
Gets the application.
- getButtonCount() - Method in class com.jme.input.awt.AwtMouseInput
- getButtonCount() - Method in class com.jme.input.AWTMouseInput
- getCameraAngle() - Method in class com.jme.system.AWTFrameProcessor
-
Gets camera angle.
- getCanvas() - Method in interface com.jme.system.JmeCanvasContext
- getCentre() - Method in class jme3tools.navigation.MapModel2D
-
Returns the
Position
centre of the map - getCentre() - Method in class jme3tools.navigation.MapModel3D
-
Returns the
Position
centre of the map. - getCentreWu() - Method in class jme3tools.navigation.MapModel3D
-
Returns the WU (x,y,z) centre of the map.
- getComponent() - Method in class com.jme.app.state.AWTComponentAppState
-
Get the AWT component that is used as rendering output.
- getCourse() - Method in class jme3tools.navigation.RLSailing
- getCourses() - Method in class jme3tools.navigation.GCSailing
- getDestination() - Method in class com.jme.system.AWTFrameProcessor
-
Gets the current destination.
- getDestinationHeight() - Method in class com.jme.system.AWTFrameProcessor
-
Gets destination height.
- getDestinationWidth() - Method in class com.jme.system.AWTFrameProcessor
-
Gets destination width.
- getDistance() - Method in class jme3tools.navigation.NavCalculator
-
Getter method for the distance between two points
- getDistancesNM() - Method in class jme3tools.navigation.GCSailing
- getDistNM() - Method in class jme3tools.navigation.RLSailing
- getExtractionFolder() - Static method in class com.jme.system.NativeLibraryLoader
-
Returns the folder where native libraries will be extracted.
- getFile() - Method in class com.jme.app.state.VideoRecorderAppState
- getFrameRate() - Method in class com.jme.app.state.VideoRecorderAppState.IsoTimer
- getFrameTransfer() - Method in class com.jme.system.AWTFrameProcessor
-
Gets the frame transfer.
- getGraphics(Component) - Method in class com.jme.system.AWTComponentRenderer
-
Get the graphics context of the given component.
- getHeight() - Method in class com.jme.system.AWTComponentRenderer
-
Get the height of the area to render.
- getHeight() - Method in class com.jme.system.AWTContext
- getImageByteBuffer() - Method in class com.jme.system.AWTComponentRenderer
-
Get the image byte buffer.
- getInputTimeNanos() - Method in class com.jme.input.awt.AwtKeyInput
- getInputTimeNanos() - Method in class com.jme.input.awt.AwtMouseInput
- getInputTimeNanos() - Method in class com.jme.input.AWTInput
- getInstance() - Static method in class com.jme.system.AWTTaskExecutor
-
Get the instance of the executor.
- getJarForNativeLibrary(Platform, String) - Static method in class com.jme.system.NativeLibraryLoader
- getJarsWithNatives() - Static method in class com.jme.system.NativeLibraryLoader
- getJoyInput() - Method in class com.jme.system.awt.AwtPanelsContext
- getJoyInput() - Method in class com.jme.system.AWTContext
- getKeyCount() - Method in class com.jme.input.awt.AwtKeyInput
- getKeyInput() - Method in class com.jme.system.awt.AwtPanelsContext
- getKeyInput() - Method in class com.jme.system.AWTContext
- getLatitude() - Method in class jme3tools.navigation.Position
-
Return the position latitude in decimal format
- getLongitude() - Method in class jme3tools.navigation.Position
-
Return the position longitude in decimal format
- getMetersPerPixel() - Method in class jme3tools.navigation.MapModel2D
- getMetersPerWu() - Method in class jme3tools.navigation.MapModel3D
-
Returns the meters per WU.
- getMinHeight() - Method in class com.jme.app.SettingsDialog
- getMinutesPerPixel() - Method in class jme3tools.navigation.MapModel2D
-
Returns the number of minutes there are per pixel
- getMinutesPerWu() - Method in class jme3tools.navigation.MapModel3D
-
Returns the number of minutes there are per WU.
- getMinWidth() - Method in class com.jme.app.SettingsDialog
- getMouseInput() - Method in class com.jme.system.awt.AwtPanelsContext
- getMouseInput() - Method in class com.jme.system.AWTContext
- getOpenCLContext() - Method in class com.jme.system.awt.AwtPanelsContext
- getOpenCLContext() - Method in class com.jme.system.AWTContext
- getPixelCentre() - Method in class jme3tools.navigation.MapModel2D
-
Returns the pixel (x,y) centre of the map
- getPlatformAssetConfigURL() - Method in class com.jme.system.JmeDesktopSystem
- getPrevImageByteBuffer() - Method in class com.jme.system.AWTComponentRenderer
-
Get the previous image byte buffer.
- getQuality() - Method in class com.jme.app.state.VideoRecorderAppState
-
Get the quality used to compress the video images.
- getRenderer() - Method in class com.jme.system.awt.AwtPanelsContext
- getRenderer() - Method in class com.jme.system.AWTContext
- getRenderManager() - Method in class com.jme.system.AWTFrameProcessor
-
Gets the render manager.
- getResolution() - Method in class com.jme.app.state.VideoRecorderAppState.IsoTimer
- getSettings() - Method in class com.jme.system.awt.AwtPanelsContext
- getSettings() - Method in class com.jme.system.AWTContext
- getStrCourse() - Method in class jme3tools.navigation.NavCalculator
-
Getter method for the true course
- getTime() - Method in class com.jme.app.state.VideoRecorderAppState.IsoTimer
- getTimePerFrame() - Method in class com.jme.app.state.VideoRecorderAppState.IsoTimer
- getTimer() - Method in class com.jme.system.awt.AwtPanelsContext
- getTimer() - Method in class com.jme.system.AWTContext
- getTouchInput() - Method in class com.jme.system.awt.AwtPanelsContext
- getTouchInput() - Method in class com.jme.system.AWTContext
- getTransferMode() - Method in class com.jme.app.state.AWTComponentAppState
-
Get the
transfer mode
that is used by the underlying frame processor. - getTransferMode() - Method in class com.jme.system.AWTFrameProcessor
- getTrueCourse() - Method in class jme3tools.navigation.NavCalculator
-
Getter method for the true course
- getType() - Method in class com.jme.system.awt.AwtPanelsContext
- getType() - Method in class com.jme.system.AWTContext
- getUserSelection() - Method in class com.jme.app.SettingsDialog
- getViewPort() - Method in class com.jme.system.AWTFrameProcessor
-
Gets the view port.
- getViewportPixelHeight() - Method in class jme3tools.navigation.MapModel2D
-
Returns the height of the viewport in pixels
- getViewportPixelWidth() - Method in class jme3tools.navigation.MapModel2D
-
Returns the width of the viewport in pixels
- getWaitingTasks() - Method in class com.jme.system.AWTTaskExecutor
- getWidth() - Method in class com.jme.system.AWTComponentRenderer
-
Get the width of the area to render.
- getWidth() - Method in class com.jme.system.AWTContext
- getWorldHeight() - Method in class jme3tools.navigation.MapModel3D
-
Returns the height of the viewport in pixels.
- getWorldWidth() - Method in class jme3tools.navigation.MapModel3D
-
Returns the width of the viewport in pixels.
- greatCircleSailing(Position, Position) - Method in class jme3tools.navigation.NavCalculator
-
Determines a great circle track between two positions
H
- hasApplication() - Method in class com.jme.system.AWTFrameProcessor
-
Checks of existing application.
- hasDestination() - Method in class com.jme.system.AWTFrameProcessor
-
Checks of existing destination.
- heightListener - Variable in class com.jme.system.AWTFrameProcessor
-
The height listener.
I
- imageByteBuffer - Variable in class com.jme.system.AWTComponentRenderer
-
The image byte buffer.
- imageState - Variable in class com.jme.system.AWTComponentRenderer
-
The Image state.
- ImageToAwt - Class in jme3tools.converters
- ImageToAwt() - Constructor for class jme3tools.converters.ImageToAwt
- init() - Method in class com.jme.app.AppletHarness
- init(Renderer, boolean) - Method in class com.jme.system.AWTComponentRenderer
-
Initialize the component renderer.
- initialize() - Method in class com.jme.input.awt.AwtKeyInput
- initialize() - Method in class com.jme.input.awt.AwtMouseInput
- initialize() - Method in class com.jme.input.AWTInput
- initialize(AppStateManager, Application) - Method in class com.jme.app.state.AWTComponentAppState
- initialize(AppStateManager, Application) - Method in class com.jme.app.state.VideoRecorderAppState
- initialize(RenderManager, ViewPort) - Method in class com.jme.system.awt.AwtPanel
- initialize(RenderManager, ViewPort) - Method in class com.jme.system.AWTFrameProcessor
- initialize(AppSettings) - Method in class com.jme.system.JmeDesktopSystem
- initialized - Variable in class com.jme.input.AWTInput
-
Initializes is it.
- initializeImpl() - Method in class com.jme.input.AWTInput
- inputSource - Variable in class com.jme.system.awt.AwtPanelsContext
- intBytes(int) - Static method in class com.jme.app.state.MjpegFileWriter
- invalidate() - Method in class com.jme.system.awt.AwtPanel
- InvalidPositionException - Exception in jme3tools.navigation
- InvalidPositionException() - Constructor for exception jme3tools.navigation.InvalidPositionException
- isActiveDrawing() - Method in class com.jme.system.awt.AwtPanel
- isCreated() - Method in class com.jme.system.awt.AwtPanelsContext
- isCreated() - Method in class com.jme.system.AWTContext
- isEnabled() - Method in class com.jme.system.AWTFrameProcessor
- isInitialized() - Method in class com.jme.input.awt.AwtKeyInput
- isInitialized() - Method in class com.jme.input.awt.AwtMouseInput
- isInitialized() - Method in class com.jme.input.AWTInput
- isInitialized() - Method in class com.jme.system.awt.AwtPanel
- isInitialized() - Method in class com.jme.system.AWTFrameProcessor
- isMain() - Method in class com.jme.system.AWTFrameProcessor
- IsoTimer(float) - Constructor for class com.jme.app.state.VideoRecorderAppState.IsoTimer
- isPreserveRatio() - Method in class com.jme.system.AWTFrameProcessor
-
Is preserve ratio.
- isRenderable() - Method in class com.jme.system.awt.AwtPanelsContext
- isRenderable() - Method in class com.jme.system.AWTContext
- isUsingNativeBullet() - Static method in class com.jme.system.NativeLibraryLoader
-
Determine if native bullet is on the classpath.
J
- jme3tools.converters - package jme3tools.converters
- jme3tools.navigation - package jme3tools.navigation
- JmeCanvasContext - Interface in com.jme.system
- JmeDesktopSystem - Class in com.jme.system
- JmeDesktopSystem() - Constructor for class com.jme.system.JmeDesktopSystem
K
- keyInput - Variable in class com.jme.system.awt.AwtPanelsContext
- keyInput - Variable in class com.jme.system.AWTContext
-
The key input.
- keyPressed(KeyEvent) - Method in class com.jme.input.awt.AwtKeyInput
- keyPressed(KeyEvent) - Method in class com.jme.input.AWTKeyInput
- keyReleased(KeyEvent) - Method in class com.jme.input.awt.AwtKeyInput
- keyReleased(KeyEvent) - Method in class com.jme.input.AWTKeyInput
- keyTyped(KeyEvent) - Method in class com.jme.input.awt.AwtKeyInput
- keyTyped(KeyEvent) - Method in class com.jme.input.AWTKeyInput
L
- lastThrottleState - Variable in class com.jme.system.awt.AwtPanelsContext
- LAT - Static variable in class jme3tools.navigation.Coordinate
- listener - Variable in class com.jme.input.AWTInput
-
The raw listener.
- listener - Variable in class com.jme.system.awt.AwtPanelsContext
- LNG - Static variable in class jme3tools.navigation.Coordinate
- load(AssetInfo) - Method in class com.jme.cursors.plugins.CursorLoader
-
Loads and return a cursor file of one of the following format: .ani, .cur and .ico.
- load(AssetInfo) - Method in class com.jme.texture.plugins.AWTLoader
- load(BufferedImage, boolean) - Method in class com.jme.texture.plugins.AWTLoader
- load(InputStream, boolean) - Method in class com.jme.texture.plugins.AWTLoader
- loadNativeLibrary(String, boolean) - Static method in class com.jme.system.NativeLibraryLoader
-
First extracts the native library and then loads it.
M
- main(String[]) - Static method in class com.jme.system.ExtractNativeLibraries
- main(String[]) - Static method in class jme3tools.navigation.NavCalculator
- main(String[]) - Static method in class jme3tools.navigation.Position
- MapModel2D - Class in jme3tools.navigation
-
A representation of the actual map in terms of lat/long and x,y co-ordinates.
- MapModel2D(int) - Constructor for class jme3tools.navigation.MapModel2D
-
Constructor
- MapModel3D - Class in jme3tools.navigation
-
A representation of the actual map in terms of lat/long and x,y,z co-ordinates.
- MapModel3D(int) - Constructor for class jme3tools.navigation.MapModel3D
-
Constructor.
- MERCATOR - Static variable in class jme3tools.navigation.NavCalculator
- mercatorSailing(Position, Position) - Method in class jme3tools.navigation.NavCalculator
-
Determines the rhumb line course and distance between two positions
- METERS_PER_MINUTE - Static variable in class jme3tools.navigation.NavCalculator
- MINPRECISION - Static variable in class jme3tools.navigation.Coordinate
- MipMapGenerator - Class in jme3tools.converters
- MipMapGenerator() - Constructor for class jme3tools.converters.MipMapGenerator
- MjpegFileWriter - Class in com.jme.app.state
-
Released under BSD License
- MjpegFileWriter(File, int, int, double) - Constructor for class com.jme.app.state.MjpegFileWriter
- MjpegFileWriter(File, int, int, double, int) - Constructor for class com.jme.app.state.MjpegFileWriter
- mouseClicked(MouseEvent) - Method in class com.jme.input.awt.AwtMouseInput
- mouseClicked(MouseEvent) - Method in class com.jme.input.AWTMouseInput
- mouseDragged(MouseEvent) - Method in class com.jme.input.awt.AwtMouseInput
- mouseDragged(MouseEvent) - Method in class com.jme.input.AWTMouseInput
- mouseEntered(MouseEvent) - Method in class com.jme.input.awt.AwtMouseInput
- mouseEntered(MouseEvent) - Method in class com.jme.input.AWTMouseInput
- mouseExited(MouseEvent) - Method in class com.jme.input.awt.AwtMouseInput
- mouseExited(MouseEvent) - Method in class com.jme.input.AWTMouseInput
- mouseInput - Variable in class com.jme.system.awt.AwtPanelsContext
- mouseInput - Variable in class com.jme.system.AWTContext
-
The mouse input.
- mouseMoved(MouseEvent) - Method in class com.jme.input.awt.AwtMouseInput
- mouseMoved(MouseEvent) - Method in class com.jme.input.AWTMouseInput
- mousePressed(MouseEvent) - Method in class com.jme.input.awt.AwtMouseInput
- mousePressed(MouseEvent) - Method in class com.jme.input.AWTMouseInput
- mouseReleased(MouseEvent) - Method in class com.jme.input.awt.AwtMouseInput
- mouseReleased(MouseEvent) - Method in class com.jme.input.AWTMouseInput
- mouseWheelMoved(MouseWheelEvent) - Method in class com.jme.input.awt.AwtMouseInput
- mouseWheelMoved(MouseWheelEvent) - Method in class com.jme.input.AWTMouseInput
N
- N - Static variable in class jme3tools.navigation.Coordinate
- NativeLibraryLoader - Class in com.jme.system
-
Utility class to register, extract, and load native libraries.
- NavCalculator - Class in jme3tools.navigation
-
A utlity class for performing position calculations
- NavCalculator() - Constructor for class jme3tools.navigation.NavCalculator
-
Constructor
- NavCalculator(Position, Position, int) - Constructor for class jme3tools.navigation.NavCalculator
-
Constructor
- NavCalculator.Quadrant - Class in jme3tools.navigation
- newAudioRenderer(AppSettings) - Method in class com.jme.system.JmeDesktopSystem
- newContext(AppSettings, JmeContext.Type) - Method in class com.jme.system.JmeDesktopSystem
- NO_SELECTION - Static variable in class com.jme.app.SettingsDialog
- notifyChangedHeight(Number) - Method in class com.jme.system.AWTFrameProcessor
-
Notify about that the height was changed.
- notifyChangedRatio(Boolean) - Method in class com.jme.system.AWTFrameProcessor
-
Notify about that the ratio was changed.
- notifyChangedWidth(Number) - Method in class com.jme.system.AWTFrameProcessor
-
Notify about that the width was changed.
- notifyComponentResized(int, int, boolean) - Method in class com.jme.system.AWTFrameProcessor
-
Handle resizing.
- NumUtil - Class in jme3tools.navigation
-
Provides various helper methods for number conversions (such as degree to radian conversion, decimal degree to radians etc)
- NumUtil() - Constructor for class jme3tools.navigation.NumUtil
O
- ON_CHANGES - com.jme.system.AWTFrameProcessor.TransferMode
- OnRequest - com.jme.system.awt.PaintMode
- onSelection(int) - Method in interface com.jme.app.SettingsDialog.SelectionListener
P
- PADDING - Static variable in class com.jme.system.ErrorDialog
- padNum(double, int, int) - Method in class jme3tools.navigation.StringUtil
-
Right aligns a double number with spaces for printing
- padNum(float, int, int) - Method in class jme3tools.navigation.StringUtil
-
Right aligns a float number with spaces for printing
- padNum(int, int) - Method in class jme3tools.navigation.StringUtil
-
Right aligns an integer number with spaces for printing
- padNum(long, int) - Method in class jme3tools.navigation.StringUtil
-
Right aligns a long number with spaces for printing
- padNumZero(double, int, int) - Method in class jme3tools.navigation.StringUtil
-
Right aligns a double number with zeros for printing
- padNumZero(float, int, int) - Method in class jme3tools.navigation.StringUtil
-
Right aligns a float number with zeros for printing
- padNumZero(int, int) - Method in class jme3tools.navigation.StringUtil
-
Right aligns an integer number with zeros for printing
- padNumZero(long, int) - Method in class jme3tools.navigation.StringUtil
-
Right aligns a long number with zeros for printing
- padStringRight(String, int) - Method in class jme3tools.navigation.StringUtil
-
Right aligns a
String
with zeros for printing - paint(Graphics) - Method in class com.jme.system.awt.AwtPanel
- PaintMode - Enum in com.jme.system.awt
- panels - Variable in class com.jme.system.awt.AwtPanelsContext
- pixelWriter - Variable in class com.jme.system.AWTComponentRenderer
-
The Pixel writer.
- planeSailing(Position, Position) - Method in class jme3tools.navigation.NavCalculator
-
Calculate a plane sailing situation - i.e.
- Position - Class in jme3tools.navigation
-
This class represents the position of an entity in the world.
- Position(double, double) - Constructor for class jme3tools.navigation.Position
-
A new position expressed in decimal format
- Position(int, float, int, int, float, int) - Constructor for class jme3tools.navigation.Position
-
A new position expressed in DegMin format
- Position(String, String) - Constructor for class jme3tools.navigation.Position
-
A new position expressed in ALRS format
- Position(String, String, String, String, String) - Constructor for class jme3tools.navigation.Position
-
A new position expressed in NMEA GPS message format: 4807.038,N,01131.000,E
- postFrame(FrameBuffer) - Method in class com.jme.system.awt.AwtPanel
- postFrame(FrameBuffer) - Method in class com.jme.system.AWTFrameProcessor
- postQueue(RenderQueue) - Method in class com.jme.system.awt.AwtPanel
- postQueue(RenderQueue) - Method in class com.jme.system.AWTFrameProcessor
- predictPosition(int, double, double, double, double) - Static method in class jme3tools.navigation.NavCalculator
-
Predicts the position of a target for a given time in the future
- preFrame(float) - Method in class com.jme.system.awt.AwtPanel
- preFrame(float) - Method in class com.jme.system.AWTFrameProcessor
- prettyNum(double) - Method in class jme3tools.navigation.StringUtil
-
Formats a double nicely for printing: THIS DOES NOT ROUND!!!!
- prevImageByteBuffer - Variable in class com.jme.system.AWTComponentRenderer
-
The prev image byte buffer.
- propertyChange(PropertyChangeEvent) - Method in class com.jme.system.AWTFrameProcessor
Q
- Quadrant(int, int) - Constructor for class jme3tools.navigation.NavCalculator.Quadrant
R
- rationListener - Variable in class com.jme.system.AWTFrameProcessor
-
The ration listener.
- registerNativeLibrary(String, Platform, String) - Static method in class com.jme.system.NativeLibraryLoader
-
Register a new known JNI library.
- registerNativeLibrary(String, Platform, String, String) - Static method in class com.jme.system.NativeLibraryLoader
-
Register a new known library.
- removeNotify() - Method in class com.jme.system.awt.AwtPanel
- Repaint - com.jme.system.awt.PaintMode
- repaintInThread() - Method in class com.jme.system.awt.AwtPanel
- reset() - Method in class com.jme.app.state.VideoRecorderAppState.IsoTimer
- reshape() - Method in class com.jme.system.AWTFrameProcessor
- reshape(ViewPort, int, int) - Method in class com.jme.system.awt.AwtPanel
- reshape(ViewPort, int, int) - Method in class com.jme.system.AWTFrameProcessor
- reshapeCurrentViewPort(int, int) - Method in class com.jme.system.AWTFrameProcessor
-
Reshape the current view port.
- reshapeInThread(int, int, boolean) - Method in class com.jme.system.AWTFrameProcessor
-
Reshape the current frame transfer for the new size.
- resizeToPowerOf2(Image) - Static method in class jme3tools.converters.MipMapGenerator
- restart() - Method in class com.jme.system.awt.AwtPanelsContext
- restart() - Method in class com.jme.system.AWTContext
- rhumbLineSailing(Position, Position) - Method in class jme3tools.navigation.NavCalculator
-
Determines a Rhumb Line course and distance between two points
- RL_CRS_PRECISION - Static variable in class jme3tools.navigation.NavCalculator
- RL_DIST_PRECISION - Static variable in class jme3tools.navigation.NavCalculator
- RLSailing - Class in jme3tools.navigation
-
A utility class to package up a rhumb line sailing
- RLSailing(double, double) - Constructor for class jme3tools.navigation.RLSailing
- Round(float, int) - Method in class jme3tools.navigation.NumUtil
-
Rounds a number
- RUNNING_STATE - Static variable in class com.jme.system.AWTComponentRenderer
-
The constant RUNNING_STATE.
S
- S - Static variable in class jme3tools.navigation.Coordinate
- Screenshots - Class in com.jme.util
- Screenshots() - Constructor for class com.jme.util.Screenshots
- setApplication(Application) - Method in class com.jme.system.AWTFrameProcessor
-
Sets the application.
- setAutoFlushFrames(boolean) - Method in class com.jme.system.awt.AwtPanelsContext
- setAutoFlushFrames(boolean) - Method in class com.jme.system.AWTContext
- setCentre(Vector3f) - Method in class jme3tools.navigation.MapModel3D
-
Defines the centre of the map in pixels.
- setCentre(Point) - Method in class jme3tools.navigation.MapModel2D
-
Defines the centre of the map in pixels
- setCentre(Position) - Method in class jme3tools.navigation.MapModel2D
- setCentre(Position) - Method in class jme3tools.navigation.MapModel3D
-
Sets the map's centre.
- setComponent(Component) - Method in class com.jme.app.state.AWTComponentAppState
-
Set the AWT component that is used as rendering output.
- setCursorVisible(boolean) - Method in class com.jme.input.awt.AwtMouseInput
- setCursorVisible(boolean) - Method in class com.jme.input.AWTMouseInput
- setCustomExtractionFolder(String) - Static method in class com.jme.system.NativeLibraryLoader
-
Specify a custom location where native libraries should be extracted to.
- setDestination(Component) - Method in class com.jme.system.AWTFrameProcessor
-
Sets the destination.
- setEnabled(boolean) - Method in class com.jme.app.state.AWTComponentAppState
- setEnabled(boolean) - Method in class com.jme.system.AWTFrameProcessor
- setFile(File) - Method in class com.jme.app.state.VideoRecorderAppState
- setFrameTransfer(AWTComponentRenderer) - Method in class com.jme.system.AWTFrameProcessor
-
Sets the frame transfer.
- setHeight(int) - Method in class com.jme.system.AWTContext
- setImage(String) - Method in class com.jme.app.SettingsDialog
-
setImage
sets the background image of the dialog. - setImage(URL) - Method in class com.jme.app.SettingsDialog
-
setImage
sets the background image of this dialog. - setInputListener(RawInputListener) - Method in class com.jme.input.awt.AwtKeyInput
- setInputListener(RawInputListener) - Method in class com.jme.input.awt.AwtMouseInput
- setInputListener(RawInputListener) - Method in class com.jme.input.AWTInput
- setInputSource(AwtPanel) - Method in class com.jme.system.awt.AwtPanelsContext
- setInputSource(Component) - Method in class com.jme.input.awt.AwtKeyInput
- setInputSource(Component) - Method in class com.jme.input.awt.AwtMouseInput
- setMinHeight(int) - Method in class com.jme.app.SettingsDialog
- setMinutesPerPixel(double) - Method in class jme3tools.navigation.MapModel2D
- setMinWidth(int) - Method in class com.jme.app.SettingsDialog
- setNativeCursor(JmeCursor) - Method in class com.jme.input.awt.AwtMouseInput
- setNativeCursor(JmeCursor) - Method in class com.jme.input.AWTMouseInput
- setProfiler(AppProfiler) - Method in class com.jme.system.awt.AwtPanel
- setProfiler(AppProfiler) - Method in class com.jme.system.AWTFrameProcessor
- setQuality(float) - Method in class com.jme.app.state.VideoRecorderAppState
-
Set the video image quality from 0(worst/smallest) to 1(best/largest).
- setSelectionListener(SettingsDialog.SelectionListener) - Method in class com.jme.app.SettingsDialog
- setSettings(AppSettings) - Method in class com.jme.system.awt.AwtPanelsContext
- setSettings(AppSettings) - Method in class com.jme.system.AWTContext
- setSystemListener(SystemListener) - Method in class com.jme.system.awt.AwtPanelsContext
- setSystemListener(SystemListener) - Method in class com.jme.system.AWTContext
- settings - Variable in class com.jme.system.awt.AwtPanelsContext
- settings - Variable in class com.jme.system.AWTContext
-
The settings.
- SettingsDialog - Class in com.jme.app
-
PropertiesDialog
provides an interface to make use of theGameSettings
class. - SettingsDialog(AppSettings, String, boolean) - Constructor for class com.jme.app.SettingsDialog
-
Constructor for the
PropertiesDialog
. - SettingsDialog(AppSettings, URL, boolean) - Constructor for class com.jme.app.SettingsDialog
-
Constructor for the
PropertiesDialog
. - SettingsDialog.SelectionListener - Interface in com.jme.app
- setTitle(String) - Method in class com.jme.system.awt.AwtPanelsContext
- setTitle(String) - Method in class com.jme.system.AWTContext
- setTransferMode(AWTFrameProcessor.TransferMode) - Method in class com.jme.app.state.AWTComponentAppState
-
Set the
transfer mode
that is used by the underlying frame processor. - setTransferMode(AWTFrameProcessor.TransferMode) - Method in class com.jme.system.AWTFrameProcessor
- setViewportHeight(int) - Method in class jme3tools.navigation.MapModel2D
- setViewportWidth(int) - Method in class jme3tools.navigation.MapModel2D
- setWidth(int) - Method in class com.jme.system.AWTContext
- setWorldHeight(int) - Method in class jme3tools.navigation.MapModel3D
-
Sets the world's desired height.
- setWorldWidth(int) - Method in class jme3tools.navigation.MapModel3D
-
Sets the world's desired width.
- setXCentre(int) - Method in class jme3tools.navigation.MapModel2D
-
Sets the map's xCentre
- setYCentre(int) - Method in class jme3tools.navigation.MapModel2D
-
Sets the map's yCentre
- shortBytes(short) - Static method in class com.jme.app.state.MjpegFileWriter
- showDialog() - Method in class com.jme.app.SettingsDialog
-
showDialog
sets this dialog as visble, and brings it to the front. - showDialog(String) - Static method in class com.jme.system.ErrorDialog
-
Show a dialog with the proved message.
- showErrorDialog(String) - Method in class com.jme.system.JmeDesktopSystem
- showSettingsDialog(AppSettings, boolean) - Method in class com.jme.system.JmeDesktopSystem
- showSoftKeyboard(boolean) - Method in class com.jme.system.JmeDesktopSystem
- splitDelimitedStr(String, String) - Method in class jme3tools.navigation.StringUtil
-
Splits a newline (\n) delimited string into an array of strings
- start() - Method in class com.jme.app.AppletHarness
- stateAttached(AppStateManager) - Method in class com.jme.app.state.AWTComponentAppState
- stop() - Method in class com.jme.app.AppletHarness
- StringUtil - Class in jme3tools.navigation
-
A collection of String utilities.
- StringUtil() - Constructor for class jme3tools.navigation.StringUtil
- swapInt(int) - Static method in class com.jme.app.state.MjpegFileWriter
- swapShort(short) - Static method in class com.jme.app.state.MjpegFileWriter
T
- toDegrees(double) - Static method in class jme3tools.navigation.NavCalculator
-
Converts meters to degrees.
- toPixel(Position) - Method in class jme3tools.navigation.MapModel2D
-
Converts a latitude/longitude position into a pixel co-ordinate
- toPosition(Vector3f) - Method in class jme3tools.navigation.MapModel3D
-
Converts a world position into a Mercator position.
- toPosition(Point) - Method in class jme3tools.navigation.MapModel2D
-
Converts a pixel position into a mercator position
- toStringDec() - Method in class jme3tools.navigation.Coordinate
-
Prints out a coordinate as a string
- toStringDec() - Method in class jme3tools.navigation.Position
-
Prints out position using decimal format
- toStringDecLat() - Method in class jme3tools.navigation.Position
-
Prints out the position latitude
- toStringDecLng() - Method in class jme3tools.navigation.Position
-
Prints out the position longitude
- toStringDegMin() - Method in class jme3tools.navigation.Coordinate
-
Prints out a coordinate as a string
- toStringDegMin() - Method in class jme3tools.navigation.Position
-
Prints out position using DegMin format
- toStringDegMinLat() - Method in class jme3tools.navigation.Position
-
Prints out the position latitude
- toStringDegMinLng() - Method in class jme3tools.navigation.Position
-
Prints out the position longitude
- toWorldUnit(Position) - Method in class jme3tools.navigation.MapModel3D
-
Converts a latitude/longitude position into a WU coordinate.
- transferMode - Variable in class com.jme.system.AWTComponentRenderer
-
The transfer mode.
U
- unbind() - Method in class com.jme.input.AWTInput
- unbind() - Method in class com.jme.input.AWTKeyInput
- unbind() - Method in class com.jme.input.AWTMouseInput
- unbind() - Method in class com.jme.system.AWTFrameProcessor
-
Unbind this processor from its current destination.
- unbindDestination() - Method in class com.jme.system.AWTFrameProcessor
-
Unbind this processor from destination.
- unbindListeners() - Method in class com.jme.system.AWTFrameProcessor
- update() - Method in class com.jme.app.state.VideoRecorderAppState.IsoTimer
- update() - Method in class com.jme.input.awt.AwtKeyInput
- update() - Method in class com.jme.input.awt.AwtMouseInput
- update() - Method in class com.jme.input.AWTInput
- update(float) - Method in class com.jme.app.state.AWTComponentAppState
- update(Graphics) - Method in class com.jme.app.AppletHarness
- updateImpl() - Method in class com.jme.input.AWTInput
- updateImpl() - Method in class com.jme.input.AWTKeyInput
- updateImpl() - Method in class com.jme.input.AWTMouseInput
- utcTimeStamp() - Method in class jme3tools.navigation.Position
-
Returns the UTC time stamp
V
- valueOf(String) - Static method in enum com.jme.system.awt.PaintMode
-
Returns the enum constant of this type with the specified name.
- valueOf(String) - Static method in enum com.jme.system.AWTFrameProcessor.TransferMode
-
Returns the enum constant of this type with the specified name.
- values() - Static method in enum com.jme.system.awt.PaintMode
-
Returns an array containing the constants of this enum type, in the order they are declared.
- values() - Static method in enum com.jme.system.AWTFrameProcessor.TransferMode
-
Returns an array containing the constants of this enum type, in the order they are declared.
- VideoRecorderAppState - Class in com.jme.app.state
-
A Video recording AppState that records the screen output into an AVI file with M-JPEG content.
- VideoRecorderAppState() - Constructor for class com.jme.app.state.VideoRecorderAppState
-
Using this constructor the video files will be written sequentially to the user's home directory with a quality of 0.8 and a framerate of 30fps.
- VideoRecorderAppState(float) - Constructor for class com.jme.app.state.VideoRecorderAppState
-
Using this constructor the video files will be written sequentially to the user's home directory.
- VideoRecorderAppState(float, int) - Constructor for class com.jme.app.state.VideoRecorderAppState
-
Using this constructor the video files will be written sequentially to the user's home directory.
- VideoRecorderAppState(File) - Constructor for class com.jme.app.state.VideoRecorderAppState
-
This constructor allows you to specify the output file of the video.
- VideoRecorderAppState(File, float) - Constructor for class com.jme.app.state.VideoRecorderAppState
-
This constructor allows you to specify the output file of the video as well as the quality
- VideoRecorderAppState(File, float, int) - Constructor for class com.jme.app.state.VideoRecorderAppState
-
This constructor allows you to specify the output file of the video as well as the quality
- VideoRecorderAppState.IsoTimer - Class in com.jme.app.state
W
- W - Static variable in class jme3tools.navigation.Coordinate
- WAITING_STATE - Static variable in class com.jme.system.AWTComponentRenderer
-
The constant WAITING_STATE.
- WGS84_EARTH_RADIUS - Static variable in class jme3tools.navigation.NavCalculator
- WHEEL_AMP - Static variable in class com.jme.input.awt.AwtMouseInput
- widthListener - Variable in class com.jme.system.AWTFrameProcessor
-
The width listener.
- writeFrame() - Method in class com.jme.system.AWTComponentRenderer
-
Write the current rendered frame to the component graphics contex.
- writeImageFile(OutputStream, String, ByteBuffer, int, int) - Method in class com.jme.system.JmeDesktopSystem
- writeImageToBytes(Image, float) - Method in class com.jme.app.state.MjpegFileWriter
All Classes All Packages


Adaptive images are the current hot topic in the Adaptive Design and Responsive Web Design conversations. Why? Because no one likes any of the solutions.
New elements and attributes are being discussed as a solution for what is, for most of us, a big headache that's almost as big as the problem: providing users with one image optimized for their display size and resolution without wasting time, memory or bandwidth with a client side solutions.
We have foreground and background images. We have large displays and small displays. We have regular resolution and high resolution displays. We have good bandwidth and low bandwidth connections. We have portrait and landscape orientations.
Some choose to "waste bandwidth" (and memory) by sending high-resolution images to all devices. Others send regular resolution images to all devices which look less crisp on high resolution displays.
What we really want to do is find what we call the “holy grail”: The one solution that sends the most appropriate size and resolution image based on the browser and device making the request.
The Clown Car Technique is the closest thing to a “holy grail”: leveraging well supported @media queries, SVG and <object> to serve responsive images with a single request. It's not a perfect solution yet, but we're getting close.
We've solved adaptive images when it comes to background images. Media queries make it simple to send the right size and resolution images based on the device pixel ratio, viewport size and even the orientation of the screen.
By using media queries with our background image styles, we can ensure only the images we will be using are downloaded from the server. We can limit the downloads to the assets that are most appropriate, saving bandwidth, memory and HTTP requests.
Unfortunately, there has historically been no solution for foreground images. Until now. The technology has been available for a long time. CCT is just a new technique leveraging existent technology.
With inline or content images, it's a bit more difficult to have the browser download and display only the appropriate foreground image. Most believe that there is no mechanism for the
tag to download the right size and resolution image. To that end, polyfills have been created and services have been formed.
The '<picture>' element, leveraging the semantics of the HTML5 '<video>' elements with its support of media queries to swap in different source files was proposed:
<picture alt="responsive image"> <source src="large.jpg" media="(min-width:1600px), (min-resolution: 136dpi) and (min-width:800px)"> <source src="medium.jpg" media="(min-width:800px), (min-resolution: 136dpi) and (min-width:400px)"> <source src="small.jpg">   </picture>
Another method, using a srcset
attribute on the
element, has also been proposed. The above <picture>
element would be written as:

Both solutions have benefits and drawbacks. It's hard to pick which one. So hard, in fact, that you don't have to anymore. They've joined the two solutions into called Florian's Compromise. Though the traction isn't quite there yet on either method.
Google has proposed client hints as part of http headers to enable the right image to be served server side.
What many people don't realize is we already have the technology to create and serve responsive images.
SVG has supported media queries for a long time, and browsers have supported SVG for ... well, a long enough time too. Most browsers support SVG media queries in SVG (Test your browser). When it comes to browsers that need responsive images, the only browser in the mobile space that doesn't support SVG is old versions of the Android browser. (Android support for SVG began with Android 3.0.)
We can leverage browser support for SVG and SVG support for both media queries and raster images to create responsive images, using media queries within SVG to serve up the right image.
My original experiment should theoretically work, and does work in IE10 and Opera: when you mark up your HTML, you add a single call to an SVG file.

Now isn't that code simple?
SVGs support raster images included with the <image>
element and with the CSS background-image
property. In our responsive SVG, we include all the images that we may need to
serve and show only the appropriate image based on media queries.
My first SVG attempt used <image>
with @media queries hiding them with display: none;
.
While the SVG works perfectly in terms of being responsive, it has several issues. Unfortunately, display: none;
on an
<image>
in SVG, similar to
in HTML, does not prevent the
resource from being downloaded. If you open the <image>
SVG in your
browser,
all 4 PNGs are retrieved from the server, making 4 http requests,
wasting bandwidth and memory.
We know from CSS background images it is indeed possible to only download needed images. Similarly, to prevent the SVG from downloading all the included images we use CSS background images instead of foreground images in our SVG file:
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 300 329" preserveAspectRatio="xMidYMid meet"> <title>Clown Car Technique</title>  </svg>
If you're familiar with media queries and CSS, most of the above should make sense. The clown car technique uses the same @media queries as you would use elsewhere in your adaptive site.
To preserve the aspect ratio of the containing element and ensure that is
scales uniformly, we include the viewbox
and preserveAspectRatio
attributes.
The value of the viewBox
attribute is a list of four
space or comma separated
numbers min-x
, min-y
, width
and height
. By defining
the width and the height of our viewbox we define the aspect ratio of the
SVG image. The values we set for the preserveAspectRatio attribute -- 300x329 --
ensures the aspect ratio defined in viewbox
is preserved.
When you open
the SVG file with just background images defined, the raster image
will take up the entire viewport. While the <image>
version may look better
as a stand-alone file because it is maintaining it's aspect ratio, and the background-image
version is filling up the viewport, when you include the SVG as a separate
document pulled into your HTML, the aspect ratio is by default preserved.
The CSS background-image property solves the http request issue. Open the SVG file with just PNG background images (or the JPEG version) and look at the resources tab in your developer tools and you'll see the SVG has only made 2 http requests rather than 5. If you are on a large monitor, the browser will have downloaded a small .svg file (676 bytes) and huge.png or huge.jpg.
Our first issue -- downloading all the different image file sizes, even those that aren't needed -- has been resolved. This background-image version downloads only the image required, thereby solving the multi-HTTP and waste of bandwidth concerns.
The magic happens when we include SVG in a flexible layout. You'll note the first time you resize the image, there may be flickers of white as the browser requests the next required PNG -- this is because it doesn't automatically download all the assets. Rather, it downloads only the asset it needs.
We still have the SVG file itself which requires an http request. We'll solve that issue third.
In the Opera browser or Windows 9 or 10, open the HTML file containing a SVG raster image linked to with the
 tag.
Note in the resources panel of your developer tools that only one jpeg or png is being downloaded. Resize your browser. Note that the  is responsive. Additional JPEGs or PNGs (we could also have used GIFs or WebP) are only downloaded if needed.
If you opened the HTML file containing a SVG raster image in Firefox or WebKit, you'll likely saw no image. The SVG works in all modern browsers, but the  calling in an SVG pulling in raster images only works in Opera and IE 9+.
We'll first cover how it works in IE and Opera, then we'll cover the issues with WebKit and Firefox.
The code is simply:

When you include the SVG in your HTML
with a flexible
width, such as 70% of viewport, as you grow and shrink the container by changing the window size or changing the CSS, the image
responds to the changes.
The "width" media query in the SVG is based on the parent element in which the SVG is contained -- the  in this case -- not the viewport width.
As the window grows and shrinks the image display by the SVG
changes. In the SVG file, the images are defined as being 100% of the height
and width or the parent, which in the above case, when we opened
the SVG directly, was the viewport. Now the container is the
element.
Because we included the viewbox
and preserveAspectRatio
attributes, whatever the image size, as long as only one length is defined, the SVG will grow or shrink to fit that length
maintaining the declared aspect ratio in the SVG.
These foreground images work perfectly in Opera and Internet Explorer 9+ (the versions found on mobile devices). In Chrome and Safari, if you open the SVG file first, caching it, the HTML file containing the foreground SVG image may work as well.
While we previously saw that the browser can indeed render the SVG, if the SVG is included in our document via the
tag, this specific type of SVG fails to render.
Why? To prevent cross-domain scripting attacks, most browsers have content security policies in place to keep SVG from importing media or scripts in case they're malicious in nature.
Blocking SVGs from importing scripts and images does make sense: to prevent cross-domain scripting attacks you don't want a file to be pulling in potentially malicious content. SVG is supported. In the case of WebKit and FireFox, it is just being prevented from pulling in external raster images. I submitted a Chrome bug report to get the ban on importing raster image in SVG lifted.
In Firefox, the responsive SVG also works on its own. Firefox fully supports SVG. However, for security reasons, Firefox blocks the importing of external raster images, even if those images are same domain. The rationale is if visitors are allowed to upload images, and the site displays those images and scripts as part of an SVG, it's a security risk. I would argue that if a site uses unsecure user generated content, they're already doing it wrong.
For right now the simple line:

is blocked in some browsers, and therefore isn't a solution.
Browsers all support SVG media queries. They all support SVG as foreground or content images. They all support SVG as background images. The support just isn't all the same because of browser security policies.
All browsers do support the <object> tag. Without making changes to the browser security policy,  alone won't work. yet. We need to leverage the <object> tag.
The <object> element allows an external resource to be treated as an image. <object> can take care of the browser security drawbacks we see with  disallowing the importing of images or script into an  file. <object> allows both.
The code isn't that much more complex:
<object data="awesomefile.svg" type="image/svg+xml"></object>
By default, the <object> will be as wide as the parent
element. However, similar to images, we can declare a width or height with
the width
and height
attributes or with the CSS width
and height
properties.
For the Clown Car Technique to maintain the declared aspect ratio, simply declare just one length value..
Because of the viewbox and preserveAspectRatio declarations in our SVG file, the <object> will by default maintain the declared aspect ratio. You can overwrite this with HTML or CSS attributes.
As noted earlier, the media queries in the SVG match the SVG's container, not the viewport. The matched media queries in the SVG file will reflect the parent of the <object> tag rather than the viewport.
If you take a look at an SVG being pulled in as the <object> data, you'll see it works in all browsers that support SVG.
We have a few drawbacks with this method:
<object> is supported in all browsers, even mobile browsers. But this technique only works if the browser supports SVG as well. Therefore, it doesn't work in IE8 and earlier or Android 2.3 and earlier. There is a fallback for these older browsers. Also, we have two http requests to pull in the correct image: one for the svg file and one for the raster image we want to show -- there is a solution for this too.
What makes the use of <object> more interesting than  is <object> is a non-empty element. If you want, you can include the  tag nested in the <object> for browsers that don't support the data type.
For Internet Explorer <=8 (pun intended), we include our medium size raster image as they're generally displayed on monitors at regular DPI, :
<object data="awesomefile.svg" type="image/svg+xml">  </object>
Unfortunately, content nested within the <object>
is
downloaded even when the object is rendered and the nested content is not
needed or rendered. This adds a download of the medium image whether or not it is needed and used.
To handle this issue, we can use conditional comments for IE.
<object data="awesomefile.svg" type="image/svg+xml">  </object>
We've narrowed the SVG to download a single raster image. The method we've being using downloads both the image and the SVG file. We have two http requests instead of one. To prevent an additional http requests, we can create a SVG data URI instead of calling in an external SVG file.
<object data="data:image/svg+xml,<svg viewBox='0 0 300 329' preserveAspectRatio='xMidYMid meet' xmlns='http://www.w3.org/2000/svg'><title>Clown Car Technique</title></svg>" type="image/svg+xml">  </object>
The above looks messy, but it's simply data:image/svg+xml,
followed by the contents of the SVG file, minified.
The above works in all browsers that support SVG except Internet Explorer. While this is frustrating, it's actually because Internet Explorer is trying to follow the specifications to the letter. The specifications state that the data URI must be escaped. To make all the browsers, including IE9 and IE10 support the data URI we escape it:
<object data="data:image/svg+xml,%3Csvg%20viewBox='0%200%20300%20329'%20preserveAspectRatio='xMidYMid%20meet'%20xmlns='http://www.w3.org/2000/svg'%3E%3Ctitle%3EClown%20Car%20Technique%3C/title%3E%3Cstyle%3Esvg%7Bbackground-size:100%25%20100%25;background-repeat:no-repeat;%7D@media%20screen%20and%20(max-width:400px)%7Bsvg%7Bbackground-image:url(images/small.png);%7D%7D@media%20screen%20and%20(min-width:401px)%7Bsvg%7Bbackground-image:url(images/medium.png);%7D%7D@media%20screen%20and%20(min-width:701px)%7Bsvg%7Bbackground-image:url(images/big.png);%7D%7D@media%20screen%20and%20(min-width:1001px)%7Bsvg%7Bbackground-image:url(images/huge.png);%7D%7D%3C/style%3E%3C/svg%3E" type="image/svg+xml">  </object>
It's ugly markup, but it works! http://estelle.github.io/clowncar/singlerequest.html and http://estelle.github.io/clowncar/index2.html
Open the above links and open up the developer tools to inspect the http requests. You'll note 2 http requests: the html file and the png the SVG pulls in. In the inspector, there will be an entry for the SVG file as well. But note no http request is being made: the status for the SVG is "success" and the size over the network is 0 bytes, with the size of the data URI SVG coming in at under 600 bytes.
Generally content images are either landscape or portrait: faces are portrait, groups of people, products and sunsets are landscape. Some people have a huge issue with the Clown Car Technique because the image doesn't change based on orientation change. This isn't necessarily true.
The magic of CCT is the image rendered changes based on the size of the container. You can set your landscape foreground image to 33% or 240px or whatever, and your portrait object width to 25% or 180px or other. The object's size is determined in the CSS of your HTML. The raster image served is based on the media queries that match the object's size.
The aspect ratio remains the same, but you can control which raster image is served by changing the proportions of your SVG container, matching the media queries in your HTML's CSS with your media queries in your SVG's CSS.
Another benefit of the Clown Car Technique is all
the logic remains in the SVG file. Similar to how we separate content from
presentation from behavior, this method enables us to also separate out image logic from our content. The
or <object>
element is part of the content, but the logic that makes it all work is separate from the content layer: the logic is in the SVG image instead of polluting our CSS and HTML.
CCT will enable us to neatly organize our images, separating our behavior from presentation from content from images. I can envision a responsive images file structure being something similar to
images/ clowns/ small.png medium.png large.png svg.svg cars/ small.png medium.png large.png svg.svg techniques/ small.png medium.png large.png svg.svg
All of our assets for a single image live in a single, separate directory. The image file names can be a constant, with the folder name being variable. We can have responsive foreground images without littering our HTML with extra, unused code, making image management and updating a breeze.
Above are the pros of the technique. The technique is still nascent, so I haven't figured out what all the issues are. I am working on solutions to some of the issues that have been found, and assume new issues will arise.
I am mostly concerned with ways in which the Clown Car Technique fails to behave like regular PNGs, JPEGs are GIFs. The main issues I have noticed include load order, fall back for Android 2.3.3 and earlier, accessibility, and the ability to right click on the image.
According to John Wilkins, the Clown Car technique requires full CSS layout before the image starts to load. I have not had a chance to compare loading for regular foreground images versus <object> with SVG pulling in raster images, so can not comment on the impact of this issue yet.
Android up to 2.3 does not support SVG. There are two possible solutions I have found that I have yet to flush out and test.
The first is to include the IE conditional commenting to include a medium size fallback for IE <=8, and a small size fall back for all browsers that ignore IE conditional comments (which includes IE10):

The above fallback will show the small png to all Android phones. Unfortunately, this will download small.png for all browsers other than IE9 and older, even though the image is not shown. While we're trying to solve for old Android, we are downloading the small PNG to most devices unnecessarily.
The other solution is feature detection with JavaScript. Test for SVG support. Include a .no-svg
class on the
element if the browser doesn't support SVG. Using a webkit prefixed media query to occlude non-WebKit browsers, target:
.no-svg object[type*="svg"] { width: 300px; height: 329px; background-image: url(small.png); }
The above properties add dimension and background image to the <object>
object. Again, I haven't tested this out yet, and it's not inaccessible. Which brings us to the next topic:
The benefit of
is that the simple alt
attribute can make it accessible. The <object>
element does not have an alt
attribute. Ideas to make Clown Car Technique images accessible include
role="img"
and other ARIA attributes like aria-label
and aria-labeled-by
.tab-index
property to enable the <object>
to get focusAgain, I have yet to test this out, and am currently working on an accessibility testing page.
In your desktop browser, when you right click on the image you get a menu enabling you to save the image. On phones, a lingering touch on an image may prompt a save. This does not work with <object>
or with background images, which is what our SVG is made of.
This "drawback" may be a "feature" for sites wary of people 'stealing' their images. In the brief time that I have contemplated this issue, I have yet to come up with a native ways of resolving this issue. It is likely resolvable with JavaScript.
If the inability to right click to save is your main argument against this CCT, note while users can right-click on WebP images in browsers that support WebP (only Chrome and Opera), they can't do much with those images as native applications don't support this new format. This isn't preventing us from moving forward with this bandwidth saving technique.
With naming help from Christopher Schmitt and Amie Gregory, I called it the Clown Car technique since we are including many large images (clowns) into a tiny single SVG image file (car).
We need to use the non-semantic <object>
element while we encourage browsers to support raster images in SVG as an
source either via CORS or CSP.
Clown Car Technique is a solution we can use now. Detractors argue <picture>
and / or srcset
are the solution without convincing me Clown Car Technique isn't the right solution. Some argue the drawback for the clown car technique is the lack of support in Android, forgetting that Android 2.3.3 and IE8 don't support <picture>
or srcset
either.
While the <object>
can theoretically be made accessible, I am not fully content using the <object>
tag due to the lack of semantics and the non-accessible nature. Making it accessible is my next priority. While I would like to see this work with the simpler and more semantic  tag, once the accessibility issue is solved, this technique will be production worthy.


In the HTML comments, this page contains configuration information that the FrontPage Explorer and FrontPage Editor need to communicate with the FrontPage server extensions installed on this web server. Do not delete this page.


main
-
Declaration
class
Application
: tkd.tkdapplication.TkdApplication;NoteMaker application.
-
Declaration
Window
root
;The main window of the application.
-
Declaration
Gui
gui
;Variable used for accessing the Gui class.
-
Declaration
PreferencesWindow
pref
;Variable used for accessing the PreferencesWindow class.
-
Declaration
InputOutput
io
;Variable used for accessing the InputOutput class.
-
Declaration
Tabs
tabs
;Variable used for accessing the Tabs class.
-
Declaration
Syntax
syntax
;Variable used for accessing the Syntax class.
-
Declaration
NoteBook
noteBook
;The main NoteBook widget. Contains all the open files in different tabs.
-
Declaration
bool
applicationInitialization
;Variable to prevent accessing objects that don't exist yet.
-
Declaration
int
sideStatus
;Variable to determine whether the terminal PanedWindow is visible.
-
Declaration
Frame
main
;The frame that contains the NoteBook with all the files, and the NoteBook with line numbers.
-
Declaration
Frame
side
;The frame that contains the NoteBook with the terminal.
-
Declaration
NoteBook
noteBookTerminal
;NoteBook widget for the terminal. Uses a NoteBook instead of a standalone Text widget for symetry.
-
Declaration
PanedWindow
sideBySide
;The top container for everything to allow you to resize the terminal using the sash.
-
Declaration
Text
lineNumbersTextWidget
;Text widget containing the line numbers of the currently visible file.
-
Declaration
string
openingPairKey
;String containing the opening symbol from a pair of brackets, braces, quotes etc.
-
Declaration
string
closingPairKey
;String containing the closing symbol from a pair of brackets, braces, quotes etc.
-
Declaration
string[]
selectionRange
;An array containing the indices for the start and end of the selected text.
-
Declaration
void
initInterface
();Initialize user interface, instantiate the class objects etc.
-
Declaration
void
insertPair
(CommandArgsargs
);Adds the matching symbol either at insert curosr or around the selection range. Only runs after the opening symbol is detected within a Text widget after 1 milisecond. This in addition to setReadOnly() is to prevent the symbol replacing the selected text.
-
Declaration
void
delay
(CommandArgsargs
);Runs everytime one of the the opening pair symbols is detected within a Text widget. Also handles "Tab" for use with indentation of the entire selected text.
-
Declaration
void
updateLines
(CommandArgsargs
);Runs whenever the text is modified. Resets the modified flag and calls lineNumberUpdate().
-
Declaration
void
lineNumbersUpdate
(CommandArgsargs
);Runs whenever the tab changes and when called by updateLines(). Check the number of lines in the text to set the lines correctly in the line numbers Text widget. Sets the customization options to the ones of the current Text widget. When triggered by "NotebookTabChanged" event, changes the line numbers view to match that of the text.
-
Declaration
void
terminalCommand
(CommandArgsargs
);Basic terminal implementation. Not really suitable for debugging because the main program waits until the process is finished. You can use more than one command at a time by chaining them.
-
Declaration
void
about
(CommandArgsargs
);Launches the default browser to the projects GitHub page.
-
Declaration
void
changeTitle
(CommandArgsargs
);Changes the title to the name of the program.
-
Declaration
void
resetTitle
(CommandArgsargs
);Resets the title after 1.5 seconds by calling changeTitle() once a "ResetTitle" event is detected.
-
Declaration
void
terminalPanel
(CommandArgsargs
);Opens and closes the terminal panel.
-
Declaration
void
addTextBindings
(CommandArgsargs
);Adds the indentation and symbol pair bindings to all the text widgets so that they can be actually used.
-
Declaration
void
indent
(CommandArgsargs
);Indents the text, works with both single lines and selection.
-
Declaration
void
unindent
(CommandArgsargs
);Unindents the text, works with both single lines and selection.
-
Declaration
void
openFile
(CommandArgsargs
);Opens a file with the result from the dialog.
-
Declaration
void
openFileInNewTab
(CommandArgsargs
);Opens a file in a new tab.
-
Declaration
void
saveFile
(CommandArgsargs
);Saves the file sans dialog using the path from opening or saving the file previously. Opens the save dialog if there isn't a path associated with the file.
-
Declaration
void
saveFileAs
(CommandArgsargs
);Saves a file using the dialog.
-
Declaration
void
saveOnModified
(CommandArgsargs
);Saves the file every time the text widget's contents are modified if the preferences option is checked. Except for when a file is being opened.
-
Declaration
void
openPreferences
(CommandArgsargs
);Opens the preferences window.
-
Declaration
void
automaticHighlight
(CommandArgsargs
);Automatically highlights the defined syntax. That is when the file is being saved or loaded and the extension matches one of the supported ones.
-
Declaration
void
manualHighlight
(CommandArgsargs
);Manually highlights the defined syntax bypassing the supported extensions check, results will vary. Can be used to redo the highlights after changes to file without saving or to apply the newly selected theme.
-
Declaration
void
exitApplication
(CommandArgsargs
);Exits the application.
-


Hindsite FAQ
Does Hindsite support themes and skeletons?
Use the Hindsite init command to install website styling, content and structure from existing site templates or from built-in templates.
Why does the serve
command sometimes fail a live reload?
Some text editors create temporary and backup files when documents are saved and created, you need to exclude these files from document processing. Failure to do so can result in rebuild false positives and premature watcher reloads.
For example, the Vim editor creates tilda suffixed backup files and temporary
4913
files so you need to add
them to the exclude
configuration
variable in the templates directory root configuration
file.
TOML example:
exclude = "*~|4913"
How can I add site search to my website?
An easy way to add a site search feature is to use the Google Programmable
Search Engine. For example,
the Hindsite built-in blog
template
includes a Google PSE search page.
Google can take many days to index new and updated Web pages and even then there's no guarantee that they will be indexed. See Get your website on Google.
How do I include Disqus comments in my website?
The recipe described below is taken from the Hindsite built-in
blog
template.
If you initialized your site with the built-in
blog
template then you already have the Disqus template and steps 3 and 4
below are redundant.
- If you don't already have one you need a Disqus account.
- Now log into to your Disqus account and register your site. Make a note of
your site's Disqus
shortname
, you need to include it along with some Disqus JavaScript code to your site's generated webpages. - Copy this
disqus
template definition to a site template file:{{define "disqus"}} {{/* If the user `shortname` variable is set and the document `id` is non-blank then Disqus comments are inserted. */}} {{if and .id .user.shortname}}

  Please enable JavaScript to view the comments powered by Disqus. {{end}} {{end}}
- Include the Disqus template in your web pages by adding this line at the end
of the HTML body in your document footer template:
{{template "disqus" .}}
- Add a
user
shortname
entry to the siteconfig
file and set it to your site's Disqusshortname
. TOML example:[user] shortname = "disqus-shortname-goes-here"
That's it, all published documents with a non-blank
document id
will now include Disqus comments.
- You can automatically assign document
id
s to all documents by setting theid
configuration variable tourlpath
. To confine autoid
assignment to a specific folder set theid
variable in that folder's configuration file. - To disable Disqus comments on specific pages explicitly set the document
id
front matter value to a blank string.
How can I customize .date
and .modtime
template variable formats?
Use the Go Format function. For example:
{{.modtime.Format "Monday, 02-Jan-06 15:04:05 MST"}}
The .shortdate
, .mediumdate
and .longdate
document template
variables are simpler and preferable
to using .date
directly.
How do you configure source code highlighting?
By including highlight.js CSS and
scripts in your web pages. For example, see the Hindsite built-in
docs
.
How can I partition documents into separate categories?
Put them in separate indexes. Indexes are similar to Wordpress categories but they are folder based so you do not have to assign them explicitly.
I want a single page document index
Set the paginate
configuration
variable to -1
and all indexed
documents will appear on the first page.
I want both paginated and single page document indexes
This technique creates a second nested index:
- Create a child index with the
paginate
configuration variable set to-1
. For example:template/ posts/ docs.html # Paginated document index template. all/ docs.html # Non-paginated (single-page) document index template. config.toml # paginate = -1
- Create a corresponding content child directory and move the content documents into it:
content/ posts/ all/ # Move documents here from posts.
Each index has it's own docs.html
HTML template. This technique can be
extended to create multiple additional indexes over a the same indexed document
set.
How can I skip a lint link check?
Quote the link's href
or src
attribute with single quotes instead of double
quotes, for example:
single-quotes skip lint checks
Aren't single-hyphen command options non-standard?
Hindsite follows the Go command single-hyphen convention:
- “I wanted a single, straightforward syntax for flags, nothing more, nothing less.” — Rob Pike (https://groups.google.com/g/golang-nuts/c/3myLL-6mA94)
- “Traditionally, UNIX command-line options consist of a dash, followed by one or more lowercase letters. The GNU utilities added a double-dash, followed by a complete word or compound word.” —https://tldp.org/LDP/abs/html/standard-options.html
How fast is hindsite?
Hindsite compares more than favorably with Hugo (which bills itself as “The world’s fastest framework for building websites”).
Fully rebuilding a blog site containing 5000 Markdown posts (20MB of Markdown source) revealed that Hindsite is over twice as fast as Hugo (3.14s vs 7.98s). Hindsite's executable is much smaller than Hugo's (8MB vs 53MB) and it consumed less working memory (46KB vs 432KB). Both sites are of comparable complexity.
The benchmark
The benchmarked Hindsite and Hugo sites are available in the downloadable hindsite2-benchmark.zip file (7.0MB):
├── hindsite
│ ├── build/
│ ├── content/
│ └── template/
└── hugo
├── archetypes/
├── content/
├── data/
├── layouts/
├── public/
├── resources/
├── static/
├── themes/
└── config.toml
- The Hindsite site was created using the Hindsite built-in blog template.
- The Hugo site was created using the minimal anubis theme following the instructions in this blog post.
To compare performance, run hindsite
and hugo
commands from their respective
site directories. Here are the build performance statistics measured using the
GNU/Linux time
command running on Ubuntu Linux 20.04:
Hindsite build
$ /usr/bin/time -v hindsite build
documents: 5005
static: 6
time: 3.14s
Command being timed: "hindsite build"
User time (seconds): 3.21
System time (seconds): 0.85
Percent of CPU this job got: 129%
Elapsed (wall clock) time (h:mm:ss or m:ss): 0:03.14
Average shared text size (kbytes): 0
Average unshared data size (kbytes): 0
Average stack size (kbytes): 0
Average total size (kbytes): 0
Maximum resident set size (kbytes): 46288
Average resident set size (kbytes): 0
Major (requiring I/O) page faults: 0
Minor (reclaiming a frame) page faults: 13615
Voluntary context switches: 4956
Involuntary context switches: 2296
Swaps: 0
File system inputs: 0
File system outputs: 134000
Socket messages sent: 0
Socket messages received: 0
Signals delivered: 0
Page size (bytes): 4096
Exit status: 0
Hugo build
$ /usr/bin/time -v hugo
Start building sites …
hugo v0.99.1-d524067382e60ce2a2248c3133a1b3af206b6ef1 linux/amd64 BuildDate=2022-05-18T11:18:14Z VendorInfo=gohugoio
| EN
-------------------+-------
Pages | 5071
Paginator pages | 2932
Non-page files | 0
Static files | 0
Processed images | 0
Aliases | 32
Sitemaps | 1
Cleaned | 0
Total in 7837 ms
Command being timed: "hugo"
User time (seconds): 19.70
System time (seconds): 1.18
Percent of CPU this job got: 264%
Elapsed (wall clock) time (h:mm:ss or m:ss): 0:07.89
Average shared text size (kbytes): 0
Average unshared data size (kbytes): 0
Average stack size (kbytes): 0
Average total size (kbytes): 0
Maximum resident set size (kbytes): 432840
Average resident set size (kbytes): 0
Major (requiring I/O) page faults: 0
Minor (reclaiming a frame) page faults: 107285
Voluntary context switches: 4204
Involuntary context switches: 9082
Swaps: 0
File system inputs: 0
File system outputs: 332888
Socket messages sent: 0
Socket messages received: 0
Signals delivered: 0
Page size (bytes): 4096
Exit status: 0
Performances of both Hindsite and Hugo suffer if the site folders are not excluded from anti-virus real-time protection.
Why did you create hindsite?
The short answer is programmer's hubris; the longer answer has it's genesis in Hugo's complexity.
Prior to writing Hindsite I was using Hugo for blogging. Hugo is an outstanding program, it's chock full of features and has the flexibility needed to build complex static web sites. But features and flexibility come at the price of complexity and a steeper learning curve.
My frustration was not with Hugo but with my brain's ability to retain hard-won working knowledge of Hugo across six months or more between casual use. The amount of time spent relearning (necessitated by my occasional reconfiguration and theme tweak) motivated me to write Hindsite.
Hindsite was designed to be easy to learn and use, it was not designed to compete with Hugo's massive feature set.
The casual-use argument is the same reason my go-to drawing program is Microsoft Paint or KolorPaint and not Adobe Photoshop or The Gimp.


Overwolf Sample App
Welcome to the Overwolf tutorial app for developers.
Learn how to build an app by using one!
Launch lol,and the In-Game window will pop-up automatically!
What can you learn with this sample app?
1. How to listen to real-time game events and how to identify specific events like start/end match, kill, and death.
2. How to use a transparent background window as a service bus, that acts as the main controller of your app.
3. How to use Hotkeys that show/hide your app while you are in-game.
1. How to listen to real-time game events and how to identify specific events like start/end match, kill, and death.
2. How to use a transparent background window as a service bus, that acts as the main controller of your app.
3. How to use Hotkeys that show/hide your app while you are in-game.