@@ -28,10 +28,9 @@ import {
2828const PHOTO_COUNT_OPTIONS : readonly PhotographyGuidePictureCount [ ] = [ 3 , 5 , 7 , 9 ] ;
2929const TABLE_THUMB_STAGE_SIZE = 40 ;
3030const TABLE_THUMB_SUN_RADIUS = 18 ;
31+ const DEFAULT_COMPOSITE_SKY_COLOR = "#89b7ef" ;
3132const TOTALITY_SKY_COLOR = "#050d24" ;
3233const TOTALITY_GROUND_COLOR = "#111827" ;
33- const TOTALITY_MOON_COLOR = TOTALITY_SKY_COLOR ;
34- const TOTALITY_MOON_BORDER_COLOR = "#1f2c47" ;
3534const TOTALITY_HORIZON_LINE_COLOR = "rgba(255, 174, 205, 0.75)" ;
3635const TOTALITY_HORIZON_GLOW_COLOR = "rgba(255, 136, 182, 0.42)" ;
3736const LANDSCAPE_HORIZONTAL_FOV_DEG_24MM = 74 ;
@@ -119,6 +118,11 @@ export default function PhotographyGuideScreen({
119118 height : 0 ,
120119 } ) ;
121120 const isTotalCompositeTheme = payload . kindAtLocation === "total" ;
121+ const isAnnularOrTotalCompositeTheme =
122+ payload . kindAtLocation === "annular" || payload . kindAtLocation === "total" ;
123+ const compositeSkyColor = isTotalCompositeTheme
124+ ? TOTALITY_SKY_COLOR
125+ : DEFAULT_COMPOSITE_SKY_COLOR ;
122126 const isWithinEclipseArea = payload . visible && payload . kindAtLocation !== "none" ;
123127 const scheduleResult = useMemo (
124128 ( ) =>
@@ -415,12 +419,7 @@ export default function PhotographyGuideScreen({
415419 </ Text >
416420 </ Pressable >
417421 < View style = { styles . compositeFrame } onLayout = { handleCompositeStageLayout } >
418- < View
419- style = { [
420- styles . compositeSky ,
421- isTotalCompositeTheme ? { backgroundColor : TOTALITY_SKY_COLOR } : null ,
422- ] }
423- />
422+ < View style = { [ styles . compositeSky , { backgroundColor : compositeSkyColor } ] } />
424423 < View
425424 style = { [
426425 styles . compositeGround ,
@@ -484,102 +483,108 @@ export default function PhotographyGuideScreen({
484483 } ,
485484 ] }
486485 />
487- { compositeLayout . placements . map ( ( placement ) => (
488- < View key = { placement . index } >
489- { ! placement . isAboveHorizon ? null : (
490- < >
491- { isTotalCompositeTheme &&
492- placement . phaseBucket === "MAX" &&
493- placement . showMoon &&
494- placement . moon ? (
495- < >
486+ { compositeLayout . placements . map ( ( placement ) => {
487+ const showTotalityCorona =
488+ payload . kindAtLocation === "total" &&
489+ placement . phaseBucket === "MAX" &&
490+ placement . showMoon &&
491+ Boolean ( placement . moon ) ;
492+ const useBlackMoon =
493+ isAnnularOrTotalCompositeTheme && placement . phaseBucket === "MAX" ;
494+ const moonColor = useBlackMoon ? "#000000" : compositeSkyColor ;
495+
496+ return (
497+ < View key = { placement . index } >
498+ { ! placement . isAboveHorizon ? null : (
499+ < >
500+ { showTotalityCorona ? (
501+ < >
502+ < View
503+ style = { [
504+ styles . compositeCoronaGlow ,
505+ {
506+ width : Math . max ( placement . sunRadius * 9 , 16 ) ,
507+ height : Math . max ( placement . sunRadius * 9 , 16 ) ,
508+ borderRadius : Math . max ( placement . sunRadius * 4.5 , 8 ) ,
509+ left : placement . x - Math . max ( placement . sunRadius * 4.5 , 8 ) ,
510+ top : placement . y - Math . max ( placement . sunRadius * 4.5 , 8 ) ,
511+ } ,
512+ ] }
513+ />
514+ < View
515+ style = { [
516+ styles . compositeCoronaRing ,
517+ {
518+ width : Math . max ( placement . sunRadius * 6 , 10 ) ,
519+ height : Math . max ( placement . sunRadius * 6 , 10 ) ,
520+ borderRadius : Math . max ( placement . sunRadius * 3 , 5 ) ,
521+ left : placement . x - Math . max ( placement . sunRadius * 3 , 5 ) ,
522+ top : placement . y - Math . max ( placement . sunRadius * 3 , 5 ) ,
523+ } ,
524+ ] }
525+ />
526+ </ >
527+ ) : null }
528+ < View
529+ style = { [
530+ styles . compositeSun ,
531+ {
532+ width : placement . sunRadius * 2 ,
533+ height : placement . sunRadius * 2 ,
534+ borderRadius : placement . sunRadius ,
535+ left : placement . x - placement . sunRadius ,
536+ top : placement . y - placement . sunRadius ,
537+ } ,
538+ ] }
539+ />
540+ { placement . showMoon && placement . moon ? (
496541 < View
497542 style = { [
498- styles . compositeCoronaGlow ,
543+ styles . compositeMoon ,
499544 {
500- width : Math . max ( placement . sunRadius * 9 , 16 ) ,
501- height : Math . max ( placement . sunRadius * 9 , 16 ) ,
502- borderRadius : Math . max ( placement . sunRadius * 4.5 , 8 ) ,
503- left : placement . x - Math . max ( placement . sunRadius * 4.5 , 8 ) ,
504- top : placement . y - Math . max ( placement . sunRadius * 4.5 , 8 ) ,
545+ backgroundColor : moonColor ,
546+ borderColor : moonColor ,
547+ } ,
548+ {
549+ width : placement . moon . radius * 2 ,
550+ height : placement . moon . radius * 2 ,
551+ borderRadius : placement . moon . radius ,
552+ left : placement . moon . x - placement . moon . radius ,
553+ top : placement . moon . y - placement . moon . radius ,
505554 } ,
506555 ] }
507556 />
557+ ) : null }
558+ { showCompositeMarkings ? (
559+ < View
560+ style = { [
561+ styles . compositeShotIndexTag ,
562+ {
563+ left : placement . x - 9 ,
564+ top : placement . y + placement . sunRadius + 3 ,
565+ } ,
566+ placement . clamped ? styles . compositeShotIndexTagClamped : null ,
567+ ] }
568+ >
569+ < Text style = { styles . compositeShotIndexText } > { placement . index } </ Text >
570+ </ View >
571+ ) : null }
572+ { showCompositeMarkings && placement . clamped ? (
508573 < View
509574 style = { [
510- styles . compositeCoronaRing ,
575+ styles . compositeClampIndicator ,
511576 {
512- width : Math . max ( placement . sunRadius * 6 , 10 ) ,
513- height : Math . max ( placement . sunRadius * 6 , 10 ) ,
514- borderRadius : Math . max ( placement . sunRadius * 3 , 5 ) ,
515- left : placement . x - Math . max ( placement . sunRadius * 3 , 5 ) ,
516- top : placement . y - Math . max ( placement . sunRadius * 3 , 5 ) ,
577+ left : placement . x + placement . sunRadius - 4 ,
578+ top : placement . y - placement . sunRadius - 4 ,
517579 } ,
518580 ] }
519581 />
520- </ >
521- ) : null }
522- < View
523- style = { [
524- styles . compositeSun ,
525- {
526- width : placement . sunRadius * 2 ,
527- height : placement . sunRadius * 2 ,
528- borderRadius : placement . sunRadius ,
529- left : placement . x - placement . sunRadius ,
530- top : placement . y - placement . sunRadius ,
531- } ,
532- ] }
533- />
534- { placement . showMoon && placement . moon ? (
535- < View
536- style = { [
537- styles . compositeMoon ,
538- isTotalCompositeTheme
539- ? {
540- backgroundColor : TOTALITY_MOON_COLOR ,
541- borderColor : TOTALITY_MOON_BORDER_COLOR ,
542- }
543- : null ,
544- {
545- width : placement . moon . radius * 2 ,
546- height : placement . moon . radius * 2 ,
547- borderRadius : placement . moon . radius ,
548- left : placement . moon . x - placement . moon . radius ,
549- top : placement . moon . y - placement . moon . radius ,
550- } ,
551- ] }
552- />
553- ) : null }
554- { showCompositeMarkings ? (
555- < View
556- style = { [
557- styles . compositeShotIndexTag ,
558- {
559- left : placement . x - 9 ,
560- top : placement . y + placement . sunRadius + 3 ,
561- } ,
562- placement . clamped ? styles . compositeShotIndexTagClamped : null ,
563- ] }
564- >
565- < Text style = { styles . compositeShotIndexText } > { placement . index } </ Text >
566- </ View >
567- ) : null }
568- { showCompositeMarkings && placement . clamped ? (
569- < View
570- style = { [
571- styles . compositeClampIndicator ,
572- {
573- left : placement . x + placement . sunRadius - 4 ,
574- top : placement . y - placement . sunRadius - 4 ,
575- } ,
576- ] }
577- />
578- ) : null }
579- </ >
580- ) }
581- </ View >
582- ) ) }
582+ ) : null }
583+ </ >
584+ ) }
585+ </ View >
586+ ) ;
587+ } ) }
583588 </ >
584589 ) : null }
585590 </ View >
@@ -887,11 +892,11 @@ function createStyles(colors: ReturnType<typeof useAppTheme>["colors"]) {
887892 borderWidth : 1 ,
888893 borderColor : "rgba(255,255,255,0.16)" ,
889894 overflow : "hidden" ,
890- backgroundColor : "#89b7ef" ,
895+ backgroundColor : DEFAULT_COMPOSITE_SKY_COLOR ,
891896 } ,
892897 compositeSky : {
893898 ...StyleSheet . absoluteFillObject ,
894- backgroundColor : "#89b7ef" ,
899+ backgroundColor : DEFAULT_COMPOSITE_SKY_COLOR ,
895900 } ,
896901 compositeGround : {
897902 position : "absolute" ,
0 commit comments