# Helper function that can't be used as a theme. BEGIN: Resize3x3 INPUT: FixedPoint, targetWidth INPUT: FixedPoint, targetHeight INPUT: FixedPoint, sourceBorder INPUT: ImageRgbaU8, sourceImage INPUT: FixedPoint, sourceLeft INPUT: FixedPoint, sourceTop INPUT: FixedPoint, sourceWidth INPUT: FixedPoint, sourceHeight OUTPUT: ImageRgbaU8, targetImage CREATE: targetImage, targetWidth, targetHeight # Limit targetBorder MIN: targetBorder, targetWidth, targetHeight MUL: targetBorder, targetBorder, 0.3 MIN: targetBorder, targetBorder, sourceBorder # Calculat dimensions ADD: sourceRight, sourceLeft, sourceWidth ADD: sourceBottom, sourceTop, sourceHeight ADD: sb2, sourceBorder, sourceBorder SUB: sbiw, sourceWidth, sb2 SUB: sbih, sourceHeight, sb2 #ADD: sbl, sourceLeft, sourceBorder #ADD: sbt, sourceTop, sourceBorder SUB: sbow, sourceRight, sourceBorder SUB: sboh, sourceBottom, sourceBorder ADD: pl, sourceLeft, sourceBorder ADD: pt, sourceTop, sourceBorder ADD: tb2, targetBorder, targetBorder SUB: tbiw, targetWidth, tb2 SUB: tbih, targetHeight, tb2 SUB: tbow, targetWidth, targetBorder SUB: tboh, targetHeight, targetBorder # Upper RESIZE_BILINEAR: scaled, targetBorder, targetBorder, sourceImage, sourceLeft, sourceTop, sourceBorder, sourceBorder COPY: targetImage, 0, 0, scaled RESIZE_BILINEAR: scaled, tbiw, targetBorder, sourceImage, pl, sourceTop, sbiw, sourceBorder COPY: targetImage, targetBorder, 0, scaled RESIZE_BILINEAR: scaled, targetBorder, targetBorder, sourceImage, sbow, sourceTop, sourceBorder, sourceBorder COPY: targetImage, tbow, 0, scaled # Middle RESIZE_BILINEAR: scaled, targetBorder, tbih, sourceImage, sourceLeft, pt, sourceBorder, sbih COPY: targetImage, 0, targetBorder, scaled RESIZE_BILINEAR: scaled, tbiw, tbih, sourceImage, pl, pt, sbiw, sbih COPY: targetImage, targetBorder, targetBorder, scaled RESIZE_BILINEAR: scaled, targetBorder, tbih, sourceImage, sbow, pt, sourceBorder, sbih COPY: targetImage, tbow, targetBorder, scaled # Lower RESIZE_BILINEAR: scaled, targetBorder, targetBorder, sourceImage, sourceLeft, sboh, sourceBorder, sourceBorder COPY: targetImage, 0, tboh, scaled RESIZE_BILINEAR: scaled, tbiw, targetBorder, sourceImage, pl, sboh, sbiw, sourceBorder COPY: targetImage, targetBorder, tboh, scaled RESIZE_BILINEAR: scaled, targetBorder, targetBorder, sourceImage, sbow, sboh, sourceBorder, sourceBorder COPY: targetImage, tbow, tboh, scaled END: BEGIN: Diffuse3x3 INPUT: FixedPoint, width INPUT: FixedPoint, height INPUT: FixedPoint, red INPUT: FixedPoint, green INPUT: FixedPoint, blue INPUT: FixedPoint, sourceLeft INPUT: FixedPoint, sourceTop INPUT: FixedPoint, sourceWidth INPUT: FixedPoint, sourceHeight INPUT: FixedPoint, preserved INPUT: ImageRgbaU8, atlas OUTPUT: ImageRgbaU8, colorImage # Scale by 1 / 255 so that 255 represents full intensity in atlas. MUL: normRed, red, 0.00392156862745 MUL: normGreen, green, 0.00392156862745 MUL: normBlue, blue, 0.00392156862745 # Resize source region from the atlas. CALL: Resize3x3, rescaledImage, width, height, preserved, atlas, sourceLeft, sourceTop, sourceWidth, sourceHeight GET_RED: diffuseMap, rescaledImage GET_ALPHA: visibilityMap, rescaledImage MUL: redImage, diffuseMap, normRed MUL: greenImage, diffuseMap, normGreen MUL: blueImage, diffuseMap, normBlue PACK_RGBA: colorImage, redImage, greenImage, blueImage, visibilityMap END: BEGIN: FocusableDiffuse3x3 INPUT: FixedPoint, width INPUT: FixedPoint, height INPUT: FixedPoint, red INPUT: FixedPoint, green INPUT: FixedPoint, blue INPUT: FixedPoint, sourceLeft INPUT: FixedPoint, sourceTop INPUT: FixedPoint, sourceWidth INPUT: FixedPoint, sourceHeight INPUT: FixedPoint, focusOffsetX INPUT: FixedPoint, focusOffsetY INPUT: FixedPoint, focused INPUT: FixedPoint, preserved INPUT: ImageRgbaU8, atlas OUTPUT: ImageRgbaU8, colorImage # Select image using the focused state. MUL: sourceOffsetX, focused, focusOffsetX MUL: sourceOffsetY, focused, focusOffsetY ADD: adjustedSourceLeft, sourceLeft, sourceOffsetX ADD: adjustedSourceTop, sourceTop, sourceOffsetY # Scale by 1 / 255 so that 255 represents full intensity in atlas. MUL: normRed, red, 0.00392156862745 MUL: normGreen, green, 0.00392156862745 MUL: normBlue, blue, 0.00392156862745 # Resize source region from the atlas. CALL: Resize3x3, rescaledImage, width, height, preserved, atlas, adjustedSourceLeft, adjustedSourceTop, sourceWidth, sourceHeight GET_RED: diffuseMap, rescaledImage GET_ALPHA: visibilityMap, rescaledImage MUL: redImage, diffuseMap, normRed MUL: greenImage, diffuseMap, normGreen MUL: blueImage, diffuseMap, normBlue PACK_RGBA: colorImage, redImage, greenImage, blueImage, visibilityMap END: BEGIN: PressableDiffuse3x3 INPUT: FixedPoint, width INPUT: FixedPoint, height INPUT: FixedPoint, red INPUT: FixedPoint, green INPUT: FixedPoint, blue INPUT: FixedPoint, pressed INPUT: FixedPoint, focused INPUT: FixedPoint, hovered INPUT: FixedPoint, sourceLeft INPUT: FixedPoint, sourceTop INPUT: FixedPoint, sourceWidth INPUT: FixedPoint, sourceHeight INPUT: FixedPoint, pressOffsetX INPUT: FixedPoint, pressOffsetY INPUT: FixedPoint, preserved INPUT: ImageRgbaU8, atlas OUTPUT: ImageRgbaU8, colorImage # Select image using the pressed state. MUL: sourceOffsetX, pressed, pressOffsetX MUL: sourceOffsetY, pressed, pressOffsetY ADD: adjustedSourceLeft, sourceLeft, sourceOffsetX ADD: adjustedSourceTop, sourceTop, sourceOffsetY MUL: hoverChange, hovered, 0.1 MUL: focusChange, focused, -0.2 ADD: intensity, 1.0, hoverChange ADD: intensity, intensity, focusChange Mul: red, red, intensity Mul: green, green, intensity Mul: blue, blue, intensity # Rescale the source region to fit width and height, while applying the diffuse color and adding white shine. CALL: Diffuse3x3, colorImage, width, height, red, green, blue, adjustedSourceLeft, adjustedSourceTop, sourceWidth, sourceHeight, preserved, atlas END: BEGIN: DiffuseSpecular3x3 INPUT: FixedPoint, width INPUT: FixedPoint, height INPUT: FixedPoint, red INPUT: FixedPoint, green INPUT: FixedPoint, blue INPUT: FixedPoint, sourceLeft INPUT: FixedPoint, sourceTop INPUT: FixedPoint, sourceWidth INPUT: FixedPoint, sourceHeight INPUT: FixedPoint, preserved INPUT: ImageRgbaU8, atlas OUTPUT: ImageRgbaU8, colorImage # Scale by 1 / 255 so that 255 represents full intensity in atlas. MUL: normRed, red, 0.00392156862745 MUL: normGreen, green, 0.00392156862745 MUL: normBlue, blue, 0.00392156862745 # Resize source region from the atlas. CALL: Resize3x3, rescaledImage, width, height, preserved, atlas, sourceLeft, sourceTop, sourceWidth, sourceHeight GET_RED: diffuseMap, rescaledImage GET_GREEN: specularMap, rescaledImage GET_ALPHA: visibilityMap, rescaledImage MUL: redImage, diffuseMap, normRed MUL: greenImage, diffuseMap, normGreen MUL: blueImage, diffuseMap, normBlue ADD: redImage, redImage, specularMap ADD: greenImage, greenImage, specularMap ADD: blueImage, blueImage, specularMap PACK_RGBA: colorImage, redImage, greenImage, blueImage, visibilityMap END: BEGIN: PressableDiffuseSpecular3x3 INPUT: FixedPoint, width INPUT: FixedPoint, height INPUT: FixedPoint, red INPUT: FixedPoint, green INPUT: FixedPoint, blue INPUT: FixedPoint, pressed INPUT: FixedPoint, focused INPUT: FixedPoint, hovered INPUT: FixedPoint, sourceLeft INPUT: FixedPoint, sourceTop INPUT: FixedPoint, sourceWidth INPUT: FixedPoint, sourceHeight INPUT: FixedPoint, pressOffsetX INPUT: FixedPoint, pressOffsetY INPUT: FixedPoint, preserved INPUT: ImageRgbaU8, atlas OUTPUT: ImageRgbaU8, colorImage # Select image using the pressed state. MUL: sourceOffsetX, pressed, pressOffsetX MUL: sourceOffsetY, pressed, pressOffsetY ADD: adjustedSourceLeft, sourceLeft, sourceOffsetX ADD: adjustedSourceTop, sourceTop, sourceOffsetY MUL: hoverChange, hovered, 0.1 MUL: focusChange, focused, -0.2 ADD: intensity, 1.0, hoverChange ADD: intensity, intensity, focusChange Mul: red, red, intensity Mul: green, green, intensity Mul: blue, blue, intensity # Rescale the source region to fit width and height, while applying the diffuse color and adding white shine. CALL: DiffuseSpecular3x3, colorImage, width, height, red, green, blue, adjustedSourceLeft, adjustedSourceTop, sourceWidth, sourceHeight, preserved, atlas END: BEGIN: DiffuseSpecular1x1 INPUT: FixedPoint, width INPUT: FixedPoint, height INPUT: FixedPoint, red INPUT: FixedPoint, green INPUT: FixedPoint, blue INPUT: FixedPoint, sourceLeft INPUT: FixedPoint, sourceTop INPUT: FixedPoint, sourceWidth INPUT: FixedPoint, sourceHeight INPUT: FixedPoint, preserved INPUT: ImageRgbaU8, atlas OUTPUT: ImageRgbaU8, colorImage # Scale by 1 / 255 so that 255 represents full intensity in atlas. MUL: normRed, red, 0.00392156862745 MUL: normGreen, green, 0.00392156862745 MUL: normBlue, blue, 0.00392156862745 # Resize source region from the atlas. RESIZE_BILINEAR: rescaledImage, width, height, atlas, sourceLeft, sourceTop, sourceWidth, sourceHeight GET_RED: diffuseMap, rescaledImage GET_GREEN: specularMap, rescaledImage GET_ALPHA: visibilityMap, rescaledImage MUL: redImage, diffuseMap, normRed MUL: greenImage, diffuseMap, normGreen MUL: blueImage, diffuseMap, normBlue ADD: redImage, redImage, specularMap ADD: greenImage, greenImage, specularMap ADD: blueImage, blueImage, specularMap PACK_RGBA: colorImage, redImage, greenImage, blueImage, visibilityMap END: BEGIN: PressableDiffuseSpecular1x1 INPUT: FixedPoint, width INPUT: FixedPoint, height INPUT: FixedPoint, red INPUT: FixedPoint, green INPUT: FixedPoint, blue INPUT: FixedPoint, pressed INPUT: FixedPoint, focused INPUT: FixedPoint, hovered INPUT: FixedPoint, sourceLeft INPUT: FixedPoint, sourceTop INPUT: FixedPoint, sourceWidth INPUT: FixedPoint, sourceHeight INPUT: FixedPoint, pressOffsetX INPUT: FixedPoint, pressOffsetY INPUT: FixedPoint, preserved INPUT: ImageRgbaU8, atlas OUTPUT: ImageRgbaU8, colorImage # Select image using the pressed state. MUL: sourceOffsetX, pressed, pressOffsetX MUL: sourceOffsetY, pressed, pressOffsetY ADD: adjustedSourceLeft, sourceLeft, sourceOffsetX ADD: adjustedSourceTop, sourceTop, sourceOffsetY MUL: hoverChange, hovered, 0.1 MUL: focusChange, focused, -0.2 ADD: intensity, 1.0, hoverChange ADD: intensity, intensity, focusChange Mul: red, red, intensity Mul: green, green, intensity Mul: blue, blue, intensity # Rescale the source region to fit width and height, while applying the diffuse color and adding white shine. CALL: DiffuseSpecular1x1, colorImage, width, height, red, green, blue, adjustedSourceLeft, adjustedSourceTop, sourceWidth, sourceHeight, preserved, atlas END: BEGIN: ListBox INPUT: FixedPoint, width INPUT: FixedPoint, height INPUT: FixedPoint, red INPUT: FixedPoint, green INPUT: FixedPoint, blue INPUT: FixedPoint, sourceLeft INPUT: FixedPoint, sourceTop INPUT: FixedPoint, sourceWidth INPUT: FixedPoint, sourceHeight INPUT: FixedPoint, preserved INPUT: ImageRgbaU8, atlas OUTPUT: ImageRgbaU8, colorImage # Rescale the source region to fit width and height, while applying the diffuse color. CALL: Diffuse3x3, colorImage, width, height, red, green, blue, sourceLeft, sourceTop, sourceWidth, sourceHeight, preserved, atlas END: BEGIN: VerticalScrollList INPUT: FixedPoint, width INPUT: FixedPoint, height INPUT: FixedPoint, red INPUT: FixedPoint, green INPUT: FixedPoint, blue OUTPUT: ImageRgbaU8, colorImage CREATE: visImage, width, height CREATE: lumaImage, width, height FADE_LINEAR: visImage, 0, 0, 128, width, 0, 0 PACK_RGBA: colorImage, 0, 0, 0, visImage END: BEGIN: HorizontalScrollList INPUT: FixedPoint, width INPUT: FixedPoint, height INPUT: FixedPoint, red INPUT: FixedPoint, green INPUT: FixedPoint, blue OUTPUT: ImageRgbaU8, colorImage CREATE: visImage, width, height CREATE: lumaImage, width, height FADE_LINEAR: visImage, 0, 0, 128, 0, height, 0 PACK_RGBA: colorImage, 0, 0, 0, visImage END: