@Override
		public void paint(GGlassPane glassPane, Graphics g) {
			Color gray = Palette.GRAY;
//			double darknessFudge = .95;
//			double progress = percentComplete * darknessFudge; // emphasis starts at 1			
//			int alpha = Math.min(255, (int) (255 * progress));
//			gray = ColorUtils.fromRgba(gray.getRed(), gray.getGreen(), gray.getBlue(), alpha);

			Graphics2D g2d = (Graphics2D) g;
			Composite originaComposite = g2d.getComposite();
			AlphaComposite alphaComposite = AlphaComposite.getInstance(
				AlphaComposite.SrcOver.getRule(), (float) percentComplete);
			g2d.setComposite(alphaComposite);

			g.setColor(gray);
			Rectangle displayBounds = glassPane.getBounds();
			g.fillRect(displayBounds.x, displayBounds.y, displayBounds.width, displayBounds.height);

			g2d.setComposite(originaComposite);

			Rectangle defaultBounds = component.getBounds();

			double emphasis = 1 + (magnification * percentComplete);
			// emphasis = (magnification * percentComplete); // thumbnail 
			int width = (int) (defaultBounds.width * emphasis);
			int height = (int) (defaultBounds.height * emphasis);

			Rectangle emphasizedBounds =
				new Rectangle(defaultBounds.x, defaultBounds.y, width, height);

			emphasizedBounds =
				SwingUtilities.convertRectangle(component.getParent(), emphasizedBounds, glassPane);

			// 
			// Calculate the position of the image.   At 100% we want to be in the center of
			// the display; at 0% we want to be at our default location
			// 

			double asPercent = percentComplete * (1 / max);

			double displayCenterX = displayBounds.getCenterX();
			double displayCenterY = displayBounds.getCenterY();
			double currentCenterX = emphasizedBounds.getCenterX();
			double currentCenterY = emphasizedBounds.getCenterY();

			double deltaCenterX = displayCenterX - currentCenterX;
			double deltaCenterY = displayCenterY - currentCenterY;

			double progressX = deltaCenterX * asPercent;
			double progressY = deltaCenterY * asPercent;

			double newCenterX = currentCenterX + progressX;
			double newCenterY = currentCenterY + progressY;

			int x = (int) (newCenterX - (width >> 1));
			int y = (int) (newCenterY - (height >> 1));

			g2d.setRenderingHint(RenderingHints.KEY_INTERPOLATION,
				RenderingHints.VALUE_INTERPOLATION_BILINEAR);

			g.drawImage(image, x, y, width, height, null);
		}
Returns the {@link GGlassPane} for the given component

@param c the component
@return the glass pane
Ghidra/Framework/Docking/src/main/java/docking/util/AnimationUtils.java