Il serait particulièrement intéressant que JMP permette aux boîtes de trame d'avoir un affichage de type échantillonnage et maintien. Plus précisément, elles devraient être rendues une fois et réaffichées uniquement pour des événements tels que des redimensionnements, des changements d'état de ligne (pour tout segment de marqueur lié à l'état de ligne d'une table) ou en envoyant le < <<>
Ce que j'aimerais voir, c'est que le script d'exemple ci-dessous n'imprime aucun numéro plus d'une fois lors du défilement - pendant le rendu initial et c'est tout (cela s'appliquerait également aux segments de marqueur s'ils sont présents).
La principale raison en est que si je trace de nombreux graphiques avec des millions de points de données, cela ne me dérange pas d'attendre plusieurs secondes pour le rendu initial (ce qui est prévu), mais il est inacceptable que chaque événement de défilement nécessite plusieurs secondes de rendu - effectuez le rendu une seule fois et repeignez simplement le bitmap à un emplacement différent lors du défilement.
REMARQUE : si les développeurs s'inquiètent de la consommation de mémoire liée au stockage des bitmaps dans la RAM, NE VOUS INQUIÉTEZ PAS. Laissez l'utilisateur s'en soucier lors de la configuration des boîtes. Par exemple, si j'essaie de créer un tracé qui ferait 1 000 000 000 x 1 000 000 000 pixels à restituer, laissez-moi essayer et faire planter JMP. Vous ne devriez pas nous empêcher d'avoir la fonctionnalité nécessaire simplement parce qu'elle pourrait nous permettre de faire planter JMP dans des circonstances stupides. Permettez-lui d'être uniquement opt-in (c'est-à-dire uniquement en appelant la fonction <
Juste pour réitérer, ce serait génial si une FrameBox avait une méthode (comme <
Voici un exemple du mauvais comportement actuel : les nombres sont imprimés plusieurs fois, indiquant que le rendu se produit à chaque événement de défilement :
Names Default to Here( 1 );
New Window( "Test",
V Scroll Box(
vlb = V List Box()
)
);
For( i = 1, i <= 100, i++,
Eval( Eval Expr(
vlb << Append(
Graph Box(
X Scale( 0, 1 ),
Y Scale( 0, 1 ),
Pen Color( "Blue" );
Line( [1 0], [0 1] );
Print( Expr( i ) )
)
)
) )
)
Voici un exemple du temps d'attente inacceptable associé à ce « re-render-at-every-scroll-event » / « re-render at every possible opportunity » (essayez simplement de faire défiler ici...)
Names Default to Here( 1 );
ns = New Namespace();
ns:table = New Table( "TEST",
New Column( "X", "Numeric", <<FORMULA></FORMULA>
<P> </P>
<P> </P>
<P> </P>Salut @ErraticAttack , Merci pour votre suggestion! Nous avons enregistré votre demande et la prendrons en considération.
Excellent exemple.
Génial : JMP sait quelles framesboxes sont visibles et ignore les autres.