@@ -226,11 +226,11 @@ struct PineTimeStyleWF: View {
226226 ZStack {
227227 backgroundColor
228228 if !hour24 {
229- CustomTextView ( text: Calendar . current. component ( . hour, from: Date ( ) ) > 12 ? " P \n M " : " A \n M " , font: . custom( " JetBrainsMono-ExtraBold " , size: geometry. size. width * 0.075 ) , lineSpacing: - 4 )
229+ CustomTextView ( text: Calendar . current. component ( . hour, from: Date ( ) ) >= 12 ? " P \n M " : " A \n M " , font: . custom( " JetBrainsMono-ExtraBold " , size: geometry. size. width * 0.075 ) , lineSpacing: - 4 )
230230 . foregroundColor ( timeColor)
231231 . frame ( width: geometry. size. width, height: geometry. size. height, alignment: . bottomLeading)
232232 }
233- if Calendar . current. component ( . hour, from: Date ( ) ) > 12 && !hour24 {
233+ if Calendar . current. component ( . hour, from: Date ( ) ) >= 12 && !hour24 {
234234 CustomTextView ( text: " \( String ( format: " %02d " , Calendar . current. component ( . hour, from: Date ( ) ) - 12 ) ) \n \( String ( format: " %02d " , Calendar . current. component ( . minute, from: Date ( ) ) ) ) " , font: . custom( " OpenSans-light " , size: geometry. size. width * 0.62 ) , lineSpacing: - geometry. size. width * 0.35 )
235235 . foregroundColor ( timeColor)
236236 . position ( x: geometry. size. width / 2.3 , y: geometry. size. height / 2.0 )
@@ -295,11 +295,11 @@ struct DigitalWF: View {
295295 var body : some View {
296296 ZStack {
297297 if !hour24 {
298- CustomTextView ( text: Calendar . current. component ( . hour, from: Date ( ) ) > 12 ? " PM " : " AM " , font: . custom( " JetBrainsMono-Bold " , size: geometry. size. width * 0.085 ) , lineSpacing: 0 )
298+ CustomTextView ( text: Calendar . current. component ( . hour, from: Date ( ) ) >= 12 ? " PM " : " AM " , font: . custom( " JetBrainsMono-Bold " , size: geometry. size. width * 0.085 ) , lineSpacing: 0 )
299299 . foregroundColor ( . white)
300300 . frame ( width: geometry. size. width, height: geometry. size. height / 1.95 , alignment: . topTrailing)
301301 }
302- if Calendar . current. component ( . hour, from: Date ( ) ) > 12 && !hour24 {
302+ if Calendar . current. component ( . hour, from: Date ( ) ) >= 12 && !hour24 {
303303 CustomTextView ( text: " \( Calendar . current. component ( . hour, from: Date ( ) ) - 12 ) : \( String ( format: " %02d " , Calendar . current. component ( . minute, from: Date ( ) ) ) ) " , font: . custom( " JetBrainsMono-ExtraBold " , size: geometry. size. width * 0.33 ) , lineSpacing: 0 )
304304 . foregroundColor ( . white)
305305 . frame ( maxWidth: . infinity, maxHeight: . infinity, alignment: . trailing)
@@ -330,117 +330,183 @@ struct InfineatWF: View {
330330 return true
331331 }
332332 }
333+
334+ let orangeColors : [ Color ] = [
335+ Color ( red: 0xfd / 255.0 , green: 0x87 / 255.0 , blue: 0x2b / 255.0 ) ,
336+ Color ( red: 0xf0 / 255.0 , green: 0x59 / 255.0 , blue: 0x3b / 255.0 ) ,
337+ Color ( red: 0x6f / 255.0 , green: 0x10 / 255.0 , blue: 0x00 / 255.0 ) ,
338+ Color ( red: 0xfd / 255.0 , green: 0x7a / 255.0 , blue: 0x0a / 255.0 ) ,
339+ Color ( red: 0xe8 / 255.0 , green: 0x51 / 255.0 , blue: 0x02 / 255.0 ) ,
340+ Color ( red: 0xea / 255.0 , green: 0x1c / 255.0 , blue: 0x00 / 255.0 )
341+ ]
342+
343+ let blueColors : [ Color ] = [
344+ Color ( red: 0xe7 / 255.0 , green: 0xf8 / 255.0 , blue: 0xff / 255.0 ) ,
345+ Color ( red: 0x16 / 255.0 , green: 0x36 / 255.0 , blue: 0xff / 255.0 ) ,
346+ Color ( red: 0x18 / 255.0 , green: 0x2a / 255.0 , blue: 0x8b / 255.0 ) ,
347+ Color ( red: 0xe7 / 255.0 , green: 0xf8 / 255.0 , blue: 0xff / 255.0 ) ,
348+ Color ( red: 0x59 / 255.0 , green: 0x91 / 255.0 , blue: 0xff / 255.0 ) ,
349+ Color ( red: 0x16 / 255.0 , green: 0x36 / 255.0 , blue: 0xff / 255.0 )
350+ ]
351+
352+ let greenColors : [ Color ] = [
353+ Color ( red: 0xb8 / 255.0 , green: 0xff / 255.0 , blue: 0x9b / 255.0 ) ,
354+ Color ( red: 0x08 / 255.0 , green: 0x86 / 255.0 , blue: 0x08 / 255.0 ) ,
355+ Color ( red: 0x00 / 255.0 , green: 0x4a / 255.0 , blue: 0x00 / 255.0 ) ,
356+ Color ( red: 0xb8 / 255.0 , green: 0xff / 255.0 , blue: 0x9b / 255.0 ) ,
357+ Color ( red: 0x62 / 255.0 , green: 0xd5 / 255.0 , blue: 0x15 / 255.0 ) ,
358+ Color ( red: 0x00 / 255.0 , green: 0x74 / 255.0 , blue: 0x00 / 255.0 )
359+ ]
360+
361+ let rainbowColors : [ Color ] = [
362+ Color ( red: 0x2d / 255.0 , green: 0xa4 / 255.0 , blue: 0x00 / 255.0 ) ,
363+ Color ( red: 0xac / 255.0 , green: 0x09 / 255.0 , blue: 0xc4 / 255.0 ) ,
364+ Color ( red: 0xfe / 255.0 , green: 0x03 / 255.0 , blue: 0x03 / 255.0 ) ,
365+ Color ( red: 0x0d / 255.0 , green: 0x57 / 255.0 , blue: 0xff / 255.0 ) ,
366+ Color ( red: 0xe0 / 255.0 , green: 0xb9 / 255.0 , blue: 0x00 / 255.0 ) ,
367+ Color ( red: 0xe8 / 255.0 , green: 0x51 / 255.0 , blue: 0x02 / 255.0 )
368+ ]
369+
370+ let grayColors : [ Color ] = [
371+ Color ( red: 0xee / 255.0 , green: 0xee / 255.0 , blue: 0xee / 255.0 ) ,
372+ Color ( red: 0x98 / 255.0 , green: 0x95 / 255.0 , blue: 0x9b / 255.0 ) ,
373+ Color ( red: 0x19 / 255.0 , green: 0x19 / 255.0 , blue: 0x19 / 255.0 ) ,
374+ Color ( red: 0xee / 255.0 , green: 0xee / 255.0 , blue: 0xee / 255.0 ) ,
375+ Color ( red: 0x91 / 255.0 , green: 0x91 / 255.0 , blue: 0x91 / 255.0 ) ,
376+ Color ( red: 0x3a / 255.0 , green: 0x3a / 255.0 , blue: 0x3a / 255.0 )
377+ ]
378+
379+ let nordBlueColors : [ Color ] = [
380+ Color ( red: 0xc3 / 255.0 , green: 0xda / 255.0 , blue: 0xf2 / 255.0 ) ,
381+ Color ( red: 0x4d / 255.0 , green: 0x78 / 255.0 , blue: 0xce / 255.0 ) ,
382+ Color ( red: 0x15 / 255.0 , green: 0x34 / 255.0 , blue: 0x51 / 255.0 ) ,
383+ Color ( red: 0xc3 / 255.0 , green: 0xda / 255.0 , blue: 0xf2 / 255.0 ) ,
384+ Color ( red: 0x5d / 255.0 , green: 0x8a / 255.0 , blue: 0xd2 / 255.0 ) ,
385+ Color ( red: 0x21 / 255.0 , green: 0x51 / 255.0 , blue: 0x8a / 255.0 )
386+ ]
387+
388+ let nordGreenColors : [ Color ] = [
389+ Color ( red: 0xd5 / 255.0 , green: 0xf0 / 255.0 , blue: 0xe9 / 255.0 ) ,
390+ Color ( red: 0x23 / 255.0 , green: 0x83 / 255.0 , blue: 0x73 / 255.0 ) ,
391+ Color ( red: 0x1d / 255.0 , green: 0x41 / 255.0 , blue: 0x3f / 255.0 ) ,
392+ Color ( red: 0xd5 / 255.0 , green: 0xf0 / 255.0 , blue: 0xe9 / 255.0 ) ,
393+ Color ( red: 0x2f / 255.0 , green: 0xb8 / 255.0 , blue: 0xa2 / 255.0 ) ,
394+ Color ( red: 0x11 / 255.0 , green: 0x70 / 255.0 , blue: 0x5a / 255.0 )
395+ ]
396+
333397 func infineatColor( for item: InfineatItem ) -> Color {
334- /*
335- 0. orange
336- 1. blue
337- 2. green
338- 3. rainbow
339- 4. gray
340- 5. nordBlue
341- 6. nordGreen
342-
343- TODO: Add colors from watch face source
344- */
345-
346398 switch item {
347399 case . base:
348400 switch bleManagerVal. infineatColorIndex {
349401 case 0 :
350- return Color ( " Maroon " )
351- case 1 , 5 :
352- return Color ( " Navy " )
353- case 2 , 6 :
354- return Color ( " DarkGreen " )
402+ return orangeColors [ 2 ]
403+ case 1 :
404+ return blueColors [ 2 ]
405+ case 2 :
406+ return greenColors [ 2 ]
355407 case 3 :
356- return Color ( . red )
408+ return rainbowColors [ 2 ]
357409 case 4 :
358- return Color . darkestGray
410+ return grayColors [ 2 ]
411+ case 5 :
412+ return nordBlueColors [ 2 ]
413+ case 6 :
414+ return nordGreenColors [ 2 ]
359415 default :
360416 break
361417 }
362418 case . bottom:
363419 switch bleManagerVal. infineatColorIndex {
364420 case 0 :
365- return Color ( " Orange " ) . opacity ( 0.9 )
421+ return orangeColors [ 1 ]
366422 case 1 :
367- return Color . blue . opacity ( 0.9 )
423+ return blueColors [ 1 ]
368424 case 2 :
369- return Color ( " LightGreen " ) . opacity ( 0.9 )
425+ return greenColors [ 1 ]
370426 case 3 :
371- return Color . purple
427+ return rainbowColors [ 1 ]
372428 case 4 :
373- return Color . gray
429+ return grayColors [ 1 ]
374430 case 5 :
375- return Color ( " BabyBlue " ) . opacity ( 0.9 )
431+ return nordBlueColors [ 1 ]
376432 case 6 :
377- return Color . mint . opacity ( 0.9 )
433+ return nordGreenColors [ 1 ]
378434 default :
379435 break
380436 }
381437 case . topTop:
382438 switch bleManagerVal. infineatColorIndex {
383439 case 0 :
384- return Color ( " Orange " )
440+ return orangeColors [ 4 ]
385441 case 1 :
386- return Color ( " LightBlue " )
442+ return blueColors [ 4 ]
387443 case 2 :
388- return Color ( " LightGreen " )
444+ return greenColors [ 4 ]
389445 case 3 :
390- return Color ( " Yellow " )
446+ return rainbowColors [ 4 ]
391447 case 4 :
392- return Color . gray
448+ return grayColors [ 4 ]
393449 case 5 :
394- return Color ( " BabyBlue " )
450+ return nordBlueColors [ 4 ]
395451 case 6 :
396- return Color . mint
452+ return nordGreenColors [ 4 ]
397453 default :
398454 break
399455 }
400456 case . topBottom:
401457 switch bleManagerVal. infineatColorIndex {
402458 case 0 :
403- return Color ( " Red " )
459+ return orangeColors [ 5 ]
404460 case 1 :
405- return Color . blue
461+ return blueColors [ 5 ]
406462 case 2 :
407- return Color ( " Green " )
463+ return greenColors [ 5 ]
408464 case 3 :
409- return Color ( " Orange " )
465+ return rainbowColors [ 5 ]
410466 case 4 :
411- return Color ( . darkGray )
467+ return grayColors [ 5 ]
412468 case 5 :
413- return Color ( " NordBlue " )
469+ return nordBlueColors [ 5 ]
414470 case 6 :
415- return Color ( " NordGreen " )
471+ return nordGreenColors [ 5 ]
416472 default :
417473 break
418474 }
419475 case . midBottom:
420476 switch bleManagerVal. infineatColorIndex {
421477 case 0 :
422- return Color ( " Yellow " )
423- case 1 , 4 , 5 , 6 :
424- // 5 and 6 aren't perfectly white on the watch
425- return Color . white
478+ return orangeColors [ 3 ]
479+ case 1 :
480+ return blueColors [ 3 ]
426481 case 2 :
427- return Color ( " LightestGreen " )
482+ return greenColors [ 3 ]
428483 case 3 :
429- return Color . blue
484+ return rainbowColors [ 3 ]
485+ case 4 :
486+ return grayColors [ 3 ]
487+ case 5 :
488+ return nordBlueColors [ 3 ]
489+ case 6 :
490+ return nordGreenColors [ 3 ]
430491 default :
431492 break
432493 }
433494 case . midTop:
434495 switch bleManagerVal. infineatColorIndex {
435496 case 0 :
436- return Color ( " Yellow " )
437- case 1 , 4 , 5 , 6 :
438- // 5 and 6 aren't perfectly white on the watch
439- return Color . white
497+ return orangeColors [ 0 ]
498+ case 1 :
499+ return blueColors [ 0 ]
440500 case 2 :
441- return Color ( " LightestGreen " )
501+ return greenColors [ 0 ]
442502 case 3 :
443- return Color ( " Green " )
503+ return rainbowColors [ 0 ]
504+ case 4 :
505+ return grayColors [ 0 ]
506+ case 5 :
507+ return nordBlueColors [ 0 ]
508+ case 6 :
509+ return nordGreenColors [ 0 ]
444510 default :
445511 break
446512 }
@@ -451,11 +517,11 @@ struct InfineatWF: View {
451517 var body : some View {
452518 ZStack {
453519 if hour24 {
454- CustomTextView ( text: Calendar . current. component ( . hour, from: Date ( ) ) > 12 ? " PM " : " AM " , font: . custom( " Teko-Light " , size: geometry. size. width * 0.125 ) , lineSpacing: 0 )
520+ CustomTextView ( text: Calendar . current. component ( . hour, from: Date ( ) ) >= 12 ? " PM " : " AM " , font: . custom( " Teko-Light " , size: geometry. size. width * 0.125 ) , lineSpacing: 0 )
455521 . foregroundColor ( . white)
456522 . frame ( width: geometry. size. width, height: geometry. size. height / 1.35 , alignment: . topTrailing)
457523 }
458- if Calendar . current. component ( . hour, from: Date ( ) ) > 12 && !hour24 {
524+ if Calendar . current. component ( . hour, from: Date ( ) ) >= 12 && !hour24 {
459525 VStack ( alignment: . center, spacing: - 28 ) {
460526 Text ( " \( String ( format: " %02d " , Calendar . current. component ( . hour, from: Date ( ) ) - 12 ) ) " )
461527 Text ( " \( String ( format: " %02d " , Calendar . current. component ( . minute, from: Date ( ) ) ) ) " )
@@ -506,46 +572,52 @@ struct InfineatWF: View {
506572 . frame ( maxHeight: . infinity, alignment: . topLeading)
507573 . foregroundColor ( infineatColor ( for: . midTop) )
508574 . rotationEffect ( Angle ( degrees: 49 ) )
509- . offset ( x: - 36 , y: - 44 )
575+ . offset ( x: - 36 , y: - 48 )
510576 Rectangle ( )
511577 . frame ( width: 19 )
512578 . frame ( height: geometry. size. height / 1.5 , alignment: . bottomLeading)
513579 . frame ( maxHeight: . infinity, alignment: . bottomLeading)
514580 . foregroundColor ( infineatColor ( for: . bottom) )
515581 . opacity ( 0.8 )
516- . rotationEffect ( Angle ( degrees: - 16 ) )
517- . offset ( x: - 6 , y: 12 )
582+ . rotationEffect ( Angle ( degrees: - 22 ) )
583+ . offset ( x: - 16 , y: 14 )
518584 Rectangle ( )
519585 . frame ( width: 26 , alignment: . leading)
520- . offset ( x: - 5 )
586+ . offset ( x: - 9 )
521587 . foregroundColor ( infineatColor ( for: . base) )
522588 Rectangle ( )
523589 . frame ( width: 26 )
524590 . frame ( height: geometry. size. height / 1.5 , alignment: . topLeading)
525591 . frame ( maxHeight: . infinity, alignment: . bottomLeading)
526592 . foregroundColor ( infineatColor ( for: . midBottom) )
527- . rotationEffect ( Angle ( degrees: - 38 ) )
528- . offset ( x: - 26 , y: 30 )
593+ . rotationEffect ( Angle ( degrees: - 42 ) )
594+ . offset ( x: - 31 , y: 38 )
595+ ZStack {
596+ DiamondShape ( )
597+ . fill ( Color . white)
598+ . frame ( width: 50 , height: 75 )
599+ . offset ( x: - 5 )
600+ Image ( " pine_logo " )
601+ . resizable ( )
602+ . frame ( width: 20 , height: 25 )
603+ . offset ( x: - 1 )
604+ }
529605 Rectangle ( )
530606 . frame ( width: 38 )
531607 . frame ( height: geometry. size. height / 1.3 , alignment: . topLeading)
532608 . frame ( maxHeight: . infinity, alignment: . topLeading)
533609 . foregroundColor ( infineatColor ( for: . topTop) )
534610 . rotationEffect ( Angle ( degrees: 18 ) )
535- . offset ( x: - 28 , y: - 16 )
611+ . offset ( x: - 32 , y: - 16 )
536612 Rectangle ( )
537613 . frame ( width: 38 )
538614 . frame ( height: geometry. size. height / 1.3 , alignment: . topLeading)
539615 . frame ( maxHeight: . infinity, alignment: . bottomLeading)
540616 . foregroundColor ( infineatColor ( for: . topBottom) )
541617 . rotationEffect ( Angle ( degrees: - 18 ) )
542- . offset ( x: - 28 , y: 16 )
618+ . offset ( x: - 32 , y: 16 )
543619 }
544620 . frame ( width: geometry. size. width, height: geometry. size. height, alignment: . leading)
545- Image ( " pine_logo " )
546- . resizable ( )
547- . frame ( width: 20 , height: 26 )
548- . frame ( width: geometry. size. width / 1.15 , height: geometry. size. height, alignment: . leading)
549621 }
550622 . frame ( width: geometry. size. width, height: geometry. size. height, alignment: . center)
551623 . clipped ( )
@@ -706,7 +778,7 @@ struct CasioWF: View {
706778 lineSpacing: 0
707779 )
708780 . frame ( width: geometry. size. width / 1.08 , height: geometry. size. height / 2.25 , alignment: . topTrailing)
709- if Calendar . current. component ( . hour, from: Date ( ) ) > 12 && !hour24 {
781+ if Calendar . current. component ( . hour, from: Date ( ) ) >= 12 && !hour24 {
710782 CustomTextView ( text: " \( Calendar . current. component ( . hour, from: Date ( ) ) - 12 ) : \( String ( format: " %02d " , Calendar . current. component ( . minute, from: Date ( ) ) ) ) " , font: . custom( " 7-segment " , size: geometry. size. width * 0.36 ) , lineSpacing: 0 )
711783 . frame ( maxWidth: . infinity, maxHeight: . infinity, alignment: . trailing)
712784 . position ( x: geometry. size. width / 2.0 , y: geometry. size. height / 1.30 )
@@ -757,6 +829,26 @@ struct CustomTextView: View {
757829 }
758830}
759831
832+ struct DiamondShape : Shape {
833+ func path( in rect: CGRect ) -> Path {
834+ var path = Path ( )
835+
836+ let topPoint = CGPoint ( x: rect. midX, y: rect. minY)
837+ let rightPoint = CGPoint ( x: rect. maxX, y: rect. midY)
838+ let bottomPoint = CGPoint ( x: rect. midX, y: rect. maxY)
839+ let leftPoint = CGPoint ( x: rect. minX, y: rect. midY)
840+
841+ path. move ( to: topPoint)
842+
843+ path. addLine ( to: rightPoint)
844+ path. addLine ( to: bottomPoint)
845+ path. addLine ( to: leftPoint)
846+ path. closeSubpath ( )
847+
848+ return path
849+ }
850+ }
851+
760852enum InfineatItem {
761853 case base
762854 case bottom
@@ -774,7 +866,7 @@ enum InfineatItem {
774866 . frame ( width: geometry. size. width / 1.65 , height: geometry. size. width / 1.65 , alignment: . center)
775867 . clipped ( antialiased: true )
776868 . onAppear {
777- BLEManagerVal . shared. infineatColorIndex = 6
869+ BLEManagerVal . shared. infineatColorIndex = 1
778870 }
779871 }
780872 }
0 commit comments