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,
bgColor: first.color,
bgOverlayColor: first.secondaryColor,
centerImage: first.graphic))
centerImage: first.graphic,
innerColor: first.color))
} else {
IconView(iconViewModel: IconViewModel.great)
}

View File

@@ -50,7 +50,16 @@ struct IconView: View {
Circle()
.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,
height: geo.size.height*facePercSize,
alignment: .center)
@@ -82,17 +91,17 @@ struct IconView_Previews: PreviewProvider {
IconView(iconViewModel: IconViewModel.great)
.frame(width: 256, height: 256, alignment: .center)
// IconView(iconViewModel: IconViewModel.good, isPreview: true)
// .frame(width: 256, height: 256, alignment: .center)
//
// IconView(iconViewModel: IconViewModel.average, isPreview: true)
// .frame(width: 256, height: 256, alignment: .center)
//
// IconView(iconViewModel: IconViewModel.bad, isPreview: true)
// .frame(width: 256, height: 256, alignment: .center)
//
// IconView(iconViewModel: IconViewModel.horrible, isPreview: true)
// .frame(width: 256, height: 256, alignment: .center)
IconView(iconViewModel: IconViewModel.good)
.frame(width: 256, height: 256, alignment: .center)
IconView(iconViewModel: IconViewModel.average)
.frame(width: 256, height: 256, alignment: .center)
IconView(iconViewModel: IconViewModel.bad)
.frame(width: 256, height: 256, alignment: .center)
IconView(iconViewModel: IconViewModel.horrible)
.frame(width: 256, height: 256, alignment: .center)
//
// IconView(iconViewModel: IconViewModel(backgroundImage: EmojiMoodImages.icon(forMood: .horrible),
// bgColor: MoodTints.Neon.color(forMood: .horrible),

View File

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

View File

@@ -33,12 +33,12 @@ struct SettingsView: View {
showOnboardingButton
whyBackgroundMode
specialThanksCell
}
Group {
addTestDataCell
clearDB
randomIcons
if useCloudKit {
cloudKitStatus
@@ -220,6 +220,45 @@ struct SettingsView: View {
.fixedSize(horizontal: false, vertical: true)
.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 {