Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
14 changes: 7 additions & 7 deletions src/pixie/blends.nim
Original file line number Diff line number Diff line change
Expand Up @@ -238,7 +238,7 @@ proc blendScreen*(backdrop, source: ColorRGBX): ColorRGBX {.inline.} =
# result = alphaFix(backdrop, source, result)
# result = result.toPremultipliedAlpha()

proc blendColorDodge(backdrop, source: ColorRGBX): ColorRGBX =
proc blendColorDodge*(backdrop, source: ColorRGBX): ColorRGBX =
let
backdrop = backdrop.rgba()
source = source.rgba()
Expand Down Expand Up @@ -341,7 +341,7 @@ proc blendHardLight*(backdrop, source: ColorRGBX): ColorRGBX =
result.b = hardLight(backdrop.b, backdrop.a, source.b, source.a)
result.a = blendAlpha(backdrop.a, source.a)

proc blendDifference(backdrop, source: ColorRGBX): ColorRGBX =
proc blendDifference*(backdrop, source: ColorRGBX): ColorRGBX =
proc blend(
backdropColor, backdropAlpha, sourceColor, sourceAlpha: uint8
): uint8 {.inline.} =
Expand All @@ -357,7 +357,7 @@ proc blendDifference(backdrop, source: ColorRGBX): ColorRGBX =
result.b = blend(backdrop.b, backdrop.a, source.b, source.a)
result.a = blendAlpha(backdrop.a, source.a)

proc blendExclusion(backdrop, source: ColorRGBX): ColorRGBX =
proc blendExclusion*(backdrop, source: ColorRGBX): ColorRGBX =
proc blend(backdrop, source: uint32): uint8 {.inline.} =
let v = (backdrop + source).int32 - ((2 * backdrop * source) div 255).int32
max(0, v).uint8
Expand All @@ -366,28 +366,28 @@ proc blendExclusion(backdrop, source: ColorRGBX): ColorRGBX =
result.b = blend(backdrop.b.uint32, source.b.uint32)
result.a = blendAlpha(backdrop.a, source.a)

proc blendColor(backdrop, source: ColorRGBX): ColorRGBX =
proc blendColor*(backdrop, source: ColorRGBX): ColorRGBX =
let
backdrop = backdrop.rgba().color
source = source.rgba().color
blended = SetLum(source, Lum(backdrop))
result = alphaFix(backdrop, source, blended).rgba.rgbx()

proc blendLuminosity(backdrop, source: ColorRGBX): ColorRGBX =
proc blendLuminosity*(backdrop, source: ColorRGBX): ColorRGBX =
let
backdrop = backdrop.rgba().color
source = source.rgba().color
blended = SetLum(backdrop, Lum(source))
result = alphaFix(backdrop, source, blended).rgba.rgbx()

proc blendHue(backdrop, source: ColorRGBX): ColorRGBX =
proc blendHue*(backdrop, source: ColorRGBX): ColorRGBX =
let
backdrop = backdrop.rgba().color
source = source.rgba().color
blended = SetLum(SetSat(source, Sat(backdrop)), Lum(backdrop))
result = alphaFix(backdrop, source, blended).rgba.rgbx()

proc blendSaturation(backdrop, source: ColorRGBX): ColorRGBX =
proc blendSaturation*(backdrop, source: ColorRGBX): ColorRGBX =
let
backdrop = backdrop.rgba().color
source = source.rgba().color
Expand Down
4 changes: 4 additions & 0 deletions src/pixie/fileformats/svg.nim
Original file line number Diff line number Diff line change
Expand Up @@ -550,6 +550,7 @@ proc newImage*(svg: Svg): Image {.raises: [PixieError].} =
result = newImage(svg.width, svg.height)

try:
var blendMode = OverwriteBlend # Start as overwrite
for (path, props) in svg.elements:
if props.display and props.opacity > 0:
if props.fill != "none":
Expand All @@ -573,9 +574,12 @@ proc newImage*(svg: Svg): Image {.raises: [PixieError].} =
paint = parseHtmlColor(props.fill).rgbx

paint.opacity = props.fillOpacity * props.opacity
paint.blendMode = blendMode

result.fillPath(path, paint, props.transform, props.fillRule)

blendMode = NormalBlend # Switch to normal when compositing multiple paths

if props.stroke != rgbx(0, 0, 0, 0) and props.strokeWidth > 0:
let paint = newPaint(props.stroke)
paint.color.a *= (props.opacity * props.strokeOpacity)
Expand Down
16 changes: 8 additions & 8 deletions src/pixie/fileformats/tiff.nim
Original file line number Diff line number Diff line change
Expand Up @@ -7,14 +7,14 @@ const
]
knownTags = [
0x0100.uint16, # ImageWidth
0x0101, # ImageLength
0x0102, # BitsPerSample
0x0103, # Compression
0x0106, # PhotometricInterpretation
0x0111, # StripOffsets
0x0116, # RowsPerStrip
0x0117, # StripByteCounts
0x0140, # ColorMap
0x0101, # ImageLength
0x0102, # BitsPerSample
0x0103, # Compression
0x0106, # PhotometricInterpretation
0x0111, # StripOffsets
0x0116, # RowsPerStrip
0x0117, # StripByteCounts
0x0140, # ColorMap
]

type
Expand Down
Loading