Accessible input tooltips with no javascript
The HTML
(ARIA and ARIA-associated attributes displayed in green)
<form action=""> <fieldset> <legend>Login form</legend>
 Your username <input type="text" id="username" aria-describedby="username-tip" required />
Your username is your email address

 Your password <input type="text" id="password" aria-describedby="password-tip" required />
Was emailed to you when you signed up

 </fieldset> </form>
A few notes
No javascript is required because no states (attributes) need switching — the aria-describedby and id
relationships are just there. We still need to reveal the tooltip on focus but this can be achieved with a simple CSS adjacent sibling combinator:
input:focus + [role="tooltip"] { display: block; position: absolute; top: 100%; }
Progressive collapsibles
Building accessible, collapsible content sections from basic flow content.
First title in block of content
Aliquam tincidunt velit sit amet ante hendrerit tempus. Potenti et eros sed justo – commodo bibendum non at nunc. Fusce ac sodales magna. Suspendisse potenti cras molestie, risus a enim convallis vitae luctus libero lacinia. Cras molestie risus a enim ‘convallis vitae’ luctus libero lacinia.
Nulla auctor eleifend turpis consequat pharetra: Vestibulum sit amet ipsum lacus… Nulla vel magna sit — amet dui lobortis commodo — vitae vel nulla.
Curabitur consectetur faucibus nisl ac varius. Curabitur consectetur; faucibus nisl ac varius. Nunc iaculis risus vel orci ornare dignissim sed vitae nulla. Nulla auctor eleifend turpis consequat pharetra. Suspendisse potenti H20. Suspendisse potenti.
Another Third Level Heading
Aliquam nisl enim… tristique tempus placerat at, posuere in lectus. Potenti et eros sed justo commodo bibendum non at nunc. Aliquam nisl enim, tristique tempus placerat at, posuere in lectus. Sed dapibus, lectus sit amet adipiscing egestas, mauris est viverra nibh, iaculis pretium sem orci aliquet mauris. Duis sagittis, est sit amet gravida tristique, purus lectus venenatis urna, id ‘molestie’ magna risus ut nunc. Donec tempus tempus tellus, ac lacinia turpis mattis ac. Curabitur consectetur; faucibus nisl ac varius.
Nunc iaculis risus vel ‘Orci Ornare’ dignissim sed vitae nulla. Sed dapibus, lectus sit amet adipiscing egestas, mauris est viverra nibh, iaculis pretium sem orci aliquet mauris. Fusce ac sodales magna. Nulla auctor eleifend 23rd of May turpis consequat pharetra. Suspendisse potenti H20.
The HTML
(We start with just
 headings and other flow content. The other flow content is wrapped and the necessary button control and attributes are added with javascript. A click function just toggles the aria-expanded and aria-hidden states.)

 <button aria-expanded="false" aria-controls="collapsible-0">What is this all about?</button>

Lorem ipsum with a link thrown in etc.

etc.

A few notes
Using both JAWS and NVDA with Firefox, focusing on the heading button indicates (a) the heading level, (b) that the control is a button and (c) whether it is in an expanded or collapsed state. In NVDA, for a collapsed region, "[The title], heading level 3, button collapsed" is announced. In JAWS, it is the same info but in a different order.
In JAWS 15, the aria-controls relationship is recognised and you are given the option to "use the JAWS key + ALT + M to move to the controlled element". This is an interesting addition and would be handy if the element was not the next node on the page (ie. out of TAB order). Currently, one is able to simple move to the content using (for example) the down arrow key.
In this demo we use the `<h3>` element as the divider. You can tweak the script to use whatever heading level works best for your content.
Simple ARIA tab interface
A tab interface built on POSH and enhanced with ARIA via javascript. Just requires you to place the structure within a wrapping

. In our case this is identified by the class .tab-interface
. No other classes are required.
Section 1
Duis sagittis, est sit amet gravida tristique, purus lectus venenatis urna, id molestie magna risus ut nunc. Aliquam nisl enim, tristique tempus placerat at, posuere in lectus. Vestibulum sit amet ipsum lacus. Suspendisse potenti.
Nulla lobortis tempus commodo. Fusce ac sodales magna. Cras molestie risus a enim convallis vitae
luctus libero lacinia. Donec tempus tempus tellus, ac lacinia turpis mattis ac. Maecenas sit amet tellus nec mi gravida posuere
non pretium magna. Aliquam nisl enim, tristique tempus placerat at, posuere in lectus. Aliquam tincidunt velit sit amet ante hendrerit tempus. Sed mauris arcu, aliquet ultrices malesuada sed, pretium id CTRL + V massa.
Section 2
Fusce ac sodales CSS magna. Donec et nisi dictum felis sollicitudin congue. Aliquam nisl enim, tristique tempus placerat at, posuere in lectus. Sed dapibus, lectus sit amet adipiscing egestas, mauris est viverra nibh, iaculis pretium sem orci aliquet mauris. Suspendisse potenti. Duis sagittis, est sit amet gravida tristique, purus lectus venenatis urna, id molestie magna risus ut nunc. Fusce ac sodales magna. Potenti et eros sed justo commodo bibendum non at nunc.
Suspendisse potenti cras molestie, risus a enim convallis vitae luctus libero lacinia. Nulla vel magna sit amet dui lobortis commodo vitae vel nulla. Suspendisse potenti. Sed dapibus, lectus sit amet adipiscing egestas, mauris est viverra nibh, iaculis pretium sem orci aliquet mauris. Donec a congue leo. Vestibulum sit amet ipsum lacus.
Section 3
Potenti et eros sed justo commodo bibendum non at nunc. Maecenas sit amet tellus nec mi gravida posuere non pretium magna. Nulla auctor eleifend turpis consequat pharetra.
Vestibulum sit amet ipsum lacus. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed dapibus, lectus sit amet adipiscing egestas, mauris est viverra nibh, iaculis pretium sem orci aliquet mauris. Duis sagittis, est sit amet gravida tristique, purus lectus venenatis urna, id molestie magna risus ut nunc. Nulla vel magna sit amet dui lobortis commodo vitae vel nulla.
Suspendisse potenti. Aliquam nisl enim, tristique tempus placerat at, posuere in lectus. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Suspendisse potenti H20.
The HTML
(Progressively enhanced, so starting with a list of links to sections of content, with ARIA attributes and their attached styles loaded where environments permit)
This is before:

Section 1

Section 2

Section 3

...

...

...

This is after:

Section 1

Section 2

Section 3

...

...

...

A few notes
I've commented up the script if you want to have a look. The trick is in allowing users to switch focus between the aria-selected tab and the content itself without having to cycle through all the irrelevant tabs. One changes focus betwen tabs using the ◀ and ▶ arrow keys and between the selected tab and the selected panel using the TAB key as normal. Pressing TAB will focus the first element inside the visible tab panel. Since this is a heading, "Heading level 3, section [1], tab panel should be announced".
When entering the tablist for the first time and focusing the leftmost tab, NVDA announces "tab control, [title], tab selected, one of three". Using the right arrow key (▶) to choose the next tab, NVDA announces "[title], tab selected, two of three".
Alert! You're offline
A live region example which alerts the user whenever internet connectivity is lost or regained.
You are online, which is nice!
The HTML
(ARIA and ARIA-associated attributes displayed in green)

You are online.

A few notes
A test resource (test_resource.html
) is polled every few seconds to see if it can be reached. If not, the XHR onerror
changes the status message to “There's no internets. Go to the pub!”, triggering the live region to announce this fact and suggestion. When connectivity comes back, the message should change back, triggering the live region again. It is changing the contents of the region that triggers any read out.
Note that I've included both role="alert" and aria-live="assertive" at the same time. These are synonymous attributes, but some screen readers only support one or the other. By using both simultaneously we therefore maximize the chances that the live region will function as expected.
Warning dialog
Pressing the BIG RED BUTTON will open a <dialog>
with a warning and a confirmation button. Closing the dialog returns focus to the BIG RED BUTTON that triggered it.
Note: Currently buggy in Chrome when used with NVDA. No NVDA issues with other browsers. Any suggestions greatly appreciated.
The HTML
We construct the dialog using an empty <dialog>
element sat at the foot of the body element and two data
attributes on the "trigger"; the red button, in this case.
The trigger
<button id="big-red" data-dialog-call="I really do not like you pressing that" data-dialog-response="I understand">Big Red Button</button>
The data-dialog-call
attribute contains the warning and the data-dialog-response
is the text for the close button. It defaults to "close" if no custom text is given.
The generated dialog markup
<dialog tabindex="0" open="open" role="alertdialog" aria-labelledby="d-message">

I really do not like you pressing that
 <button>I understand</button>

 </dialog>
Notes
Be sure to check out the little script which creates and handles the dialog. It…
- Creates the dialog dynamically, adding the special
alertdialog
role reserved for warning and error dialogs - Makes the dialog focusable
- Remembers the element that triggered the dialog
- Injects the dialog message and close button based on the
data
attributes of the trigger - Wraps the content in
role="document"
, which reinstates predictable key bindings if the dialog is in arole="application"
- Associates the message with the dialog element itself with
aria-labelledby
- Focuses the close button
- Traps focus within the dialog
- Moves focus back to the trigger element (the BIG RED BUTTON) on closing the dialog
Importantly, the script prevents users from interacting with the rest of the page until the dialog has been closed. We add visibility: hidden
to the dialog's siblings for this and return focus to the dialog itself when TAB is hit on the close button. SHIFT + TAB still lets users escape the dialog to the browser address bar etc.
// Handle TAB close.on('keydown', function(e) { if ((e.keyCode || e.which) == 9) { dialog.focus(); e.preventDefault(); } });
On opening the dialog, NVDA reads "Dialog: I really do not like you pressing that; I understand (button)". Pressing TAB focuses the dialog itself to reread the message, in case you missed it. Pressing the close button closes the dialog and returns focus to the "trigger" element that invoked it. This causes NVDA to read "Practical ARIA Examples document, main landmark, big red button (button)".
A simple toolbar widget
A generic pattern for "toolbars" which offer buttons for manipulating content in some way. In this case, it's sorting a list.
Sorting crab names
- Fiddler crab
- Hermit crab
- Red crab
- Robber crab
- Sponge crab
- Yeti crab
The HTML
(ARIA and ARIA-related attributes in green as always)

 <button type="button" aria-pressed="true" data-sort="ascending">A to Z</button> <button type="button" aria-pressed="false" data-sort="descending">Z to A</button>

Fiddler crab

Hermit crab

Red crab

Robber crab

Sponge crab

Yeti crab

A few notes
This is all about providing context. When the toolbar is entered (from either direction) and one of the buttons is focused, we are told that we are in a "toolbar", then the label of "sorting options" is also announced. Then, it is confirmed that the button is a "toggle button". This described behavior is in JAWS and NVDA. In JAWS 15 or NVDA with Firefox, a button with aria-pressed="true" will be appended with the word "pressed" when announced.
Chromevox announces aria-pressed="true" as "button pressed" and aria-pressed="false" as "button not pressed". This is a good reason to toggle the attribute value rather than removing aria-pressed as a boolean.
Update: This example now supports recommended keyboard navigation. That is, tabbing into the toolbar focuses the first button; using the left and right arrow keys switches focus between buttons; pressing TAB while focused on a button moves focus out of the toolbar (in this case, onto the list so it may be read).


Powerol
Product List
Customer List
Power 2 Empower
Bank
Hotel
College
Hospital
5 ka Punch
Silence Certified
Peace of Mind
Fuel Intelligent
Fastest Delivery
Power Band
Our Story
Mahindra Group
Mahindra Group Video
Mahindra Powerol
Mahindra Powerol Video
Enquiry Form
Listed Bookings
New Enquiry
Smart Tools
Cost Benefit Analysis
Load Calculator
Faq's
Listed Booking
New Enquiry
Locate Us
LOGOUT
Product Range
5KVA*
200KVA - 500KVA
5KVA*
200KVA - 500KVA
State
Kathmandu
Bagmati
Bheri
Dhawalagiri
Gandaki
Janakpur
Karnali
Kosi
Lumbini
Mahakali
Mechi
Narayani
Rapti
Sagarmatha
Seti
Segment
Other
Are you an existing DG set user
Yes
No
Select Existing Product Range
5KVA*
200KVA - 500KVA
5KVA*
200KVA - 500KVA


Coraline's latest thing--saying tuka-tuka-tuka-tuka, and poking at us like we do when we tickle her. Will the cuteness ever end?
5/10/2009, 11:21:52 PM
Favs: 0
Retweets: 0
link--- layout: tweet ---
Coraline's latest thing--saying tuka-tuka-tuka-tuka, and poking at us like we do when we tickle her. Will the cuteness ever end?
5/10/2009, 11:21:52 PM
Favs: 0
Retweets: 0
link


--- title: "Default" description:
'Input Scanner' enhances input elements with a cursor indicator that changes color based on the current state of the input's validation. Upon completion of the user's input, the cursor then 'scans' over the input element to indicate completion. If a user wishes to re-edit an input element, the form will unscan the input on click. On form submission, invalid/incomplete elements are indicated by a blinking red cursor. If the form is valid, a cursor then scans over the submit button with a completion message.
author: Brian Merriman category: evolution type: input scanner order: 1 ---


Dashboard that shows specific data from users such as probability of a profile be fake, Sentiment Analysis on tags and text, Trends groups as well. Analytics to help find where are your leads.


|
||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
A Deployer is a specialized Container into which web applications can be deployed and undeployed. Such a Container will create and install child Context instances for each deployed application. The unique key for each web application will be the context path to which it is attached.
| Field Summary | |
static java.lang.String |
INSTALL_EVENT
The ContainerEvent event type sent when a new application is installed by install() , after it has been started. |
static java.lang.String |
PRE_INSTALL_EVENT
The ContainerEvent event type sent when a new application is being installed by install() , before it has been
started. |
static java.lang.String |
REMOVE_EVENT
The ContainerEvent event type sent when an existing application is removed by remove() . |
| Method Summary | |
Context |
findDeployedApp(java.lang.String contextPath)
Return the Context for the deployed application that is associated with the specified context path (if any); otherwise return null . |
java.lang.String[] |
findDeployedApps()
Return the context paths of all deployed web applications in this Container. |
java.lang.String |
getName()
Return the name of the Container with which this Deployer is associated. |
void |
install(java.lang.String contextPath,
java.net.URL war)
Install a new web application, whose web application archive is at the specified URL, into this container with the specified context path. |
void |
install(java.net.URL config,
java.net.URL war)
Install a new web application, whose context configuration file (consisting of a <Context> element) and web
application archive are at the specified URLs. |
void |
remove(java.lang.String contextPath)
Remove an existing web application, attached to the specified context path. |
void |
remove(java.lang.String contextPath,
boolean undeploy)
Remove an existing web application, attached to the specified context path. |
void |
start(java.lang.String contextPath)
Start an existing web application, attached to the specified context path. |
void |
stop(java.lang.String contextPath)
Stop an existing web application, attached to the specified context path. |
| Field Detail |
public static final java.lang.String PRE_INSTALL_EVENT
install()
, before it has been
started.
public static final java.lang.String INSTALL_EVENT
install()
, after it has been started.
public static final java.lang.String REMOVE_EVENT
remove()
.
| Method Detail |
public java.lang.String getName()
public void install(java.lang.String contextPath, java.net.URL war) throws java.io.IOException
If this application is successfully installed, a ContainerEvent of type
INSTALL_EVENT
will be sent to all registered listeners,
with the newly created Context
as an argument.
contextPath
- The context path to which this application should
be installed (must be unique)war
- A URL of type "jar:" that points to a WAR file, or type
"file:" that points to an unpacked directory structure containing
the web application to be installed
java.lang.IllegalArgumentException
- if the specified context path
is malformed (it must be "" or start with a slash)
java.lang.IllegalStateException
- if the specified context path
is already attached to an existing web application
java.io.IOException
- if an input/output error was encountered
during installationpublic void install(java.net.URL config, java.net.URL war) throws java.io.IOException
Install a new web application, whose context configuration file
(consisting of a <Context>
element) and web
application archive are at the specified URLs.
If this application is successfully installed, a ContainerEvent
of type INSTALL_EVENT
will be sent to all registered
listeners, with the newly created Context
as an argument.
config
- A URL that points to the context configuration file to
be used for configuring the new Contextwar
- A URL of type "jar:" that points to a WAR file, or type
"file:" that points to an unpacked directory structure containing
the web application to be installed
java.lang.IllegalArgumentException
- if one of the specified URLs is
null
java.lang.IllegalStateException
- if the context path specified in the
context configuration file is already attached to an existing web
application
java.io.IOException
- if an input/output error was encountered
during installationpublic Context findDeployedApp(java.lang.String contextPath)
null
.
contextPath
- The context path of the requested web applicationpublic java.lang.String[] findDeployedApps()
public void remove(java.lang.String contextPath) throws java.io.IOException
REMOVE_EVENT
will be sent to all
registered listeners, with the removed Context
as
an argument.
contextPath
- The context path of the application to be removed
java.lang.IllegalArgumentException
- if the specified context path
is malformed (it must be "" or start with a slash)
java.lang.IllegalArgumentException
- if the specified context path does
not identify a currently installed web application
java.io.IOException
- if an input/output error occurs during
removalpublic void remove(java.lang.String contextPath, boolean undeploy) throws java.io.IOException
REMOVE_EVENT
will be sent to all
registered listeners, with the removed Context
as
an argument. Deletes the web application war file and/or directory
if they exist in the Host's appBase.
contextPath
- The context path of the application to be removedundeploy
- boolean flag to remove web application from server
java.lang.IllegalArgumentException
- if the specified context path
is malformed (it must be "" or start with a slash)
java.lang.IllegalArgumentException
- if the specified context path does
not identify a currently installed web application
java.io.IOException
- if an input/output error occurs during
removalpublic void start(java.lang.String contextPath) throws java.io.IOException
contextPath
- The context path of the application to be started
java.lang.IllegalArgumentException
- if the specified context path
is malformed (it must be "" or start with a slash)
java.lang.IllegalArgumentException
- if the specified context path does
not identify a currently installed web application
java.io.IOException
- if an input/output error occurs during
startuppublic void stop(java.lang.String contextPath) throws java.io.IOException
contextPath
- The context path of the application to be stopped
java.lang.IllegalArgumentException
- if the specified context path
is malformed (it must be "" or start with a slash)
java.lang.IllegalArgumentException
- if the specified context path does
not identify a currently installed web application
java.io.IOException
- if an input/output error occurs while stopping
the web application
|
||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |


|
||||||||||
| PREV NEXT | FRAMES NO FRAMES |
| Packages | |
|---|---|
| org.encog | |
| org.encog.app.analyst | This package contains the Encog Analyst. |
| org.encog.app.analyst.analyze | This package contains all if the classes used to analyze data for the analyst. |
| org.encog.app.analyst.commands | This package contains all of the analyst commands. |
| org.encog.app.analyst.csv | This package contains all of the classes for directly working with CSV files, used by the analyst. |
| org.encog.app.analyst.csv.balance | This package contains the classes used to balance CSV files. |
| org.encog.app.analyst.csv.basic | This package contains the basic subclasses for all of the CSV handling done by the Encog analyst. |
| org.encog.app.analyst.csv.filter | This package contains all of the classes used by the analyst to filter. |
| org.encog.app.analyst.csv.normalize | This package contains all of the classes used by the analyst to normalize. |
| org.encog.app.analyst.csv.segregate | This package contains all of the classes used to segregate, by the analyst. |
| org.encog.app.analyst.csv.shuffle | This package contains all of the classes used by the analyst to shuffle. |
| org.encog.app.analyst.csv.sort | This package contains all of the classes used by the analyst to sort. |
| org.encog.app.analyst.missing | |
| org.encog.app.analyst.report | This package contains the classes used to produce a simple report about the analyst file. |
| org.encog.app.analyst.script | |
| org.encog.app.analyst.script.normalize | This package contains the classes used to store information about normalization for the script. |
| org.encog.app.analyst.script.prop | This package contains all of the property classes for the script. |
| org.encog.app.analyst.script.segregate | This package contains all of the classes to store information about how to segregate for the script. |
| org.encog.app.analyst.script.task | This package contains classes that store the tasks for a script. |
| org.encog.app.analyst.util | This package contains basic utilities for the Encog analyst. |
| org.encog.app.analyst.wizard | This package contains classes used by the Encog Analyst Wizard. |
| org.encog.app.quant | This package contains the Encog Quant application. |
| org.encog.app.quant.indicators | This package contains indicators used by Encog. |
| org.encog.app.quant.indicators.predictive | This package contains predictive indicators used by Encog. |
| org.encog.app.quant.loader | This package contains the loader, used to load financial data. |
| org.encog.app.quant.loader.yahoo | This package contains the Yahoo Finance loader. |
| org.encog.app.quant.ninja | This package contains the Ninjatrader package. |
| org.encog.app.quant.util | This package contains utilities used by the Encog quant app. |
| org.encog.bot | This package contains all of the classes and packages for Encog's bot functions. |
| org.encog.bot.browse | This class contains Encog's browser functions. |
| org.encog.bot.browse.range | This package contains all of the classes that represent ranges in an HTML document. |
| org.encog.bot.dataunit | This package contains all of the data units for Encog's browser. |
| org.encog.bot.rss | This package contains all of the classes used for Encog's RSS functions. |
| org.encog.engine.network.activation | This package contains all of the classes for activation functions. |
| org.encog.mathutil | |
| org.encog.mathutil.error | |
| org.encog.mathutil.libsvm | |
| org.encog.mathutil.matrices | |
| org.encog.mathutil.matrices.decomposition | |
| org.encog.mathutil.randomize | |
| org.encog.mathutil.rbf | |
| org.encog.ml | This package contains all of the classes for Machine Learning. |
| org.encog.ml.anneal | THis package contains the classes for simulated annealing. |
| org.encog.ml.data | This package contains classes to provide data to the Machine Learning Methods. |
| org.encog.ml.data.basic | |
| org.encog.ml.data.buffer | This package implements a folded data set. |
| org.encog.ml.data.buffer.codec | This package contains classes used to encode/decode from the EGB format. |
| org.encog.ml.data.folded | This package implements a folded data set. |
| org.encog.ml.data.market | |
| org.encog.ml.data.market.loader | |
| org.encog.ml.data.specific | This package contains data classes to get data from specific locations. |
| org.encog.ml.data.temporal | |
| org.encog.ml.factory | This package contains the Encog Machine Learning Factory. |
| org.encog.ml.factory.method | |
| org.encog.ml.factory.parse | |
| org.encog.ml.factory.train | This package is used to create trainers. |
| org.encog.ml.genetic | This package is used to hold the classes used to implement genetic algorithms for Encog. |
| org.encog.ml.genetic.crossover | This package is used for Encog Genetic Algorithms. |
| org.encog.ml.genetic.genes | This package is used for Encog Genetic Algorithms. |
| org.encog.ml.genetic.genome | This package is used for Encog Genetic Algorithms. |
| org.encog.ml.genetic.innovation | This package is used for Encog Genetic Algorithms. |
| org.encog.ml.genetic.mutate | This package is used for Encog Genetic Algorithms. |
| org.encog.ml.genetic.population | This package is used for Encog Genetic Algorithms. |
| org.encog.ml.genetic.selection | This package is used for Encog Genetic Algorithms. |
| org.encog.ml.genetic.species | This package is used for Encog Genetic Algorithms. |
| org.encog.ml.kmeans | This package holds the classes used to implement kmeans clustering. |
| org.encog.ml.svm | This package contains all of the classes for support vector machines. |
| org.encog.ml.svm.training | This package holds the classes used for SVM training. |
| org.encog.ml.train | |
| org.encog.ml.train.strategy | |
| org.encog.ml.train.strategy.end | |
| org.encog.neural | |
| org.encog.neural.art | This package contains the classes for ART neural networks. |
| org.encog.neural.bam | THis package contains the classes for BAM networks. |
| org.encog.neural.cpn | This package contains the classes for CPN networks. |
| org.encog.neural.cpn.training | This package contains the instar and outstar training for the network. |
| org.encog.neural.data | This package contains compatibility classes to ease the transition to Encog 3.0. |
| org.encog.neural.data.basic | This package contains compatibility classes to ease the transition to Encog 3.0. |
| org.encog.neural.error | |
| org.encog.neural.flat | Flat neural networks are Encog's higher performance implementation of multi-layer networks. |
| org.encog.neural.flat.train | This package contains the flat training methods. |
| org.encog.neural.flat.train.prop | This package contains the propagation training for flat networks. |
| org.encog.neural.neat | |
| org.encog.neural.neat.training | |
| org.encog.neural.networks | This package contains the neural network machine learning methods. |
| org.encog.neural.networks.layers | |
| org.encog.neural.networks.structure | This package contains classes used to handle the structure of a neural network. |
| org.encog.neural.networks.training | This package provides training for neural networks. |
| org.encog.neural.networks.training.anneal | This package trains neural network using simulated annealing. |
| org.encog.neural.networks.training.concurrent | This package allows concurrent training jobs to be scheduled. |
| org.encog.neural.networks.training.concurrent.jobs | This package provides the performers to perform concurrent training jobs. |
| org.encog.neural.networks.training.concurrent.performers | This package defines jobs for concurrent training. |
| org.encog.neural.networks.training.cross | This package provides cross validation training. |
| org.encog.neural.networks.training.genetic | This package provides genetic training for neural networks. |
| org.encog.neural.networks.training.lma | This package provides Levenberg Marquardt training for neural networks. |
| org.encog.neural.networks.training.pnn | This package provides PNN training. |
| org.encog.neural.networks.training.propagation | This package provides propagation training for neural networks. |
| org.encog.neural.networks.training.propagation.back | This package provides back propagation training for neural networks. |
| org.encog.neural.networks.training.propagation.manhattan | This package provides Manhattan propagation training for neural networks. |
| org.encog.neural.networks.training.propagation.quick | This package provides back propagation training for neural networks. |
| org.encog.neural.networks.training.propagation.resilient | This package provides resilient propagation training for neural networks. |
| org.encog.neural.networks.training.propagation.scg | This package provides SCG propagation training for neural networks. |
| org.encog.neural.networks.training.simple | This package provides simple ADALINE training. |
| org.encog.neural.networks.training.strategy | This package provides training strategies to update learning date and momentum. |
| org.encog.neural.pattern | This package contains many helper classes to create neural network types. |
| org.encog.neural.pnn | This package contains the classes for the PNN. |
| org.encog.neural.prune | This package contains the classes to prune a neural network. |
| org.encog.neural.rbf | This package contains classes for RBF networks. |
| org.encog.neural.rbf.training | This package contains a SVD trainer for RBF. |
| org.encog.neural.som | This package contains classes for the SOM. |
| org.encog.neural.som.training | This package contains training methods for the SOM. |
| org.encog.neural.som.training.basic | This package implements neighborhood training for the SOM. |
| org.encog.neural.som.training.basic.neighborhood | This package provides neighborhood functions for the SOM. |
| org.encog.neural.som.training.clustercopy | This package provides a very simple trianing method for SOM's. |
| org.encog.neural.thermal | This package implements thermal neural networks, such as Hopfield and Boltzmann machines. |
| org.encog.parse | |
| org.encog.parse.tags | |
| org.encog.parse.tags.read | |
| org.encog.parse.tags.write | |
| org.encog.persist | |
| org.encog.platformspecific.j2se | |
| org.encog.platformspecific.j2se.data | |
| org.encog.platformspecific.j2se.data.image | This package contains classes used to allow images to be Machine Learning Data. |
| org.encog.plugin | This package holds classes to implement plugins. |
| org.encog.plugin.system | This package holds the system plugins. |
| org.encog.util | |
| org.encog.util.arrayutil | |
| org.encog.util.benchmark | |
| org.encog.util.concurrency | |
| org.encog.util.concurrency.job | |
| org.encog.util.csv | |
| org.encog.util.downsample | |
| org.encog.util.error | |
| org.encog.util.file | |
| org.encog.util.http | |
| org.encog.util.identity | |
| org.encog.util.logging | |
| org.encog.util.normalize | |
| org.encog.util.normalize.input | |
| org.encog.util.normalize.output | |
| org.encog.util.normalize.output.mapped | |
| org.encog.util.normalize.output.multiplicative | |
| org.encog.util.normalize.output.nominal | |
| org.encog.util.normalize.output.zaxis | |
| org.encog.util.normalize.segregate | |
| org.encog.util.normalize.segregate.index | |
| org.encog.util.normalize.target | |
| org.encog.util.obj | |
| org.encog.util.simple | |
| org.encog.util.time | |
| org.encog.util.validate |
|
||||||||||
| PREV NEXT | FRAMES NO FRAMES |


| Opcode/Instruction | Op/En | 64-Bit Mode | Compat/Leg Mode | Description |
|---|---|---|---|---|
|
66 0F 2A /r CVTPI2PD xmm, mm/m64* |
RM | Valid | Valid |
Convert two packed signed doubleword integers from mm/mem64 to two packed double-precision floating-point values in xmm. |
NOTES:
*Operation is different for different operand sets; see the Description section.
Instruction Operand Encoding
| Op/En | Operand 1 | Operand 2 | Operand 3 | Operand 4 |
| RM | ModRM:reg (w) | ModRM:r/m (r) | NA | NA |
Description
Converts two packed signed doubleword integers in the source operand (second operand) to two packed double-
precision floating-point values in the destination operand (first operand).
The source operand can be an MMX technology register or a 64-bit memory location. The destination operand is an
XMM register. In addition, depending on the operand configuration:
is, the x87 FPU top-of-stack pointer is set to 0 and the x87 FPU tag word is set to all 0s [valid]). If this
instruction is executed while an x87 FPU floating-point exception is pending, the exception is handled before
the CVTPI2PD instruction is executed.
x87 FPU exceptions.
In 64-bit mode, use of the REX.R prefix permits this instruction to access additional registers (XMM8-XMM15).
Operation
DEST[63:0] ← Convert_Integer_To_Double_Precision_Floating_Point(SRC[31:0]);
DEST[127:64] ← Convert_Integer_To_Double_Precision_Floating_Point(SRC[63:32]);
Intel C/C++ Compiler Intrinsic Equivalent
CVTPI2PD:
__m128d _mm_cvtpi32_pd(__m64 a)
SIMD Floating-Point Exceptions
None
Other Exceptions
| See Table 22-6, “Exception Conditions for Legacy SIMD/MMX Instructions with XMM and without FP Exception,” in |
| the Intel® 64 and IA-32 Architectures Software Developer’s Manual, Volume 3B. |
| CVTPI2PD—Convert Packed Dword Integers to Packed Double-Precision FP Values |


public class UIRobot
extends totalcross.lang.Object
Vm.interceptSpecialKeys(new int[]{SpecialKeys.FIND}); Settings.deviceRobotSpecialKey = SpecialKeys.FIND;You should set it at the application's constructor. When this key is pressed, it opens a window with three options: record, playback and cancel. Clicking on the "record" button opens another window asking for the robot's name. Type the name and press "Start record" to start recording. Do the events smoothly and slowly. When done, press the special key again. Clicking in the playback button opens a screen with a list of recorded robots. After selecting the robots, press one of these buttons:
if (event.type == UIRobotEvent.ROBOT_FAILED || event.type == UIRobotEvent.ROBOT_SUCCEED) { try { File f = new File(Settings.appPath+"/robot.log",File.CREATE_EMPTY); totalcross.lang.String s = event.type == UIRobotEvent.ROBOT_FAILED ? "FAILED" : "SUCCEED"; f.writeBytes("Robot "+UIRobot.robotFileName+" "+s+". Running time: "+UIRobot.totalTime); f.close(); } catch (Exception e) {e.printStackTrace();} }
SpecialKeys
,
UIRobotEvent
| Modifier and Type | Field and Description |
|---|---|
static boolean |
abort
Set to true to abort the run of the current UIRobot.
|
static int |
IDLE |
static int |
PLAYBACK |
static int |
RECORDING |
static String |
robotFileName
The filename of the running robot.
|
static int |
status |
static int |
totalTime
The amount of time since the robot started.
|
| Constructor and Description |
|---|
UIRobot()
Constructs a new UIRobot and opens the user interface.
|
UIRobot(String robotFileName)
Constructs a new UIRobot and starts the playback of the given file.
|
| Modifier and Type | Method and Description |
|---|---|
void |
addUIRobotListener(UIRobotListener listener)
Adds a listener for UIRobot events.
|
void |
onEvent(int type,
int key,
int x,
int y,
int modifiers) |
void |
removeUIRobotListener(UIRobotListener listener)
Removes a listener for UIRobot events.
|
void |
stop() |
public static final int IDLE
public static final int RECORDING
public static final int PLAYBACK
public static int status
public static boolean abort
public static String robotFileName
public static int totalTime
public UIRobot() throws totalcross.lang.Exception
totalcross.lang.Exception
public UIRobot(String robotFileName) throws totalcross.lang.Exception
totalcross.lang.Exception
public void onEvent(int type, int key, int x, int y, int modifiers)
public void stop() throws totalcross.lang.Exception
totalcross.lang.Exception
public void addUIRobotListener(UIRobotListener listener)
UIRobotListener
public void removeUIRobotListener(UIRobotListener listener)
UIRobotListener


