Skip to content

Commit

Permalink
Replaced 'isFlipped' settings key with 'flip'
Browse files Browse the repository at this point in the history
This provides more flexibility for shapes that support flipping, as
it supports horizontally, vertically and both

There was no point having two different flip settings.

Because of this, I've removed 'roundedPointingOut' because the same
shape can be generated using 'roundedPointingIn' and flipping both axes
  • Loading branch information
dagronf committed Dec 17, 2024
1 parent b6e0543 commit 607dd32
Show file tree
Hide file tree
Showing 46 changed files with 1,109 additions and 691 deletions.
File renamed without changes
File renamed without changes
Binary file removed Art/images/eye_roundedPointingOut.png
Binary file not shown.
File renamed without changes
File renamed without changes
File renamed without changes
File renamed without changes
Binary file removed Art/images/pupil_roundedPointingOut.png
Binary file not shown.
File renamed without changes
2 changes: 1 addition & 1 deletion DSF_QRCode.podspec
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
Pod::Spec.new do |s|

s.name = 'DSF_QRCode'
s.version = '23.0.0'
s.version = '24.0.0'
s.summary = 'A simple drop-in macOS/iOS/tvOS/watchOS QR Code generator view for Swift, Objective-C and SwiftUI.'
s.homepage = 'https://github.com/dagronf/QRCode'
s.license = { :type => 'MIT', :file => 'LICENSE' }
Expand Down
6 changes: 3 additions & 3 deletions Demo/Cocoapods Test/Cocoapods Mac Test/ContentView.swift
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ import QRCode
struct ContentView: View {
@State var content = "Hello, world!"

let style1 = QRCode.PixelShape.RoundedPath(cornerRadiusFraction: 0.8, hasInnerCorners: true)
let pixelShape = QRCode.PixelShape.RoundedPath(cornerRadiusFraction: 0.8, hasInnerCorners: true)

var body: some View {
VStack {
Expand All @@ -20,9 +20,9 @@ struct ContentView: View {
Divider()
QRCodeViewUI(
content: content,
pixelStyle: style1,
additionalQuietZonePixels: 3,
backgroundFractionalCornerRadius: 2
backgroundFractionalCornerRadius: 2,
onPixelShape: pixelShape
)
.frame(minWidth: 300, minHeight: 300)
}
Expand Down
6 changes: 3 additions & 3 deletions Demo/Cocoapods Test/Cocoapods Test/ContentView.swift
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ import QRCode
struct ContentView: View {
@State var content = "Hello, world!"

let style1 = QRCode.PixelShape.RoundedPath(cornerRadiusFraction: 0.8, hasInnerCorners: true)
let pixelShape = QRCode.PixelShape.RoundedPath(cornerRadiusFraction: 0.8, hasInnerCorners: true)

var body: some View {
VStack {
Expand All @@ -21,9 +21,9 @@ struct ContentView: View {
Divider()
QRCodeViewUI(
content: content,
pixelStyle: style1,
additionalQuietZonePixels: 3,
backgroundFractionalCornerRadius: 2
backgroundFractionalCornerRadius: 2,
onPixelShape: pixelShape
)
.frame(minWidth: 300, minHeight: 300)
}
Expand Down
10 changes: 5 additions & 5 deletions Demo/Cocoapods Test/Podfile.lock
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
PODS:
- DSF_QRCode (20.4.1):
- DSF_QRCode (23.0.0):
- SwiftImageReadWrite (~> 1.9.1)
- SwiftQRCodeGenerator (~> 2.0.2)
- SwiftImageReadWrite (1.9.1)
- SwiftImageReadWrite (1.9.2)
- SwiftQRCodeGenerator (2.0.2)

DEPENDENCIES:
Expand All @@ -18,10 +18,10 @@ EXTERNAL SOURCES:
:path: "../../"

SPEC CHECKSUMS:
DSF_QRCode: 7a8a264f95ad20544c87d60cf7793f1f699fe8fa
SwiftImageReadWrite: b06cb9bcdc56877c555fbb31bbfca98420982531
DSF_QRCode: 5a85047ccf37fca1cf6c57333131d18d9c8d23f8
SwiftImageReadWrite: f58e807c5e3e211b788b5e058c4da464096ed430
SwiftQRCodeGenerator: cc02fed209335064d0b0dd61b2a0874b9bc6bd5a

PODFILE CHECKSUM: 8bc17f7e1b88bd77e3f248afa8c852e64fc65d8d

COCOAPODS: 1.15.2
COCOAPODS: 1.16.2
36 changes: 22 additions & 14 deletions Demo/QRCodeView Demo/macOS/QRCode 3D AppKit/EyeStylesView.swift
Original file line number Diff line number Diff line change
Expand Up @@ -11,9 +11,12 @@ import AppKit
import DSFAppKitBuilder
import QRCode
import DSFValueBinders
import DSFMenuBuilder

class EyeStylesView: Element {

let flipTypes = ValueBinder(["none", "horizontally", "vertically", "both"])

init(qrCode: Observable<QRCode.Document>, _ updateBlock: @escaping () -> Void ) {
self.qrCodeObject = qrCode
self.updateBlock = updateBlock
Expand Down Expand Up @@ -63,7 +66,7 @@ class EyeStylesView: Element {

HDivider()

VStack(spacing: 4) {
VStack(spacing: 8) {

HStack {
Label("Radius:").font(.callout)
Expand All @@ -75,16 +78,22 @@ class EyeStylesView: Element {
self?.update()
}
}

HStack {
Label("Flipped:").font(.callout)
Toggle()
.controlSize(.small)
.bindOnOff(eyeFlipped)
.bindIsEnabled(eyeFlippedEnabled)
.onChange(of: eyeFlipped) { [weak self] newValue in
_ = self?.qrCode.design.shape.eye.setSettingValue(newValue, forKey: QRCode.SettingsKey.isFlipped)
self?.update()
}
Label("Flip:").font(.callout)
PopupButton {
MenuItem("none")
MenuItem("horizontally")
MenuItem("vertically")
MenuItem("both")
}
.bindSelection(eyeFlipped)
.bindIsEnabled(eyeFlippedEnabled)
.onChange { [weak self] popupIndex in
let newVal = QRCode.Flip(rawValue: popupIndex) ?? .none
_ = self?.qrCode.design.shape.eye.setSettingValue(newVal.rawValue, forKey: QRCode.SettingsKey.flip)
self?.update()
}
EmptyView()
}

Expand All @@ -101,7 +110,6 @@ class EyeStylesView: Element {
.bindIsEnabled(eyeSelectedCornersEnabled)
EmptyView()
}
.contentHugging(h: 1)
}
}
.edgeInsets(top: 4, left: 4, bottom: 4, right: 4)
Expand All @@ -111,8 +119,8 @@ class EyeStylesView: Element {
self.eyeCornerRadiusEnabled.wrappedValue = item.supportsSettingValue(forKey: QRCode.SettingsKey.cornerRadiusFraction)
self.eyeCornerRadius.wrappedValue = item.settingsValue(forKey: QRCode.SettingsKey.cornerRadiusFraction) ?? 0.65

self.eyeFlippedEnabled.wrappedValue = item.supportsSettingValue(forKey: QRCode.SettingsKey.isFlipped)
self.eyeFlipped.wrappedValue = item.settingsValue(forKey: QRCode.SettingsKey.isFlipped) ?? false
self.eyeFlippedEnabled.wrappedValue = item.supportsSettingValue(forKey: QRCode.SettingsKey.flip)
self.eyeFlipped.wrappedValue = item.settingsValue(forKey: QRCode.SettingsKey.flip) ?? 0

self.eyeSelectedCornersEnabled.wrappedValue = item.supportsSettingValue(forKey: QRCode.SettingsKey.corners)
if let value: Int = item.settingsValue(forKey: QRCode.SettingsKey.corners) {
Expand Down Expand Up @@ -147,7 +155,7 @@ class EyeStylesView: Element {
private lazy var eyeCornerRadius = ValueBinder(0.65)
private var eyeCornerRadiusEnabled = ValueBinder(false)

private lazy var eyeFlipped = ValueBinder(false)
private lazy var eyeFlipped = ValueBinder(0)
private var eyeFlippedEnabled = ValueBinder(false)

private lazy var eyeSelectedCorners = ValueBinder(NSSet()) { newValue in
Expand Down
32 changes: 20 additions & 12 deletions Demo/QRCodeView Demo/macOS/QRCode 3D AppKit/PupilStylesView.swift
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ import AppKit
import DSFAppKitBuilder
import QRCode
import DSFValueBinders
import DSFMenuBuilder

class PupilStylesView: Element {

Expand Down Expand Up @@ -75,17 +76,22 @@ class PupilStylesView: Element {
}

HStack {
Label("Flipped:").font(.callout)
Toggle()
.controlSize(.small)
.bindOnOff(pupilFlipped)
.bindIsEnabled(pupilFlippedEnabled)
Label("Flip:").font(.callout)
PopupButton {
MenuItem("none")
MenuItem("horizontally")
MenuItem("vertically")
MenuItem("both")
}
.bindSelection(pupilFlipped)
.bindIsEnabled(pupilFlippedEnabled)
.onChange { [weak self] popupIndex in
let newVal = QRCode.Flip(rawValue: popupIndex) ?? .none
_ = self?.qrCode.design.shape.pupil?.setSettingValue(newVal.rawValue, forKey: QRCode.SettingsKey.flip)
self?.update()
}
EmptyView()
}
.onChange(of: pupilFlipped) { [weak self] newValue in
_ = self?.qrCode.design.shape.pupil?.setSettingValue(newValue, forKey: QRCode.SettingsKey.isFlipped)
self?.update()
}

HStack {
Label("Inner corners:").font(.callout)
Expand Down Expand Up @@ -115,12 +121,14 @@ class PupilStylesView: Element {
}
}
}
.hugging(h: 1)
.edgeInsets(top: 4, left: 4, bottom: 4, right: 4)

private func sync() {
let item = qrCode.design.shape.actualPupilShape
self.pupilFlippedEnabled.wrappedValue = item.supportsSettingValue(forKey: QRCode.SettingsKey.isFlipped)
self.pupilFlipped.wrappedValue = item.settingsValue(forKey: QRCode.SettingsKey.isFlipped) ?? false

self.pupilFlippedEnabled.wrappedValue = item.supportsSettingValue(forKey: QRCode.SettingsKey.flip)
self.pupilFlipped.wrappedValue = item.settingsValue(forKey: QRCode.SettingsKey.flip) ?? 0

self.pupilHasInnerCornersEnabled.wrappedValue = item.supportsSettingValue(forKey: QRCode.SettingsKey.hasInnerCorners)
self.pupilHasInnerCorners.wrappedValue = item.settingsValue(forKey: QRCode.SettingsKey.hasInnerCorners) ?? false
Expand Down Expand Up @@ -160,7 +168,7 @@ class PupilStylesView: Element {

private lazy var pupilSelection: ValueBinder<Int> = ValueBinder(0)

private lazy var pupilFlipped = ValueBinder(false)
private lazy var pupilFlipped = ValueBinder(0)
private var pupilFlippedEnabled = ValueBinder(false)

private lazy var pupilHasInnerCorners = ValueBinder(false)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ class ViewController: NSViewController {
q2.rebuildQRCode()

q3.design.shape.onPixels = QRCode.PixelShape.RoundedPath()
q3.design.shape.eye = QRCode.EyeShape.RoundedPointingIn()
q3.design.shape.eye = QRCode.EyeShape.RoundedPointingIn()
q3.rebuildQRCode()

let gr = QRCode.FillStyle.RadialGradient(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,7 @@ struct EyeSettingsView: View {
@State var radiusFraction: CGFloat = 0
@State var supportsRadiusFraction = false

@State var flipped = false
@State var flipped = QRCode.Flip.none
@State var supportsFlipped = false

@State var corners = QRCode.Corners.all
Expand Down Expand Up @@ -85,12 +85,15 @@ struct EyeSettingsView: View {
document.objectWillChange.send()
}

Toggle(isOn: $flipped) {
Text("flipped")
Picker("flip", selection: $flipped) {
Text("none").tag(QRCode.Flip.none)
Text("horizontally").tag(QRCode.Flip.horizontally)
Text("vertically").tag(QRCode.Flip.vertically)
Text("both").tag(QRCode.Flip.both)
}
.disabled(!supportsFlipped)
.onChange(of: flipped) { newValue in
_ = document.qrcode.design.shape.eye.setSettingValue(newValue, forKey: QRCode.SettingsKey.isFlipped)
_ = document.qrcode.design.shape.eye.setSettingValue(newValue.rawValue, forKey: QRCode.SettingsKey.flip)
document.objectWillChange.send()
}

Expand All @@ -116,8 +119,9 @@ struct EyeSettingsView: View {
supportsRadiusFraction = generator.supportsSettingValue(forKey: QRCode.SettingsKey.cornerRadiusFraction)
radiusFraction = generator.settingsValue(forKey: QRCode.SettingsKey.cornerRadiusFraction) ?? 0

supportsFlipped = generator.supportsSettingValue(forKey: QRCode.SettingsKey.isFlipped)
flipped = generator.settingsValue(forKey: QRCode.SettingsKey.isFlipped) ?? false
supportsFlipped = generator.supportsSettingValue(forKey: QRCode.SettingsKey.flip)
let fVal = generator.settingsValue(forKey: QRCode.SettingsKey.flip) ?? 0
flipped = QRCode.Flip(rawValue: fVal) ?? .none

supportsCorners = generator.supportsSettingValue(forKey: QRCode.SettingsKey.corners)
let c: Int = generator.settingsValue(forKey: QRCode.SettingsKey.corners) ?? 0
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@ struct PupilSettingsView: View {
@EnvironmentObject var document: QRCode_3DDocument
@State var generator: QRCodePupilShapeGenerator = QRCode.PupilShape.Square()

@State var flipped = false
@State var flipped: QRCode.Flip = .none
@State var supportsFlipped = false

@State var hasInnerCorners = false
Expand Down Expand Up @@ -63,20 +63,22 @@ struct PupilSettingsView: View {
Divider()

Form {
//VStack(alignment: .leading, spacing: 6) {
LabeledContent("style") {
StyleSelectorView(current: document.qrcode.design.style.actualPupilStyle) { newFill in
document.qrcode.design.style.pupil = newFill
document.objectWillChange.send()
}
}

Toggle(isOn: $flipped) {
Text("flipped")

Picker("flip", selection: $flipped) {
Text("none").tag(QRCode.Flip.none)
Text("horizontally").tag(QRCode.Flip.horizontally)
Text("vertically").tag(QRCode.Flip.vertically)
Text("both").tag(QRCode.Flip.both)
}
.disabled(!supportsFlipped)
.onChange(of: flipped) { newValue in
_ = document.qrcode.design.shape.pupil?.setSettingValue(newValue, forKey: QRCode.SettingsKey.isFlipped)
_ = document.qrcode.design.shape.pupil?.setSettingValue(newValue.rawValue, forKey: QRCode.SettingsKey.flip)
document.objectWillChange.send()
}

Expand Down Expand Up @@ -109,8 +111,9 @@ struct PupilSettingsView: View {
func sync() {
generator = document.qrcode.design.shape.actualPupilShape

supportsFlipped = generator.supportsSettingValue(forKey: QRCode.SettingsKey.isFlipped)
flipped = generator.settingsValue(forKey: QRCode.SettingsKey.isFlipped) ?? false
supportsFlipped = generator.supportsSettingValue(forKey: QRCode.SettingsKey.flip)
let fVal = generator.settingsValue(forKey: QRCode.SettingsKey.flip) ?? 0
flipped = QRCode.Flip(rawValue: fVal) ?? .none

supportsHasInnerCorners = generator.supportsSettingValue(forKey: QRCode.SettingsKey.hasInnerCorners)
hasInnerCorners = generator.settingsValue(forKey: QRCode.SettingsKey.hasInnerCorners) ?? false
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -24,8 +24,8 @@
"repositoryURL": "https://github.com/dagronf/SwiftImageReadWrite",
"state": {
"branch": null,
"revision": "016a9cb842038e4078a91e506e35cef4f4ff76ff",
"version": "1.7.2"
"revision": "42ace2412279f18bc264bc306e96b51c36e12a33",
"version": "1.9.2"
}
}
]
Expand Down
9 changes: 4 additions & 5 deletions Documentation/shape-configuration/eye-styles.md
Original file line number Diff line number Diff line change
Expand Up @@ -11,23 +11,22 @@
| <a href="../../Art/images/eye_dotDragVertical.png"><img src="../../Art/images/eye_dotDragVertical.png" width="75" /></a> | __dotDragVertical__ | `QRCode.EyeShape.DotDragVertical` | _none_ |
| <a href="../../Art/images/eye_edges.png"><img src="../../Art/images/eye_edges.png" width="75" /></a> | __edges__ | `QRCode.EyeShape.Edges` |__Corner radius__<br/> |
| <a href="../../Art/images/eye_explode.png"><img src="../../Art/images/eye_explode.png" width="75" /></a> | __explode__ | `QRCode.EyeShape.Explode` | _none_ |
| <a href="../../Art/images/eye_eye.png"><img src="../../Art/images/eye_eye.png" width="75" /></a> | __eye__ | `QRCode.EyeShape.Eye` |__Flippable__<br/> |
| <a href="../../Art/images/eye_eye.png"><img src="../../Art/images/eye_eye.png" width="75" /></a> | __eye__ | `QRCode.EyeShape.Eye` |__Flippable__<br/>__Configurable eye corners__<br/> |
| <a href="../../Art/images/eye_fireball.png"><img src="../../Art/images/eye_fireball.png" width="75" /></a> | __fireball__ | `QRCode.EyeShape.Fireball` | _none_ |
| <a href="../../Art/images/eye_headlight.png"><img src="../../Art/images/eye_headlight.png" width="75" /></a> | __headlight__ | `QRCode.EyeShape.Headlight` | _none_ |
| <a href="../../Art/images/eye_headlight.png"><img src="../../Art/images/eye_headlight.png" width="75" /></a> | __headlight__ | `QRCode.EyeShape.Headlight` | __Flippable__<br/> |
| <a href="../../Art/images/eye_leaf.png"><img src="../../Art/images/eye_leaf.png" width="75" /></a> | __leaf__ | `QRCode.EyeShape.Leaf` | _none_ |
| <a href="../../Art/images/eye_peacock.png"><img src="../../Art/images/eye_peacock.png" width="75" /></a> | __peacock__ | `QRCode.EyeShape.Peacock` | _none_ |
| <a href="../../Art/images/eye_pinch.png"><img src="../../Art/images/eye_pinch.png" width="75" /></a> | __pinch__ | `QRCode.EyeShape.Pinch` | _none_ |
| <a href="../../Art/images/eye_pixels.png"><img src="../../Art/images/eye_pixels.png" width="75" /></a> | __pixels__ | `QRCode.EyeShape.Pixels` |__Corner radius__<br/> |
| <a href="../../Art/images/eye_roundedOuter.png"><img src="../../Art/images/eye_roundedOuter.png" width="75" /></a> | __roundedOuter__ | `QRCode.EyeShape.RoundedOuter` |__Flippable__<br/> |
| <a href="../../Art/images/eye_roundedPointingIn.png"><img src="../../Art/images/eye_roundedPointingIn.png" width="75" /></a> | __roundedPointingIn__ | `QRCode.EyeShape.RoundedPointingIn` | _none_ |
| <a href="../../Art/images/eye_roundedPointingOut.png"><img src="../../Art/images/eye_roundedPointingOut.png" width="75" /></a> | __roundedPointingOut__ | `QRCode.EyeShape.RoundedPointingOut` | _none_ |
| <a href="../../Art/images/eye_roundedPointingIn.png"><img src="../../Art/images/eye_roundedPointingIn.png" width="75" /></a> | __roundedPointingIn__ | `QRCode.EyeShape.RoundedPointingIn` |__Flippable__<br/> |
| <a href="../../Art/images/eye_roundedRect.png"><img src="../../Art/images/eye_roundedRect.png" width="75" /></a> | __roundedRect__ | `QRCode.EyeShape.RoundedRect` |__Corner radius__<br/> |
| <a href="../../Art/images/eye_shield.png"><img src="../../Art/images/eye_shield.png" width="75" /></a> | __shield__ | `QRCode.EyeShape.Shield` |__Configurable corners__<br/> |
| <a href="../../Art/images/eye_spikyCircle.png"><img src="../../Art/images/eye_spikyCircle.png" width="75" /></a> | __spikyCircle__ | `QRCode.EyeShape.SpikyCircle` | _none_ |
| <a href="../../Art/images/eye_square.png"><img src="../../Art/images/eye_square.png" width="75" /></a> | __square__ | `QRCode.EyeShape.Square` | _none_ |
| <a href="../../Art/images/eye_squarePeg.png"><img src="../../Art/images/eye_squarePeg.png" width="75" /></a> | __squarePeg__ | `QRCode.EyeShape.SquarePeg` | _none_ |
| <a href="../../Art/images/eye_squircle.png"><img src="../../Art/images/eye_squircle.png" width="75" /></a> | __squircle__ | `QRCode.EyeShape.Squircle` | _none_ |
| <a href="../../Art/images/eye_surroundingBars.png"><img src="../../Art/images/eye_surroundingBars.png" width="75" /></a> | __surroundingBars__ | `QRCode.EyeShape.SurroundingBars` | _none_ |
| <a href="../../Art/images/eye_teardrop.png"><img src="../../Art/images/eye_teardrop.png" width="75" /></a> | __teardrop__ | `QRCode.EyeShape.Teardrop` | _none_ |
| <a href="../../Art/images/eye_teardrop.png"><img src="../../Art/images/eye_teardrop.png" width="75" /></a> | __teardrop__ | `QRCode.EyeShape.Teardrop` | __Flippable__<br/> |
| <a href="../../Art/images/eye_ufo.png"><img src="../../Art/images/eye_ufo.png" width="75" /></a> | __ufo__ | `QRCode.EyeShape.UFO` |__Flippable__<br/> |
| <a href="../../Art/images/eye_usePixelShape.png"><img src="../../Art/images/eye_usePixelShape.png" width="75" /></a> | __usePixelShape__ | `QRCode.EyeShape.UsePixelShape` | _none_ |
3 changes: 1 addition & 2 deletions Documentation/shape-configuration/pupil-styles.md
Original file line number Diff line number Diff line change
Expand Up @@ -24,8 +24,7 @@
| <a href="../../Art/images/pupil_pinch.png"><img src="../../Art/images/pupil_pinch.png" width="75" /></a> | __pinch__ | `QRCode.PixelShape.Pinch` | _none_ |
| <a href="../../Art/images/pupil_pixels.png"><img src="../../Art/images/pupil_pixels.png" width="75" /></a> | __pixels__ | `QRCode.PixelShape.Pixels` |__Corner radius__<br/> |
| <a href="../../Art/images/pupil_roundedOuter.png"><img src="../../Art/images/pupil_roundedOuter.png" width="75" /></a> | __roundedOuter__ | `QRCode.PixelShape.RoundedOuter` |__Flippable__<br/> |
| <a href="../../Art/images/pupil_roundedPointingIn.png"><img src="../../Art/images/pupil_roundedPointingIn.png" width="75" /></a> | __roundedPointingIn__ | `QRCode.PixelShape.RoundedPointingIn` | _none_ |
| <a href="../../Art/images/pupil_roundedPointingOut.png"><img src="../../Art/images/pupil_roundedPointingOut.png" width="75" /></a> | __roundedPointingOut__ | `QRCode.PixelShape.RoundedPointingOut` | _none_ |
| <a href="../../Art/images/pupil_roundedPointingIn.png"><img src="../../Art/images/pupil_roundedPointingIn.png" width="75" /></a> | __roundedPointingIn__ | `QRCode.PixelShape.RoundedPointingIn` |__Flippable__<br/> |
| <a href="../../Art/images/pupil_roundedRect.png"><img src="../../Art/images/pupil_roundedRect.png" width="75" /></a> | __roundedRect__ | `QRCode.PixelShape.RoundedRect` |__Corner radius__<br/> |
| <a href="../../Art/images/pupil_seal.png"><img src="../../Art/images/pupil_seal.png" width="75" /></a> | __seal__ | `QRCode.PixelShape.Seal` | _none_ |
| <a href="../../Art/images/pupil_shield.png"><img src="../../Art/images/pupil_shield.png" width="75" /></a> | __shield__ | `QRCode.PixelShape.Shield` |__Configurable corners__<br/> |
Expand Down
Loading

0 comments on commit 607dd32

Please sign in to comment.