You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Migrate all remaining effects from SWT-OldSchoolEffect to the SWT GraphicsExample framework. Starfield and Ripple are already migrated (PR #3157, #3165). Each effect must become a *Tab.java class extending AnimatedGraphicsTab, registered in GraphicsExample.java, with localized strings in examples_graphics.properties.
PR Review Checklist (from feedback on #3157 and #3165)
Each migrated effect MUST satisfy:
No Color disposal — Colors do not need to be disposed in modern SWT. Use new Color(r, g, b) freely without .dispose().
Use simple Color constructor — Use new Color(r, g, b) not new Color(display, r, g, b). Examples have been cleaned to use the simpler constructor.
Dispose Images — Image objects MUST be disposed (in dispose() override or before recreation).
Dispose GC — GC objects MUST be disposed after use.
No compiler errors or warnings — Build must succeed without warnings/errors.
Use $NON-NLS-1$ markers — All string literals used for resource keys need NLS markers.
Proper copyright header — EPL-2.0 header with original author credit.
Category = "Misc" — All old-school effects go in the Misc category.
Localized strings — All user-visible text via examples_graphics.properties.
Inner classes for helpers — If the effect needs helper types (e.g., Star, Particle), use static inner classes rather than separate files where possible.
Migration Progress
Phase 1: Pure Algorithmic Effects (no images needed)
Star Wars Scroll — scrolls/StarwarsScroll.java + helpers → StarWarsScrollTab
Excluded
SpecialImage/SpecialImageLoader.java — Utility class, not an effect
Helper classes (Star.java, ImageMath.java, TransformFilter.java, PerspectiveFilter.java, SinEffect.java, Particle.java) — Will become inner classes
Notes
Each effect should be its own commit/PR for easy review
The Scrolls group (Simple, Advanced, StarWars) share helper classes (TransformFilter, PerspectiveFilter, ImageMath) — these should be shared inner classes or a single utility, migrated together
Dancing has two variants (light/no-light) that share PlanIso/PointIso — consider merging or migrating together
Total: 31 effects to migrate
Background: these examples are useful for testing the SKIA Canvas work and highlight different aspects of the Canvas
Problem Statement
Migrate all remaining effects from SWT-OldSchoolEffect to the SWT
GraphicsExampleframework. Starfield and Ripple are already migrated (PR #3157, #3165). Each effect must become a*Tab.javaclass extendingAnimatedGraphicsTab, registered inGraphicsExample.java, with localized strings inexamples_graphics.properties.Migration Pattern (from PR #3157 and #3165)
Each effect migration follows these steps:
<Effect>Tab.javaextendingAnimatedGraphicsTabinexamples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/graphics/getCategory()→ "Misc",getText(),getDescription(),getInitialAnimationTime(),next(),paint()example.loadImage(device, "name.ext")dispose()src/examples_graphics.propertiesGraphicsExample.javacreateTabs()methodBuild Verification
Before submitting a PR, the following command must succeed without errors or warnings:
PR Review Checklist (from feedback on #3157 and #3165)
Each migrated effect MUST satisfy:
new Color(r, g, b)freely without.dispose().new Color(r, g, b)notnew Color(display, r, g, b). Examples have been cleaned to use the simpler constructor.Imageobjects MUST be disposed (indispose()override or before recreation).GCobjects MUST be disposed after use.$NON-NLS-1$markers — All string literals used for resource keys need NLS markers.examples_graphics.properties.Migration Progress
Phase 1: Pure Algorithmic Effects (no images needed)
starfield/→ StarfieldTab (PR Migrate Starfield example to Graphics Example #3157)blob/Blob.java→ BlobTabburningsea/BurningSea.java→ BurningSeaTabcopper/Coppers.java→ CopperBarsTabexplosion/Explosion.java+Particle.java→ ExplosionTabfire/Fire.java→ FireTabmandelbrot/Mandelbrot.java→ MandelbrotTabmoire/Moire.java→ MoireTabplasma/Plasma.java→ PlasmaTabrasterbars/RasterBars.java→ RasterBarsTabshadebobs/ShadeBobs.java→ ShadeBobsTabtwister/Twister.java→ TwisterTabwave/WaveEffect.java→ WaveTabDancing/nolight/*.java→ DancingTabPhase 2: Image-Based Effects (single image)
ripple/→ RippleTab (PR Migrate Ripple effect to Graphics Example #3165)bump/Bump.java+bump.png→ BumpMappingTabflattext/FlatText.java+TEXFLAT2.png→ FlatTextTabLens/Lens.java+tuxblackbg.png→ LensTabrayfilter/BlockEffect.java+flower.jpg→ BlockEffectTabrayfilter/TwirlEffect.java+flower.jpg→ TwirlEffectTabsinewave/SineWave.java+SinEffect.java+tuxblackbg.png→ SineWaveTabsky2/Sky2.java+DEMO2.png→ SkyTabunlimitedballs/UnlimitedBalls.java+ball.gif→ UnlimitedBallsTabwarp/Warp.java+texture.png→ WarpTabwobble/WobbleEffect.java+bu.jpg→ WobbleTabwormhole/Wormhole.java+texture.png→ WormholeTabDancing/light/*.java→ DancingLightTabPhase 3: Complex Effects (multiple images or helper classes)
rotozoom/RotoZoom.java+tux256256.png+tile.png→ RotoZoomTabtunnel/Tunnel1.java+ tunnel textures → TunnelTabvoxel/Voxel.java+ 3 images → VoxelTabSineScroll/SineScroll.java+Star.java+font_classic_16x16.gif→ SineScrollTabscrolls/SimpleScroll.java+ helpers → SimpleScrollTabscrolls/AdvancedScroll.java+ helpers → AdvancedScrollTabscrolls/StarwarsScroll.java+ helpers → StarWarsScrollTabExcluded
SpecialImage/SpecialImageLoader.java— Utility class, not an effectStar.java,ImageMath.java,TransformFilter.java,PerspectiveFilter.java,SinEffect.java,Particle.java) — Will become inner classesNotes
TransformFilter,PerspectiveFilter,ImageMath) — these should be shared inner classes or a single utility, migrated togetherPlanIso/PointIso— consider merging or migrating together