Pro_Pack : animation¶
ProPack animation module deals with the more complex animation functions such as the animation re-director systems. Recently the r9Anim codebase was shifted over to it’s own module during maintenance for clarity
>>> # import statement for the module via the r9pro decompiler
>>> from Red9.pro_pack import r9pro
>>> r9panim = r9pro.r9import('r9panim')
This module is extensions to the main animation support through the Red9 StudioPack and requires the StudioPack codebase to run
Main Classes
Anim_Redirect ([parent]) |
Red9 Animation ReDirector UI class |
AnimPointCloud (nodes[, filterSettings, …]) |
Utilises the AnimPointCloud to allow animation to be re-directed via guide and reference meshes, generates a spline based guide that you can edit to redirect animation around a scene and because it uses the pointCloud setups nothing is bound to the animation data itself. |
Anim_Transfer ([mrig]) |
Main Animation Transfer class for bouncing data too and from FBX to the Red9 Rig |
Pro_To_Bnd_UI ([files, standalone, …]) |
Pro_to_BND : Main UI for animation transfer from FBX/ MayaRig to a Red9 binder rig |
-
animationUI_raise
(tab=2)¶ raise the StudioPack’s AnimationTools UI and set the current tab
-
track_to_locator
(nodes=None, timerange=True)¶ for each nodes create a locator named accordingly and track it over the selected time
Parameters: - nodes – nodes to track, if not passed in them we use the selected objects
- timerange – do we track timerange or not, uses the same Red9 timerange handler as everything else
-
playback_performance
(iteration=3)¶ a simple performance checker to test actual framerate rather than using the frameRate HUD with isn’t accurate
-
parallel_eval_freeze
(nodes=[], hierarchy=True, state=True)¶ mute the given nodes[] hierarchy from processing in the evalGraph during parallel evaluation & playback
Parameters: - nodes – root of the hierarchies to mute
- hierarchy – process full hierarchies of the given nodes
- state – bool, state of the eval, True : frozen in parallel, False : evaluated in parallel
Note
as of 2018 this is no longer needed due to Autodesk optimizations
-
parallel_eval_unfreeze_all
()¶ unfreeze all nodes in the scene so everything processes during parallel evaluation & playback
Note
as of 2018 this is no longer needed due to Autodesk optimizations
-
get_valid_filter_preset
()¶ Get the currently set preset from the red9config file, this is generated from the AnimationUI. If the last selected preset no longer exists on disc then we default to the PROJECT_DATA.data.pose_basePreset var
-
offset_skeleton_to_frm
(start_frm, rootjnt=None, jnts=[], set_timeline=False, allow_ref=False, bounds_only=True, decimals=-1, *args, **kws)¶ quick func to offset all the animation data on a skeleton so that it starts at the given frame.
Parameters: - start_frm – the frame we want the skeletal animation to start at
- rootjnt – the root of the skeleton we want to process. This can also be a list of rootjnts / jnts and we simply process all child jnts+rootjnts
- jnts – [] this is a list of specific joints to process rather than passing in just the rootJoint and filtering for all child joints
- set_timeline – if True we also reset the playback timeranges in Maya to match the new start and end times
- allow_ref – if True we allow referenced animCurves into those analysed, used by some of the Anim_Transfer code
- bounds_only – if True we offset the timeranges via the key bounds, first and last key times, else we look at the changing key values to find the actual animated bounds via keyValue changes, we then offset these values. This is crucial is you have static baked frames at the front on an animation that you’re wanting to ignore.
- decimals – if not -1 (default) then this is the round(x, decimals) factor used in the calculations
Returns: [offset, newStart, newEnd]
Note
the anim range is calculated ONLY from the translate and rotate data, we ignore scale and all unitless data
-
wire_blends_to_jntattrs
(blends, jnt=None, parent=None, range=1, mSystem=None, basewire='blendTargetWeight')¶ wire given blendshapes to a driver joint with each channel mapped as a connected attr, one jnt per blend node
Parameters: - blends – blendShapes we want to create mapped joints for
- jnt – if given we add attrs per blendTarget to this joint, else we create a fresh joint to take the mapping
- parent – re-parent the joint after completion to this node
- range – if not 1 then we connect the attrs up via a multipleDivide node, allowing blend value of 1 to be mapped to a new max to reduce any compression further down the line
- mSystem – if given wire the new jnts to the mSystem so we can verify them later. Wired as %s_%s % (basewire, blend) where basewire is the arg passed in, default is ‘blendTargetWeight’
- basewire – name used both as the base name for the jnt and the mSystem base wire of the jnts created
-
wire_blends_to_standin_mesh
(blends, target_mesh=None, parent=None, mSystem=None, basewire='blendTargetWeight')¶ wire given blendshapes to a simple poly plane with each channel mapped as a connected attr, one mesh per blend node. This is aimed at Unity output, mapping complex facial blend systems to a simple poly object to optimize export outputs
Parameters: - blends – blendShapes we want to create mapped joints for
- target_mesh – if given we add attrs per blendTarget to this joint, else we create a fresh joint to take the mapping
- parent – re-parent the joint after completion to this node
- mSystem – if given wire the new jnts to the mSystem so we can verify them later. Wired as %s_%s % (basewire, blend) where basewire is the arg passed in, default is ‘blendTargetWeight’
- basewire – name used both as the base name for the mesh and the mSystem base wire of the jnts created
-
hik_source_code
()¶ ensure that HIK is loaded and the core code sourced
-
hik_get_characters
()¶ Returns: list of strings with all hik nodes in the scene
-
hik_get_character_from_jnts
(joints)¶ Returns: the HIK character node that these joints are connected too
-
hik_set_character_input
(hik, sourcehik)¶ connect the source driving input of the given hik node to the sourcehik node - by-passing the UI
-
hik_open_ui
()¶ Open hik UI
-
hik_ui_set_character
(hikNode)¶ Parameters: hikNode – string name of the hik character to be set as current character on hik UI
-
hik_ui_get_character
()¶ Returns: string name of the current hik character
-
hik_ui_get_source
()¶ Returns: string name of the current hik source
-
hik_ui_select_definitionTab
()¶ select DefinitionTab on hik UI as current tab
-
hik_ui_set_source
(hikNode)¶ Parameters: hikNode – string name of the hik character to be use as source
-
hik_get_binder_property_node
(mrig)¶ from a given mRig return the HIK property node / retarget setup node
-
r9anim_browser_actions
(r9anims, open=True, importToCurrent=False, mayafile=False, export=False, playblast=False, _logger=None, clean_current=False, respect_framerate=True, *args, **kws)¶ main wrapper to manage the file browser functionality so we have 1 place to maintain things
The key to this is the r9Anim file must have been generate by a reference rig. This information is stored in the file and if found we restore the reference and load the r9anim onto it before passing the rig over to the exporter to manage the various output formats. The settings for these are respected from the main Red9 ExportUI > Settings data, store in the R9PRO>settings object files
Parameters: - r9anims – list of r9anim files to process
- open – are we opening each r9anim into a fresh maya scene?
- importToCurrent – if True we try and import the data onto the current mrig in the scene, cutkeys first This is ideally assuming a single mRig in the current scene
- mayafile – restore the r9anim and save a Maya file
- export – restore the r9anim and run the exporter on it (usually FBX)
- playblast – restore the r9anim and create a Playblast from it
- clean_current – if True we delete all audio and export nodes between files (importCurrent only) This is ideally assuming a single mRig in the current scene
-
merge_all_anim_layers
(nodes=[], timeline_only=True, verbose=False)¶ << test method - merge animLayers via the r9anim resampler >>
This uses the new r9Anim frame sampler to gather keyframe data and then reload it to the animLayer members. It’s hard coded at the moment to remove ALL animLayers which the given nodes are members, regardless of other node membership. If no nodes are passed we find all animLayer members and sample those.
Parameters: - nodes – nodes to merge down, default is [] as we let the code find all objects which are members of an animLayer
- timeline_only – True by default, this dictates the bake range, if False we use the full extent of all the animCurves else we use the current timerange
>>> from Red9.pro_pack import r9pro >>> r9panim = r9pro.r9import('r9panim') >>> r9panim.merge_all_anim_layers(timeline_only=True, verbose=True)
-
bake_nodes
(nodes)¶ << test method only - bake nodes via the r9anim resampler >>
This uses the new r9Anim frame sampler to gather the data and then reload it. It’s hard coded at the moment to remove all animLayers which the given nodes are members, regardless of other node membership
Parameters: nodes – nodes to merge down
-
class
Anim_Redirect
(parent=None)¶ Bases:
PySide2.QtWidgets.QMainWindow
,Ui_MainWindow
Red9 Animation ReDirector UI class
-
closeEvent
(event)¶ close event to push the sizes to the settings object
-
staticMetaObject
= <PySide2.QtCore.QMetaObject object>¶
-
-
class
AnimPointCloud
(nodes, filterSettings=None, meshes=None, time=(), prioritySnapOnly=True, *args, **kws)¶ Bases:
Red9.core.Red9_PoseSaver.PosePointCloud
Utilises the AnimPointCloud to allow animation to be re-directed via guide and reference meshes, generates a spline based guide that you can edit to redirect animation around a scene and because it uses the pointCloud setups nothing is bound to the animation data itself.
This relies heavily on the PosePointCloud base class. This means we can hook directly into the renderMeshes variable to find the Geo for reference
>>> from Red9.pro_pack import r9pro >>> r9panim = r9pro.r9import('r9panim') >>> >>> ppt=r9proAnim.AnimPointCloud(nodes='MRig:Locomotion_Root_Ctrl') >>> ppt.settings.read('Red9_DevRig.cfg') >>> ppt.time=r9Anim.timeLineRangeGet() >>> >>> # build the cloud reference, select the point to use as root reference >>> ppt.build() >>> >>> # apply any offsets you may have made >>> ppt.apply()
- self.curveSamples = 10 : the number of cv’s samples on the ground curve
- self.meshReference = True : add the visual mesh reference
- self.attachMotionPath = True : build the motionPath editable setup or not
- self.buildHandles=False : whether to build the additional cv handle nodes
- self.projectedRootTrans=True : project the PPT root node pivot to world plane translates
- self.projectedRootRots=True : project the PPT root node pivot to world plane rotates
- self.pathProjectY=True : project the MotionPath to the world plane at Y=0
- self.pathAllowHeightVariant=True : allow the path to track height variants
- self.motionFollowScale=10 : simple scale of the follow object on the path
- self.fractionMode=True : whether to use the fractionMode on the motionPath built
- self.step=1 : frame step between compensation keys
- self.smartbake=False : sparse keyed based on the keys currently on nodes being cached
- self.smartbake_ref=[] : optional separate nodes to use for the smartBake key extraction process
Parameters: - nodes – nodes or the root node of the hierarchy to process
- filterSettings – specific filterSettings object to pass in, else we bind one to settings internally
- meshes – meshes used as reference Geo when constructing the pointCloud nodes
- time – timerange to process, if not given we run the r9Anim.timeLineRangeGet() to pull it from the scene
- prioritySnapOnly – only make ppc points for the filterPriority nodes, this is default for speed
-
syncdatafromCurrentInstance
()¶ Overloaded from DataMap upgrade the sync call to include anim specific data
-
makeClusterControls
()¶ if we’ve built the motionPath then this will add implicitSphere’s as controllers per cv rather than animators having to drop to component mode to edit the path cv’s directly
-
saveClusterPose
()¶ store a cluster control pose
-
loadClusterPose
(percent=100)¶ load a stored cluster control pose, only valid if we’ve built the cluster control setup
-
getClusterCtrls
()¶ find the child cluster controls if generated, return is sorted by cv index
-
selectClusterCtrls
()¶
-
groupClusterControls
(mode='flat')¶ group the cluster controls in a chain
Parameters: mode – ‘flat’ ‘start’ ‘end’ where:
- flat = the grouping is flat under the HandleControls group, all cv controls are independant of eachother
- start = the cv controls are grouped under eachother such that cv1 is the parent of cv2, cv 2 is the parent of cv3 etc
- end = the cv controls are grouped under eachother such that cv1 is the child of cv2, cv 2 is the child of cv3 etc
-
straightenCurve
(blendV, skipstart=True)¶ blend the rotateY values such that when in a chain, the curve is straightened out
-
generateAnimationReference
()¶ This is the main call to generate the reference spline track to represent the animation over time and add reference meshes for start and end frames. If buildHandles flags are set this will also generate the motionPath and the control handles / cluster grouping setup. This is the core of the redirect setup!
-
generateVisualReference
()¶ Overloaded from DataMap modified reference building code to deal with the animation setup
-
snapPosePntstoNodes
()¶ << Time enabled function >> snap each pntCloud point to their respective Maya nodes over time. This call is used in the UI to ‘ReSync’ the anim cloud if you’ve modified the tracking point and need to sync the cloud to the modified track point
-
snapNodestoPosePnts
()¶ << Time enabled function >> snap each MAYA node to it’s respective pntCloud point over time.
-
is_live
()¶ are we already in live mode, basically are the ppt_Nodes the targets for the ctrls in the rig?
-
delete_live
()¶ get the pairblend nodes added when we went live
-
make_live
()¶ test setup where we bind the controllers back to the cloud, making the re-direct live but generating pairblends
-
build
(rootReference=None, raw=False)¶ Main build call to generate the system
Parameters: - rootReference – the node used for the initial pivot location
- raw – Build the cloud system but do NOT snap the cloud to the animation data
-
apply
()¶ pull data back from the cloud and snap the animationData to track
-
get_new_mrigs
(old_list, new_list)¶ substract old_tag_list items from new_tag_list and return the difference
Parameters: - old_list – list of mRigs
- new_list – list of mRigs
-
class
Anim_Transfer
(mrig=None)¶ Bases:
object
Main Animation Transfer class for bouncing data too and from FBX to the Red9 Rig
-
mrig
¶ Returns: first MetaRigs found in the scene
-
get_data_from_mrig
(mrig=None)¶ propagate the data from the mRig
-
binder_root
¶ This uses the HIK_BND.Reference jnt that was marked via the HIK wires
- TODO: do we look at walking UP the hierarchy to find any parent joints
- that aren’t part of the HIK definition???
-
get_binder_joints
()¶ Returns: list of all joint names in binder skeleton
-
set_timerange_from_binder_joints
(jnts=[])¶ set scene timeranges using the animation ranges for binder joints animation
Parameters: jnts – [] if given these are the joints to find the animated range from, if not given we use the self.binder_joints array
-
set_timerange_from_rig_ctrls
(timeline=False)¶ set the current timeranges from the extent of the animation found on the mRig controllers
Parameters: timeline – set the Maya timeranges as well as the internal start/end data
-
delete_exportloops
()¶ delete all export loops currently connected to the mRigs ExportTag
-
delete_animation_on_binder_skeleton
()¶ delete all animation on binder skeleton
-
add_export_loop
(loopname=None)¶ add an export loop to mRigs ExportTag, the timeranges for this are taken from the internal start and end frames setup during the transfer
Parameters: loopname – name for export loop
-
openbinderfile
(binderfile=None)¶ open a character binder file in current Maya session
Parameters: binderfile – path to character binder file if not bound to the class instance Returns: path to character binder file
-
importbinderfile
(binderfile=None)¶ reference a character binder file in current Maya session
Parameters: binderfile – path to character binder file if not bound to the class instance Returns: path to character binder file
-
scenename
¶ current Maya sceneName
-
scenebasename
¶ base name of the Maya scene less the extension
-
scenedir
¶
-
propagate_timecode
(skelroot)¶ Add and bind Timecode up to the root node assuming that the rig has the Timecode attr system
-
rigs_to_fbx
(mayafiles, prefix='', bindscales=True)¶ << Deprecated : base call now moved into the ExportBase mClass for better control >>
wrap over multiple files for processing, also allows us to subclass this and wrap in any further management required at the client level.
Parameters: - mayafiles – maya files to convert to fbx
- prefix – simple prefix added to the scenename on output
;param bindscales: do we bind scales during the process or ignore them?
-
rig_to_fbx
(startFrame=None, endFrame=None, filepath=None, prefix='', export=True, debug=False, bindscales=True, bindtransforms=True, method='connect', export_skl=None, blend_map=False, blend_maprange=1, respect_attrlocks=True, *args, **kws)¶ << Deprecated : base call now moved into the ExportBase mClass for better control >>
from a given SINGLE Red9 Puppet Rig output a clean FBX skeleton anim via a bound duplicated skeleton method
Parameters: - startFrame – IF export=True, start frame of the fbx output
- endFrame – IF export=True, end frame of the fbx output
- filepath – IF export=True, filepath to write fbx output too
- prefix – IF export=True, simple prefix added to the scenename on fbx output
- export – the main export call to fbx, if this is False then we just prep the file for export, without calling the FBX output
- debug – IF export=True, run all the binding process but not the fbx exporter or the cleanups : IF export=True
- bindscales – do we bind scales during the process or ignore them?
- bindtranforms – True by default, bind the duplicated skeleton’s rot / trans for the driver data
- method – method used to bind the base skeletons together : ‘connect’ or ‘constrain’
- export_skl – if given this is the root of the skeleton to process, else we use the self.mrig.exportSkeletonRoot wire
- blend_map – if True we create a mapper joint, named ‘blendTarget_***’ (name of each blendShape found in the history of mrig.renderMeshes). Each target attr on these blends gets mapped to a new attr on the created joint and is connected and driven by the blend data. This is so we can extract blend anim data direct to mapped joints for easy, clean fbx outputs
- blend_maprange – default=1, if range is more than 1 then we add in a multiplyDivide node between the connection so that the jnt attr is mapped to a larger range. This is to try and avoid compression in engine of fine facial data outputs
- respect_attrlocks – if False we force unlock all transforms prior to the bind, else we maintain the lock status of joints form the original skeleton
-
bake_hi
(root)¶ << Deprecated : base call now moved into the ExportBase mClass for better control >>
simple bake hierarchy from a given root node, used to bake the data to the clean skeleton hierarchy that we ultimately output to FBX. This code also runs a filterCurve call on the baked data to reduce it’s footprint
Parameters: root – string: root node of the hierarchy
-
clean_joint_hi
(root)¶ Delete everything that is not a joint from a hierarchy and set display attrs of the joints to default values
Parameters: root – string: root joint of the hierarchy Returns: list : list of strings, names of deleted nodes from the hierarchy
-
fbx_to_binder
(fbxfiles, binderfile=None, usecurrentscene=False, bake=False, runFilter=True, useTakeData=True, fbx_mode='update_anim', mayafile=True, r9anim=False, import_bnd=False, hikmapping=None, fbx_take=1, spine_fit=False, locomotion_track=False, whole_frame=False, maintain_fps=False, force_start_frm=None, set_timeline=True, hik_process_yup=True, tpose_load=False, tpose_path='', tpose_frm=0, tpose_forcelock=False, *args, **kws)¶ - Multiple FBX >>> Binder >>> r9Anim / Maya files / Playblast
fbx_to_binder is the Main FBX > Binder call, (PRO_TO_BND) responsible for all of the Anim Remapping done within the tool. This takes a list of fbx files and one by one remap’s the animation data over to the given binder file. The binder file (BND) should be created through the PRO: Animation Binder2 UI which is an updated version of the original AnimBinder created for the Autodesk MasterClass back in 2013. The process allows for a number of mapping method, the update and reference_copy modes rely on the source skeleton of the BND file being the same as the incoming fbx skeletal data. The connect_hik modes allow for some very complex mapping, utilizing HIK under the hood to do the bulk of the remap then our custom management to enhance that process.
The new “connect_hik + load_hik” is the most complex and powerful mode we’ve added to date. This can can base fbx skelatal animation which has NO HIK characterization on it, and add on the fly an appropriate TPose, create the HIK nodes and then link those to the BND file’s source. Designed originally to be able to transfer XSENS raw export data directly to a binder without worrying about HIK or how to map the incoming data!
Note
The actual maya file and r9Anim file generation flags are generally NOT used during the Pro_To_BND call, instead during that process we pass the output flags to the ExportManager class to deal with. This is because the exporter calls also manage source-control and all client side specific file management. The file handling in this func is base level only, generating the files as per the fbx filepath.
Parameters: - fbxfiles – list of fbx files to transfer. Note that we generally run this on singular file basis and let the Pro_to_BND deal with the file outputs at the client level, allows us to modify the export management on a case by case basis and overload as required
- binderfile – BND binder file to use in the transfer
- usecurrentscene – if true use the current scene, which then expects a binder file to be already loaded
- bake – do we bake the results to the Red9 puppet and clean-up after our-selves? if r9anim is True then this is forced on
- runFilter – do we run the curve filter on the baked animation to try and optimise the results, removing static data etc
- useTakeData – if True use the internal fbx take[1]’s timeSpan when setting the ranges: True by default (29/12/19)
- fbx_mode –
fbx management mode used to get the fbx data over to the bnd skeleton
- ’update_anim’ : uses the FBX file import’s UpdateAnimation Only flags - issue here is that if the fbx file has namespaces then the update fails
- ’reference_copy’ : uses a reference technique, we reference the fbx file in, then copy the anim data directly using the r9Animfuncs to by-pass FBX import limitations
- ’connect_hik’ : references the fbx in then inspects the loaded data for a hik character, if found the code plugs this into the source of our BND hik node
- ’connect_hik + load_hik’ : same as the connect_hik call with 1 crucial exception, this also loads / builds the hik characterization on the incoming fbx skeleton from a given T-Pose.pose file, by-passing the need for the fbx’s to have HIK characterizations
- mayafile – save the resulting Maya files out. This is a flag so that if this func is being called as part of another process we can choose if we want the Maya file or Not, in the ProToBnd the maya file is managed by the exporter wrap directly and this is not called
- r9anim – export r9Anim filed out. In the ProToBnd the r9Anim file is managed by the exporter wrap directly and this is not called
- import_bnd – do we Open or import the binder file
- hikmapping – IF the fbx_mode==’connect_hik’ then this is an additional file that can be passed in to change the HIK properties on the fly, allowing us to use the same binder file but with different HIK remapping characteristics
- fbx_take – the fbx take to use in the process, default is 1
- spine_fit – if True and bake we run the MetaRig SplieIK matching fit calls to better align the splineIK systems with the original data
- locomotion_track – if True and bake we run the Locomotion tracker on the mRig to align the locomotion ctrl to the ground plane, tracked to the hips
- whole_frame – if True we do math.floor(startFrame) math.ceil(endFrame) on the timeranges baked out to ensure that subframes have a whole frame clamp, this does NOT effect the export ranges created, those will be true to the fbx internal take data
- maintain_fps – if True we maintain the incoming Binder scenes fps, else we allow FBX to manage it from the incoming fbx file’s fps
- force_start_frm – if not None we look at the internal fbx ranges and reset the animation data to start at the given frame, allowing the animation to be force loaded at frame zero for example
- set_timeline – set the playback timeranges, default is True
- hik_process_yup – if True then the FBX HIK connect calls will all be done in a converted Y-up Maya environment and the world axis set back after processing
- tpose_load – if fbx_mode = ‘+ load_hik’: this tells the code to load the TPose transform data from the given tpose file, else we assume the skeleton is already at TPose at a given load_frm
- tpose_path – if fbx_mode = ‘+ load_hik’: path to the required tpose (.pose) file. This must have been created in the RigManager, on a skeleton with a valid HIK characterization, and saved as a skeleton pose
- tpose_frm – if fbx_mode = ‘+ load_hik’ & tpose_load=False, this is the frame in the incoming fbx file that we expect the skeleton to be at t-pose. systems like XSENS allow you to export with TPose at frame 0 by default and this system was initially setup for that data
- tpose_forcelock – if fbx_mode = ‘+ load_hik’ when creating the HIK definition this by-passes the checkcharacterization, locking the HIK node regardless of errors in it’s status
Note
the spine_fit and locomotion_track args both require a Full Red9 PuppetRig or at least a fully setup Pro_MetaRig system. Please contact us for more details!
-
rig_to_binder
(animfiles, binderfile=None, usecurrentscene=False, output_dir=None, bake=False, runFilter=True, xfer_mode='connect_hik', run_func=None, mayafile=True, r9anim=False, import_bnd=False, hikmapping=None, spine_fit=False, locomotion_track=False, maintain_fps=False, *args, **kws)¶ - Multiple MayaFiles : PuppetRig >>> Binder >>> r9Anim / Maya files / Playblast
Main Maya Animation File > Binder call, (PRO_TO_BND) for animation data on the Red9 Puppet. This requires a properly published Red9 BiPedal Puppet rig and an associated BND binder file.
This loads the binder file, references the Maya anim file, and transfers the data either via HIK plugs (default) or by bindNodes calls. This also transfers all exportLoops across and all AudioGrp data
Note
The actual maya file and r9Anim file generation flags are generally NOT used during the Pro_To_BND call, instead during that process we pass the output flags to the ExportManager class to deared9l with. This is because the exporter calls also manage source-control and all client side specific file management. The file handling in this func is base level only, generating the files as per the input filepath.
Parameters: - mayafiles – [] list of animation files to transfer. Note that we generally run this on singular file basis and let the Pro_to_BND deal with the file outputs at the client level, allows us to modify the export management on a case by case basis and overload as required
- binderfile – correctly setup Red9_Puppet_BND binder file to use in the transfer
- usecurrentscene – if true use the currently loaded scene, which then expects a binder file to be already loaded
- output_dir – if given we re-direct the outputs to a new folder, remember we’re loading maya files so we need to do something to stop the process over-writing the input files. if not given we append the scene name with “_converted”
- import_bnd – do we Open or import the binder file
- bake – do we bake the results to the Red9 Puppet and clean-up after our-selves? if r9anim is True then this is forced on
- runFilter – do we run the curve filter on the baked animation to try and optimise the results, removing static data etc
- xfer_mode –
transfer mode used to push the animation data over to the bnd skeleton from the incoming PuppetRig animation file
- skeletal_bind : we reference the anim file in then directly bind it’s skeleton hierarchy to the bnd files source skeleton using the r9Animfuncs
- skeletal_bind_hybrid : runs the ‘skeletal_bind’ setup bit then also copies all animation from all mRig controllers NOT currently bound
- connect_hik : references the anim in then inspects the loaded data for a hik character, if found the code plugs this into the source of our BND hik node
- connect_hik_hybrid : on top of the ‘connect_hik’ method this also copies all animation from all mRig controllers NOT currently bound
- run_func – callable, if given we run this function after the bind is done and before the bake is hit, allowing for specific modifications if required, note that the func is passed the instance of the Transfer class object run_func(self)
- mayafile – save the resulting Maya files out. This is a flag so that if this func is being called as part of another process we can choose if we want the Maya file or Not, in the ProToBnd the maya file is managed by the exporter wrap directly and this is not called
- r9anim – export r9Anim filed out. In the ProToBnd the r9Anim file is managed by the exporter wrap directly and this is not called
- hikmapping – IF the fbx_mode==’connect_hik’ then this is an additional file that can be passed in to change the HIK properties on the fly, allowing us to use the same binder file but with different HIK remapping characteristics
-
spine_fit_wrap
(timerange, mode=1)¶ wrap for the spine fit call to keep things clean
-
bakebinder
(**kws)¶ generic call to bake the binder data down to the rig and clean-up
-
optimize_binder
(removeSrc=True, removeMeshes=True, removeFacial=True)¶ optimize and strip back the BND / Rig file if we’re processing fbx in bulk and NOT saving Maya files or exporting, just saving r9Anims out. This massively saves on the initial BND file reload for each fbx processed
Parameters: - removeSrc – remove all traces of the SRC file from the BND just leaving the base core rig behind
- removeMeshes – simply delete all meshes as generally they’re not important in anim transfer and slow the file load hugely
- removeFacial – another huge hit on the BND file load so delete it all if found
-
-
class
Pro_To_Bnd_UI
(files=None, standalone=False, process_mode='fbx', parent=None, logger=None)¶ Bases:
PySide2.QtWidgets.QMainWindow
,Ui_mw_fbx_to_bnd
Pro_to_BND : Main UI for animation transfer from FBX/ MayaRig to a Red9 binder rig
-
closeEvent
(event, *args, **kws)¶ close event to push the sizes to the settings object
-
buildpresets
()¶ populate the binder file presets comboBox from the Project object if set
-
build_hikpresets
()¶ fill and manage the HIK combo preset box
-
setui_feedback
()¶ populate ui settings from the users last self.settings data
-
push_settings
()¶ pull the ui state back to the settings file, called prior to the main process call
-
pull_settings
()¶ push the settings back to the UI
-
setbinder
(browse=True, *args)¶ set the binder file from the browse button or the change of the preset combo
-
set_tpose
()¶ set the new TPose management filepath
-
open_binder_ui
()¶
-
setusecurrentscene
()¶
-
setbake
()¶ manage the bake flag and warn about the r9Anim outputs
-
setr9anim
()¶ set the r9Anim settings
-
set_mode
(mode, *args)¶ set the processing mode
-
set_mapping_method
()¶
-
setimportbnd
()¶
-
setupLogFile
()¶ creates a log file for the anim transfer code
-
writeToLog
(line)¶ func to call to write the supplied data to the log file. Closes it every time, because the batch can kill maya outright.
-
transfer
()¶ Main transfer wrap from the UI, including the export call
-
staticMetaObject
= <PySide2.QtCore.QMetaObject object>¶
-
-
class
Interpolation
¶ Bases:
object
Generate interpolation values :param str_value: attr value of first keyframe :param end_value: attr value of second keyframe
-
space
¶ Returns: return the value between str_value and end_value
-
easeinquad
(factor)¶ Parameters: factor – factor = current key iteration / by the number of keys between str_value and end_value Returns: current animation value
-
easeoutquad
(factor)¶ Parameters: factor – factor = current key iteration / by the number of keys between str_value and end_value Returns: current animation value
-
easeinoutquad
(factor)¶ Parameters: factor – factor = current key iteration / by the number of keys between str_value and end_value Returns: current animation value
-
easeincubic
(factor)¶ Parameters: factor – factor = current key iteration / by the number of keys between str_value and end_value Returns: current animation value
-
easeoutcubic
(factor)¶ Parameters: factor – factor = current key iteration / by the number of keys between str_value and end_value Returns: current animation value
-
easeinoutcubic
(factor)¶ Parameters: factor – factor = current key iteration / by the number of keys between str_value and end_value Returns: current animation value
-
easeinquart
(factor)¶ Parameters: factor – factor = current key iteration / by the number of keys between str_value and end_value Returns: current animation value
-
easeoutquart
(factor)¶ Parameters: factor – factor = current key iteration / by the number of keys between str_value and end_value Returns: current animation value
-
easeinoutquart
(factor)¶ Parameters: factor – factor = current key iteration / by the number of keys between str_value and end_value Returns: current animation value
-
easeinquint
(factor)¶ Parameters: factor – factor = current key iteration / by the number of keys between str_value and end_value Returns: current animation value
-
easeoutquint
(factor)¶ Parameters: factor – factor = current key iteration / by the number of keys between str_value and end_value Returns: current animation value
-
easeinoutquint
(factor)¶ Parameters: factor – factor = current key iteration / by the number of keys between str_value and end_value Returns: current animation value
-
easeinback
(factor)¶ Parameters: factor – factor = current key iteration / by the number of keys between str_value and end_value Returns: current animation value
-
easeoutback
(factor)¶ Parameters: factor – factor = current key iteration / by the number of keys between str_value and end_value Returns: current animation value
-
easeinoutback
(factor)¶ Parameters: factor – factor = current key iteration / by the number of keys between str_value and end_value Returns: current animation value
-
easeinelastic
(factor)¶ Parameters: factor – factor = current key iteration / by the number of keys between str_value and end_value Returns: current animation value
-
easeoutelastic
(factor)¶ Parameters: factor – factor = current key iteration / by the number of keys between str_value and end_value Returns: current animation value
-
easeinoutelastic
(factor)¶ Parameters: factor – factor = current key iteration / by the number of keys between str_value and end_value Returns: current animation value
-
easeoutbounce
(factor)¶ Parameters: factor – factor = current key iteration / by the number of keys between str_value and end_value Returns: current animation value
-
easeinbounce
(factor)¶ Parameters: factor – factor = current key iteration / by the number of keys between str_value and end_value Returns: current animation value
-
easeinoutbounce
(factor)¶ Parameters: factor – factor = current key iteration / by the number of keys between str_value and end_value Returns: current animation value
-
easeIncirc
(factor)¶ Parameters: factor – factor = current key iteration / by the number of keys between str_value and end_value Returns: current animation value
-
easeoutcirc
(factor)¶ Parameters: factor – factor = current key iteration / by the number of keys between str_value and end_value Returns: current animation value
-
easeinoutcirc
(factor)¶ Parameters: factor – factor = current key iteration / by the number of keys between str_value and end_value Returns: current animation value
-
easeinexpo
(factor)¶ Parameters: factor – factor = current key iteration / by the number of keys between str_value and end_value Returns: current animation value
-
easeoutexpo
(factor)¶ Parameters: factor – factor = current key iteration / by the number of keys between str_value and end_value Returns: current animation value
-
easeinoutexpo
(factor)¶ Parameters: factor – factor = current key iteration / by the number of keys between str_value and end_value Returns: current animation value
-
easeinsine
(factor)¶ Parameters: factor – factor = current key iteration / by the number of keys between str_value and end_value Returns: current animation value
-
easeoutsine
(factor)¶ Parameters: factor – factor = current key iteration / by the number of keys between str_value and end_value Returns: current animation value
-
easeinoutsine
(factor)¶ Parameters: factor – factor = current key iteration / by the number of keys between str_value and end_value Returns: current animation value
-
-
class
Keyer
(animcurve=None, frame=None, direction=True, samples=1)¶ Bases:
object
-
getkeyframedata
(animcurve_frame)¶
-
goforward
¶
-
gobackward
¶
-
str_frame
¶
-
end_frame
¶
-
str_value
¶
-
end_value
¶
-
time
¶
-
future_keys
¶
-
getselectedkeys
()¶
-
iterselectedkeys
()¶
-
setkeysonselection
(interpolationtype)¶
-
setkeys
(interpolationtype)¶
-


