Swiftpack.co -  SusanDoggie/Doggie as Swift Package
Swiftpack.co is a collection of thousands of indexed Swift packages. Search packages.
SusanDoggie/Doggie
A Cross-platform Library for Swift
.package(url: "https://github.com/SusanDoggie/Doggie.git", from: "6.4.0")

Doggie - A Cross-platform Library for Swift

Github Actions codecov Platform GitHub release Swift MIT

Doggie is a foundational library for Apple's swift. It includes mathematics, accelerate, signal processing and gr<img style="max-width:100%;" src="https://raw.github.com/SusanDoggie/Doggie/main/tions.

Apps Using This Library

Features

let shape = try Shape(code: "M100 0c0-100-236.60 36.60-150 86.60S36.60-136.60-50-86.60 100 100 100 0z")

let region = ShapeRegion(shape, winding: .nonZero)
let ellipse = ShapeRegion(ellipseIn: shape.boundary)
operation preview
region.union(ellipse) union
region.intersection(ellipse) union
ellipse.subtracting(region) union
region.subtracting(ellipse) union
region.symmetricDifference(ellipse) union
let collection = try FontCollection(data: fontFileData)

if let font = collection.first?.with(size: 64) {

    let string = "Doggie\u{0301}".precomposedStringWithCanonicalMapping

    let glyphs = font.glyphs(with: string.unicodeScalars)
    let advances = glyphs.map { font.advance(forGlyph: $0) }.reductions(0, +)

    var shape = Shape()

    for (advance, glyph) in zip(advances, glyphs) {
        var outline = font.shape(forGlyph: glyph)
        outline.center.x += advance
        shape.append(contentsOf: outline.identity)
    }

    print(shape.encode())
}

let context = ImageContext<ARGB32ColorPixel>(width: 100, height: 100, colorSpace: ColorSpace.sRGB)

let ellipse1 = Shape(ellipseIn: Rect(x: 10, y: 35, width: 55, height: 55))
let ellipse2 = Shape(ellipseIn: Rect(x: 35, y: 10, width: 55, height: 55))

context.draw(shape: ellipse1, winding: .nonZero, color: RGBColorModel(red: 247/255, green: 217/255, blue: 12/255))
context.draw(shape: ellipse1, stroke: Stroke(width: 1, cap: .round, join: .round, color: RGBColorModel()))
context.draw(shape: ellipse2, winding: .nonZero, color: RGBColorModel(red: 234/255, green: 24/255, blue: 71/255))
context.draw(shape: ellipse2, stroke: Stroke(width: 1, cap: .round, join: .round, color: RGBColorModel()))

let image: Image<ARGB32ColorPixel> = context.image

drawing sample

  • others
<svg width="200" height="200" viewBox="0 0 220 220"
     xmlns="http://www.w3.org/2000/svg">
  <filter id="displacementFilter">
     <feTurbulence type="turbulence" baseFrequency="0.05"
        numOctaves="2" result="turbulence"/>
     <feDisplacementMap in2="turbulence" in="SourceGraphic"
        scale="50" xChannelSelector="R" yChannelSelector="G"/>
  </filter>

  <circle cx="100" cy="100" r="100"
     style="filter: url(#displacementFilter)"/>
</svg>
let context = ImageContext<Gray16ColorPixel>(width: 220, height: 220, colorSpace: .default)

context.draw(ellipseIn: Rect(x: 0, y: 0, width: 200, height: 200), color: .black)

var image = context.image

let turbulence: Image<RGBA32ColorPixel> = SVGTurbulence(220, 220, .turbulence, nil, .identity, 0, 0.05, 2)

image = DisplacementMap(image, turbulence, 0, 1, 50)

turbulence

Documents

Documents can find in here.

Status

ColorSpace

Format

  • ☑ ICC
  • ☑ CIEXYZ
  • ☑ CIELab
  • ☑ CIELuv
  • ☑ Calibrated Gray
  • ☑ Calibrated RGB

Rendering Intent

  • ☑ perceptual
  • ☐ saturation
  • ☑ absolute colorimetric
  • ☑ relative colorimetric

ImageRep

  • ☑ bmp
  • ☐ gif
  • ☑ jpeg
  • ☐ jpeg2000
  • ☑ png
  • ☑ tiff
  • ☑ webp

Font

Format

  • ☑ TrueType
  • ☑ TrueType/TTC
  • ☑ OpenType
  • ☑ OpenType/CFF
  • ☐ OpenType/CFF2
  • ☑ WOFF
  • ☑ WOFF/CFF
  • ☐ WOFF/CFF2
  • ☐ WOFF2

SFNT Tables

  • ☑ HEAD
  • ☑ POST
  • ☑ OS/2
  • ☑ MAXP
  • ☑ CMAP
  • ☑ NAME
  • ☑ HHEA
  • ☑ HMTX
  • ☑ VHEA
  • ☑ VMTX
  • ☑ LOCA
  • ☑ GLYF
  • ☑ SBIX
  • ☑ FEAT
  • ☐ KERX
  • ☐ MORX
    • ☑ Rearrangement
    • ☑ Contextual
    • ☑ Ligature
    • ☑ Noncontextual
    • ☐ Insertion
  • ☐ GSUB
  • ☐ GPOS
  • ☐ GDEF
  • ☑ CFF
  • ☐ CFF2

CMAP

Platform

The table below lists the available platform/specific values in the order.

platform specific Description
0 max( <= 4 ) Unicode
3 10 Windows, Unicode UCS-4
3 1 Windows, Unicode BMP (UCS-2)
Format
  • ☑ Format 0
  • ☑ Format 4
  • ☑ Format 12
  • ☑ Format 14 (Unicode Variation Selectors)

How To Contribute

It's welcome everyone to create a pull request.

License

Doggie is licensed under the MIT license.

GitHub

link
Stars: 88
Last commit: 19 hours ago

Ad: Job Offers

iOS Software Engineer @ Perry Street Software
Perry Street Software is Jack’d and SCRUFF. We are two of the world’s largest gay, bi, trans and queer social dating apps on iOS and Android. Our brands reach more than 20 million members worldwide so members can connect, meet and express themselves on a platform that prioritizes privacy and security. We invest heavily into SwiftUI and using Swift Packages to modularize the codebase.

Related Packages

Release Notes

Yesterday

Swiftpack is being maintained by Petr Pavlik | @ptrpavlik | @swiftpackco | API