create random icons and save to documents dir

This commit is contained in:
Trey t
2022-03-05 12:10:03 -06:00
parent d56e74053e
commit f41b1866a6
4 changed files with 85 additions and 28 deletions

View File

@@ -267,7 +267,8 @@ struct SmallGraphicWidgetView: View {
IconView(iconViewModel: IconViewModel(backgroundImage: first.graphic, IconView(iconViewModel: IconViewModel(backgroundImage: first.graphic,
bgColor: first.color, bgColor: first.color,
bgOverlayColor: first.secondaryColor, bgOverlayColor: first.secondaryColor,
centerImage: first.graphic)) centerImage: first.graphic,
innerColor: first.color))
} else { } else {
IconView(iconViewModel: IconViewModel.great) IconView(iconViewModel: IconViewModel.great)
} }

View File

@@ -50,7 +50,16 @@ struct IconView: View {
Circle() Circle()
.strokeBorder(iconViewModel.bgColor, lineWidth: geo.size.width * 0.045) .strokeBorder(iconViewModel.bgColor, lineWidth: geo.size.width * 0.045)
.background(Circle().fill(iconViewModel.bgColor)) .background(Circle().fill(.clear))
.frame(width: geo.size.width*facePercSize,
height: geo.size.height*facePercSize,
alignment: .center)
.alignmentGuide(.top, computeValue: { _ in
return geo.size.width/2
})
Circle()
.fill(iconViewModel.innerColor)
.frame(width: geo.size.width*facePercSize, .frame(width: geo.size.width*facePercSize,
height: geo.size.height*facePercSize, height: geo.size.height*facePercSize,
alignment: .center) alignment: .center)
@@ -82,17 +91,17 @@ struct IconView_Previews: PreviewProvider {
IconView(iconViewModel: IconViewModel.great) IconView(iconViewModel: IconViewModel.great)
.frame(width: 256, height: 256, alignment: .center) .frame(width: 256, height: 256, alignment: .center)
// IconView(iconViewModel: IconViewModel.good, isPreview: true) IconView(iconViewModel: IconViewModel.good)
// .frame(width: 256, height: 256, alignment: .center) .frame(width: 256, height: 256, alignment: .center)
//
// IconView(iconViewModel: IconViewModel.average, isPreview: true) IconView(iconViewModel: IconViewModel.average)
// .frame(width: 256, height: 256, alignment: .center) .frame(width: 256, height: 256, alignment: .center)
//
// IconView(iconViewModel: IconViewModel.bad, isPreview: true) IconView(iconViewModel: IconViewModel.bad)
// .frame(width: 256, height: 256, alignment: .center) .frame(width: 256, height: 256, alignment: .center)
//
// IconView(iconViewModel: IconViewModel.horrible, isPreview: true) IconView(iconViewModel: IconViewModel.horrible)
// .frame(width: 256, height: 256, alignment: .center) .frame(width: 256, height: 256, alignment: .center)
// //
// IconView(iconViewModel: IconViewModel(backgroundImage: EmojiMoodImages.icon(forMood: .horrible), // IconView(iconViewModel: IconViewModel(backgroundImage: EmojiMoodImages.icon(forMood: .horrible),
// bgColor: MoodTints.Neon.color(forMood: .horrible), // bgColor: MoodTints.Neon.color(forMood: .horrible),

View File

@@ -11,34 +11,40 @@ class IconViewModel: ObservableObject {
static let numberOfBGItems = 109 static let numberOfBGItems = 109
static let great = IconViewModel(backgroundImage: MoodImages.FontAwesome.icon(forMood: .great), static let great = IconViewModel(backgroundImage: MoodImages.FontAwesome.icon(forMood: .great),
bgColor: Color(hex: "31d158"), bgColor: Color(hex: "31d158"),
bgOverlayColor: Color(hex: "208939"), bgOverlayColor: Color(hex: "208939"),
centerImage: MoodImages.FontAwesome.icon(forMood: .great)) centerImage: MoodImages.FontAwesome.icon(forMood: .great),
innerColor: Color(hex: "31d158"))
static let good = IconViewModel(backgroundImage: MoodImages.FontAwesome.icon(forMood: .good), static let good = IconViewModel(backgroundImage: MoodImages.FontAwesome.icon(forMood: .good),
bgColor: Color(hex: "ffd709"), bgColor: Color(hex: "ffd709"),
bgOverlayColor: Color(hex: "9d8405"), bgOverlayColor: Color(hex: "9d8405"),
centerImage: MoodImages.FontAwesome.icon(forMood: .good)) centerImage: MoodImages.FontAwesome.icon(forMood: .good),
innerColor: Color(hex: "ffd709"))
static let average = IconViewModel(backgroundImage: MoodImages.FontAwesome.icon(forMood: .average), static let average = IconViewModel(backgroundImage: MoodImages.FontAwesome.icon(forMood: .average),
bgColor: Color(hex: "0b84ff"), bgColor: Color(hex: "0b84ff"),
bgOverlayColor: Color(hex: "074f9a"), bgOverlayColor: Color(hex: "074f9a"),
centerImage: MoodImages.FontAwesome.icon(forMood: .average)) centerImage: MoodImages.FontAwesome.icon(forMood: .average),
innerColor: Color(hex: "0b84ff"))
static let bad = IconViewModel(backgroundImage: MoodImages.FontAwesome.icon(forMood: .bad), static let bad = IconViewModel(backgroundImage: MoodImages.FontAwesome.icon(forMood: .bad),
bgColor: Color(hex: "ff9f0b"), bgColor: Color(hex: "ff9f0b"),
bgOverlayColor: Color(hex: "a06407"), bgOverlayColor: Color(hex: "a06407"),
centerImage: MoodImages.FontAwesome.icon(forMood: .bad)) centerImage: MoodImages.FontAwesome.icon(forMood: .bad),
innerColor: Color(hex: "ff9f0b"))
static let horrible = IconViewModel(backgroundImage: MoodImages.FontAwesome.icon(forMood: .horrible), static let horrible = IconViewModel(backgroundImage: MoodImages.FontAwesome.icon(forMood: .horrible),
bgColor: Color(hex: "fe5257"), bgColor: Color(hex: "fe5257"),
bgOverlayColor: Color(hex: "a92b26"), bgOverlayColor: Color(hex: "a92b26"),
centerImage: MoodImages.FontAwesome.icon(forMood: .horrible)) centerImage: MoodImages.FontAwesome.icon(forMood: .horrible),
innerColor: Color(hex: "fe5257"))
init(backgroundImage: Image, init(backgroundImage: Image,
bgColor: Color, bgColor: Color,
bgOverlayColor: Color, bgOverlayColor: Color,
centerImage: Image centerImage: Image,
innerColor: Color
) { ) {
var blah = [(Image, UUID)]() var blah = [(Image, UUID)]()
@@ -50,12 +56,14 @@ class IconViewModel: ObservableObject {
self.bgColor = bgColor self.bgColor = bgColor
self.bgOverlayColor = bgOverlayColor self.bgOverlayColor = bgOverlayColor
self.centerImage = centerImage self.centerImage = centerImage
self.innerColor = innerColor
} }
@Published var background: [(Image, UUID)] @Published var background: [(Image, UUID)]
@Published var bgColor: Color @Published var bgColor: Color
@Published var bgOverlayColor: Color @Published var bgOverlayColor: Color
@Published var centerImage: Image @Published var centerImage: Image
@Published var innerColor: Color
} }
enum CustomIconBackGroundOptions: String, CaseIterable, Codable { enum CustomIconBackGroundOptions: String, CaseIterable, Codable {

View File

@@ -33,12 +33,12 @@ struct SettingsView: View {
showOnboardingButton showOnboardingButton
whyBackgroundMode whyBackgroundMode
specialThanksCell specialThanksCell
} }
Group { Group {
addTestDataCell addTestDataCell
clearDB clearDB
randomIcons
if useCloudKit { if useCloudKit {
cloudKitStatus cloudKitStatus
@@ -220,6 +220,45 @@ struct SettingsView: View {
.fixedSize(horizontal: false, vertical: true) .fixedSize(horizontal: false, vertical: true)
.cornerRadius(10, corners: [.topLeft, .topRight, .bottomLeft, .bottomRight]) .cornerRadius(10, corners: [.topLeft, .topRight, .bottomLeft, .bottomRight])
} }
private var randomIcons: some View {
ZStack {
theme.currentTheme.secondaryBGColor
Button(action: {
var iconViews = [UIImage]()
for _ in 0...300 {
iconViews.append(
IconView(iconViewModel: IconViewModel(
backgroundImage: MoodImages.FontAwesome.icon(forMood: .great),
bgColor: Color.random(),
bgOverlayColor: Color.random(),
centerImage: MoodImages.FontAwesome.icon(forMood: .great),
innerColor: Color.random())
).asImage(size: CGSize(width: 1024, height: 1024)))
}
for (idx, image) in iconViews.enumerated() {
let paths = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask)
var path = paths[0].appendingPathComponent("icons").path
path = path.appending("\(idx).jpg")
let url = URL(fileURLWithPath: path)
do {
try image.jpegData(compressionQuality: 1.0)?.write(to: url, options: .atomic)
print(url)
} catch {
print(error.localizedDescription)
}
}
}, label: {
Text("Create random icons")
.foregroundColor(theme.currentTheme.labelColor)
})
.padding()
}
.fixedSize(horizontal: false, vertical: true)
.cornerRadius(10, corners: [.topLeft, .topRight, .bottomLeft, .bottomRight])
}
} }
struct SettingsView_Previews: PreviewProvider { struct SettingsView_Previews: PreviewProvider {