There's been a problem and we are unable to process your request. Please return to the home page.
{{ .Message }}


民間區塊鏈2019區議會選舉
Folk 2019 Hong Kong district council election on blockchain
票站列表和投票統計 List of votebox website and voting statistics
票站列表 List of votebox
選區列表 List of councils


Table of Contents
Blixt Wallet contains three main sections, each one with specific options, features and utilities. The main screen displays the Lightning wallet directly. LN is the main use of this wallet and it will focus that. Also the main action buttons, send and receive, are at the bottom of the screen.
The balance displayed on the main screen represents ONLY the Lightning wallet balance. The on-chain wallet balance is displayed in another section of the app (top drawer menu). You can read the reason why here.
Blixt Wallet Main Features
Neutrino Node
Blixt Wallet connects by default to the Blixt Wallet node to sync the Bitcoin blocks and indexes with Neutrino (BIP 157), but users can also connect to their own Bitcoin node.
It is syncs the entire Bitcoin blockchain (headers and filters) in less than 5 minutes, respecting user privacy. Blixt Wallet does not use any centralized servers for doing transactions, all transactions are broadcast directly from your Blixt Wallet app, into the Bitcoin mempool.
Please note: At this point Blixt Wallet will require some space for this sync on your device, around 1GB of data for block sync and the LN graph (network map).
Full non-custodial LND node
Users can manage their own Lightning channels with an easy interface and enough information shown to have a good and smooth experience.
In the top left drawer menu you can go to Lightning channels and start opening channels with other nodes as you wish. By default, when you first send on-chain funds to a new Blixt Wallet, it will automatically open a channel with those funds to the Blixt Wallet LSP node. You can disable this in settings if you wish.
These LN channels, by default will be un-announced channels (also called private channels). This means that they will not be "visible" by other nodes in the network, only the channel partner will know about it and will route your transactions accordingly through their own channels. Also private channels DO NOT route payments for others.
So practically Blixt is a PRIVATE NODE, to offer you full control of your payment routes in a private way, with the routing costs decided by you based on the peers you connect to. So choose your peers wisely when opening channels.
It's also worth mentioning that you should have at least 2-3 LN channels open in your Blixt Wallet for better availability of routes and also to take advantage of MPP (Multi-Path Payments), a feature that is also available in Blixt Wallet.
You can check in the FAQ page for some recommendations on how and with who to open channels.
Bitcoin On-Chain Wallet
This feature is quite hidden, because it's not the main focus of this app. But it's easy to access it from the top left drawer menu.
Since on-chain transactions aren't used often by LN power users, it's not visible on the main screen. But that's OK, you can use it like a separate wallet where you can manage addresses and see your transaction log. In the future, more functionalities for this on-chain wallet like coin control, RBF (Replace by Fee), etc. could be included.
Right now, the main purpose of this on-chain wallet is to manage the opening and closing of LN channels and not for regular day to day payments using on-chain transactions.
To access the onchain wallet, go too top left drawer and select "Bitcoin onchain", then you will see these screens.
As you can see in the transaction log, the type of transactions are detailed and indicate for what were used: (A) deposit, (B) open channel, (C) close channel.
See a more detailed explanation about using the Blixt on-chain wallet in the Guides page.
Bitcoin Lightning Wallet
This is located on the main screen, as it's the main usage of the app. The balance displayed is only for the LN wallet and does NOT contain the on-chain wallet balance.
It has a simple and easy to use interface and offers all the necessary options to receive and send sats over Lightning Network.
Users can easily switch the units displayed for the balance by simply tapping on the balance. Also it displays the balance in the local fiat currency sourced from CoinGecko and Blockchain.com.
Blixt Wallet Options (settings menu)
This section will describe each option in the "Settings" menu for a better understanding.
There are specific sections in this menu: General | Wallet | Security | Display | Bitcoin Network | Lightning Network | Miscellaneous | Experiments | Debug
General section
Name
This option (NameDesc) allows the user to send a specific name in the payment details, but only if it's desired and necessary, is completely optional. It can be any name and is stored only on the device.
When you will be ready to pay an invoice or send to a Lightning Address / LNURL, you will see a tick box (off by default) where you can choose to send that name in the invoice memo. This could be very useful sometimes.
IT IS NOT the LN node alias! Blixt Wallet does not use a node alias, it's a private LN node.
Language
The default language is English. Other available languages are: Spanish, German, French, Swedish, Klingon, Dutch, Portuguese, Russian, Vietnamese. More languages will be available soon.
Push Notifications
This is a simple function that notifies the user with messages about transactions and channel events when the app is running in background.
Check clipboard for invoices
When this option is activated, Blixt Wallet will automatically check the device's clipboard for invoices when the app is opened and will bring up the payment screen for an easy and simple user experience when making payments.
Save geolocation of transaction
A very useful tool to privately add a note to a transaction with the location where it occurred. Sometimes you can't remember where you were paying and you want to keep track of where you spend money.
This option is totally optional, so if you are worried about your privacy and/or your device could be stolen and you didn't secure it well, you can keep this option disabled. Anyways, the data is ONLY stored locally on the device.
Wallet section
Show mnemonic
This option allows you to make a backup of your 24 words wallet seed. It can be accessed at any time, multiple times. Save those words in a safe place! This is serious, save the seed immediately after you create a new wallet!
Remove mnemonic from device
This option is an extra security measure. After you've made the backup of your seed, you can totally remove it from your device.
Remember: do not use this option if you have not made a backup first!
It can be used in case where you are afraid that your device could be stolen, seized or accessed accidentally by somebody else. Removing the seed from your device doesn't mean it is removing the wallet and LN node, just the seed words. Wallet will work just as usual.
Export channel backup
This is a VERY IMPORTANT feature for your Blixt Wallet. Do not ignore it! It would be used in case of SHTF and you need to recover your funds that remain in LN channels.
When this option is clicked, it will ask you to select a location on your device to save a copy of your Blixt LN static channel backup (SCB).
After it's saved, it is strongly recommended to make a copy of that file (even move it away from the device) into a safer location.
You should keep a copy of this file together with your Blixt seed words, locked in a password manager.
Export this backup EVERY time you open or close a channel. NOT every time you do a transaction. So you don't need to do it very often and it takes just few seconds to save it and move it away from your device.
You also have the option to save Blixt static channel backup into Google Drive, iCloud and/or local storage in your mobile device (later move that file into a safe location, off of your device).
The restore procedure is quite simple: insert your 24 word seed, add the backup file (previously saved into device storage) and click restore. It will take some time to sync and scan all the blocks for your transactions in the past. Your channels will be automatically closed and funds within them returned to your on-chain wallet (see the drawer menu on the top left - On-chain).
Read more about how to restore a LND wallet into Blixt in the Blixt FAQ page.
Security section
Login with PIN code
This a security feature to add a PIN number when the app is opened and protect it from unauthorized access to your device. You will be prompted 2 times to set a personal PIN.
Keep in mind to save it (maybe together with your seed) in a safe place and don't forget it. Blixt Wallet will be impossible to open after that without the PIN. The only way to restore it will be through a full Blixt Wallet restore (seed + channels.backup) by re-installing app. That will involve closing channels, channel closing fees, time and possible stress.
Login with fingerprint
This security feature will prompt you to use your fingerprint in order to open Blixt Wallet and protect it from unauthorized access. Face ID is also available for iOS devices.
Display section
Fiat currency
You can set a local fiat currency here. You can switch the primary unit displayed on the main screen between fiat and bitcoin units by tapping on the balance. The fiat exchange rate is sourced from CoinGecko and Blockchain.com.
Bitcoin unit
This option lets you choose your preferred bitcoin unit (BTC, bits, sats, etc.).
On-chain explorer
This lets you choose which blockchain explorer to use when viewing more info about on-chain transactions. The default is the mempool.space explorer. You can choose between: Mempool, Blockstream, Oxt, Blockchair, or custom (your own node for example).
Screen transitions
Activate/deactivate a smooth animated transition of screens using Blixt.
Bitcoin Network section
Bitcoin Node
You can set a specific Bitcoin node to sync blocks from. It can be your own node or any other Bitcoin node that supports BIP 157 (Neutrino sync).
By default, the Bitcoin node is set to "node.blixtwallet.com", but this field can also be left blank and Blixt Wallet will connect with any available node.
The new version of Blixt v0.6.x comes with LND 0.15.x, which also supports Tor v3 onion addresses for Bitcoin nodes. This allows you to use your own personal node that runs behind Tor and doesn't have a clearnet IP/domain set, or any other private node behind a Tor address.
Enable receiving on-chain via Taproot (P2TR)
This option is available thanks to support in LND v0.15 for Taproot addresses. Blixt only supports Taproot addresses from v0.6.x and up.
Taproot (P2TR) is a new address type for Bitcoin on-chain addresses with new functionalities and privacy options. Read more about Taproot here.
Scheduled chain sync
This option is activated by default and it's best to keep it like that. It will run the Neutrino sync of blocks every 4 hours in the background.
If this option is disabled, neutrino sync is only possible when the app is running in the foreground. This can make the blockchain sync take longer on app start up if Blixt Wallet has not been opened in some time.
Note: This feature is not currently available on iOS.
Lightning Network section
Show node data
This is an important section where more details about your Blixt Wallet LN node are displayed. This information is very useful and it might be a good idea to save this information for later use if needed. Keep in mind that this information will not be "visible" on public LN explorers, Blixt Wallet uses private/unannounced channels and without any public channels, the node will not be publicly visible. This information can only be used in direct connection with other peers.
The technical information displayed is:
- Node Alias - short ID for your LN node
- Chain - Bitcoin mainnet or testnet
- Best header timestamp - when was the last block synced
- Block Hash - latest block hash number
- Block Height - latest block number that was synced (Bitcoin Time)
- Identity PubKey - the full ID of your node, used to connect with other peers. This is valuable information, keep it at hand.
- Num Channels - displays the total number of channels you have on your Blixt node (active, inactive, pending)
- Num peers - the total number of peers your node currently has a connection to. These peers are not necessarily your channel partners, this includes your channel partners and other LN nodes to share and receive LN gossip.
- Synced to chain - true/false to show if your node is currently synced to the latest Bitcoin block.
- LND version - shows the LND node software version that is used in Blixt.
- Node features - displays the specific technical features activated for your node.
Show Lightning peers
This screen displays each Lightning peer that your Blixt Wallet is connected to, with more technical details for each. You can also manually connect to other peers by clicking the "+" button and scanning or pasting in the URI of the peer you wish to connect to. This option is useful when you want to route a payment through a specific node, send a keysend payment, open a channel with a new peer, or you lost the connection with a peer and you want to re-connect.
Keep in mind that if you want to add peers that are behind Tor, you need to first enable the Tor option in settings and restart the Blixt Wallet app.
Show Network Info
This screen will display the status of the LN graph synced by your Blixt node. Is a very good statistic info to see how your Blixt node is positioned in the whole network.
Will display: Total network capacity, No. of channels, No. of nodes, Average channel size, No. of zombie channels.
Set maximum payment fee
In this option, the user can set his own percentage of fee that is willing to pay.
This option if very useful in cases that a payment could fail because of high routing fees encountered.
Proceed with caution, by default is 2%, as maximum fee, you can increase it slowly.
Automatically open channels
When this is enabled, if you don't yet have any open channels, Blixt Wallet will use any funds sent to the on-chain wallet to automatically open a channel to the Blixt Wallet LSP node. This will not currently work if you already have an open channel. To open subsequent channels, you will either have to manually open it or receive funds with the Dunder LSP.
This option is enabled by default to provide an easy way for new users to get started. Advanced users can disable this option if they want to manually select which node they would like to open their first channel with.


Crypto Cards
DEAL
POT:
TIME:
Score
HIT
STAY
BET
Player 1
Name:
Bet:
Score
HIT
STAY
BET
Player 2
Name:
User2
Bet:
12
Game Queue


Topic's title Topic's author Topic's content Number of answers Answer's author Useful Set useful/useless Delete Answer's content Add answer Content: Answer


Choose the size of a pizza of your choice here:
Your pizza total is:
Call us on this number:+250788456700, +250788856898 email us:alsenjustine90@gmail.com


--- layout: post title: Speaking at Mage Titans - Austin, Texas tags: trip usa austin texas speaking conference mage-titans ---
I was in Toronto, Canada but... let's go to TEXAS, baby!!!
Magento Titans is a worldwide event, gathering the most brilliant minds of Magento world to the same place. Unlike other business conferences, the main focus here is to dig deeply into technical subjects. The event's motto is "an event for Magento developers, designed and curated by Magento developers".
The 2017 event in the USA took place in Austin, Texas. The city is also the capital of Texas and is well known for being the "Live Music Capital of the World".
I talked about Clean Code, Object Calisthenics & Best Practices. When we go to soccer, basketball, MMA, or any sport, we realize that training is a key component of the culture. Nonetheless, in the programming world, it's not as popular. Greatness comes with practice, exercising, performing over and over again. Thus I brought together a collection (well, I really think so) of the "exercices" for the Magento community. You can checkout the presentation slides here and the recorded video.
As I said in the beggining of the post, brilliant minds of the ecosystem were around, talking, discussing and hanging out. I believe it's extremely important being in such environment, not only to listen to the talks, but to connect and have a good time with speakers throughout the day: discussing relevant subjects, asking tough questions, and engaging.
For the first time, there were a set of live presentations on the stage of 15 minutes each, with "no powerpoint" allowed, just live demo. The idea was to create a moment of innovation where developers would present some new features, bringing new ideas to the ecosystem. The best demo was judged by the audience. The prize for the 1st was $500 and 2nd $100.
It's important to have as many people as possible. Starting from ≈$200 early bird to ≈$350 last minute.
I'm sure all the attendes and speakers can agree on how hard the staff worked and how serious they wanted to make this event unique. Thanks @wagento team for all efforts!
We had an awesome lunch with Texan Barbecue and Tacos! Oh my goodness, how I miss that food! By the way, it was already included in ticket.
As Magento Inc. has one of its offices in the city, a considerable amount people of staff were present. I could talk with a lot of them and they were extremelly accessible, willing to talk and friendly.
Phillip Jackson giving an exceptional talk about being a developer and overcoming failure fear - photo by Sherrie Rohde
Max Chadwick speaking about "Imagining A World Without Caching"
Ok, I’ll bite, what on earth is a Progressive Web App? by Tom Robertshaw
Yeah, after a long busy day... it's time to party! It took place in a downtown bar rooftoop. What a nice view!
Rooftop view from Hangar Lounge, Austin Downtown - photo by Talesh Seeparsan
After the conference I spent few days in the city touristing! The temperature was just.. 100ºF (38ºC)!!! #omg!
Texan Barbecue!!!


Sentinel Kendell:
Young friend, have you not left the village yet? The target you must slay is written on the orders I gave you. Slay him and bring back
proof
of his death.
And take heed. An animal becomes violent if cornered. Be extra careful.


| Customer ID | Customer First Name | Customer Email | Customer Address | Customer City | Customer Phone |
|---|
| {{item.id}} | {{item.firstName}} | {{item.lastName}} | {{item.email}} | {{item.address1}}{{item.address2}} |
{{item.city}} | {{item.phoneNumber}} |
Account Details:
|
Loading, please wait...


1 /** 2 * Constructs a new mark anchor with default properties. 3 * 4 * @class Represents an anchor on a given mark. An anchor is itself a mark, but 5 * without a visual representation. It serves only to provide useful default 6 * properties that can be inherited by other marks. Each type of mark can define 7 * any number of named anchors for convenience. If the concrete mark type does 8 * not define an anchor implementation specifically, one will be inherited from 9 * the mark's parent class. 10 * 11 *
For example, the bar mark provides anchors for its four sides: left, 12 * right, top and bottom. Adding a label to the top anchor of a bar, 13 * 14 *
bar.anchor("top").add(pv.Label);
 15 * 16 * will render a text label on the top edge of the bar; the top anchor defines 17 * the appropriate position properties (top and left), as well as text-rendering 18 * properties for convenience (textAlign and textBaseline). 19 * 20 *
Note that anchors do not inherit from their targets; the positional 21 * properties are copied from the scene graph, which guarantees that the anchors 22 * are positioned correctly, even if the positional properties are not defined 23 * deterministically. (In addition, it also improves performance by avoiding 24 * re-evaluating expensive properties.) If you want the anchor to inherit from 25 * the target, use {@link pv.Mark#extend} before adding. For example: 26 * 27 *
bar.anchor("top").extend(bar).add(pv.Label);
 28 * 29 * The anchor defines it's own positional properties, but other properties (such 30 * as the title property, say) can be inherited using the above idiom. Also note 31 * that you can override positional properties in the anchor for custom 32 * behavior. 33 * 34 * @extends pv.Mark 35 * @param {pv.Mark} target the anchor target. 36 */ 37 pv.Anchor = function(target) { 38 pv.Mark.call(this); 39 this.target = target; 40 this.parent = target.parent; 41 }; 42 43 pv.Anchor.prototype = pv.extend(pv.Mark) 44 .property("name", String); 45 46 /** 47 * The anchor name. The set of supported anchor names is dependent on the 48 * concrete mark type; see the mark type for details. For example, bars support 49 * left, right, top and bottom anchors. 50 * 51 *
While anchor names are typically constants, the anchor name is a true 52 * property, which means you can specify a function to compute the anchor name 53 * dynamically. For instance, if you wanted to alternate top and bottom anchors, 54 * saying 55 * 56 *
m.anchor(function() (this.index % 2) ? "top" : "bottom").add(pv.Dot);
 57 * 58 * would have the desired effect. 59 * 60 * @type string 61 * @name pv.Anchor.prototype.name 62 */ 63 64 /** 65 * Returns the anchor target of this mark, if it is derived from an anchor; 66 * otherwise returns null. For example, if a label is derived from a bar anchor, 67 * 68 *
bar.anchor("top").add(pv.Label);
 69 * 70 * then property functions on the label can refer to the bar via the 71 * <tt>anchorTarget</tt> method. This method is also useful for mark types 72 * defining properties on custom anchors. 73 * 74 * @returns {pv.Mark} the anchor target of this mark; possibly null. 75 */ 76 pv.Anchor.prototype.anchorTarget = function() { 77 return this.target; 78 }; 79


This page uses frames, but your browser doesn't support them.
Please follow this link for the no frames site.


Absolute Basic Photon Web Control
Flash to the Photon as an .ino file
Next Load up on github or your own computer or your website as a .html file the following code
On the webpage enter your ID and access token from the Photon IDE, then test D7 light on and off.
Next connect the circuits that came with the Photon Maker Kit.
Click the relevant buttons and see if you can control your photon over the internet.
Transfer your .html file above to github and load https://build.phonegap.com/
Make sure your file is called index.html (all small letters)
Load your file to phonegap and download your android App onto your cell phone!


{% extends "base/main.html"%} {% load static %} {% block content %}
Welcome to Medmer
We are here to get you the help that you need when you need it 🚑


Don't know what to do? Le Bon Coin
Good Deal !
City:
Price per m²:
Averrrage Price
Averrage price
Max Price
Max price
Min Price
Min price