색상 행에 인라인 팔레트 — 스와치를 누르면 그 자리에서 고르고, '자세히…' 로 피커
색을 바꾸려면 매번 대화상자를 열어야 했다. 실측해 보니 그럴 이유가 없다 — --db-colors 진단을 신설해 운영 디자인 1,271건의 BackColor·ForeColor 60,319건을 집계한 결과 상위 두 값이 전체의 84%다: White 29,010건(48%), "224, 224, 224" 21,497건(36%). 뒤는 꼬리가 길고 얇다(Transparent 792 · Silver 557 · Window 440 · Gainsboro 415 …). ForeColor 는 Black 4,920건(85%) · ControlText 345건이 사실상 전부. 스와치를 토글로 바꾸고 팝업에 실사용 상위 값을 배경 12종 / 글자·강조 12종으로 깔았다. 표준 색상표를 늘어놓지 않은 것은 의도다 — 목적은 자주 쓰는 값을 한 번에 고르게 하는 것이지 색을 발명하게 하는 것이 아니다. 임의 색은 팝업 아래 '자세히…' 로 기존 피커 (채도·명도 사각형 + 색상 슬라이더 + HEX·RGB + 프리셋·최근색)를 연다. 핵심은 견본이 레거시 원문 값을 그대로 넣는다는 점이다. 명명색을 RGB 로 풀면 원문과 달라져 왕복 diff 가 생기고, 시스템색이 갖는 의미(Window/Control/ControlText)도 잃는다. 'Window' 를 고르면 "Window" 가 저장된다. 툴팁에는 실사용 건수를 함께 띄운다. '비우기'는 기본값을 저장하는 것이 아니라 키를 지운다 — 레거시 PropertyGrid 의 재설정과 같고, 원래 BackColor 가 없던 페이지(12.7%)를 원상태로 되돌릴 수 있어야 한다. 함께 고친 것: 페이지 속성 모드에서 '컨트롤을 선택하면 속성이 표시됩니다' 안내가 행과 같이 뜨던 것(HasSelection 이 컨트롤 선택만 보고 있었다). 탭 스트립은 페이지 모드에서 숨긴다. 편집 스모크 4건 추가(원문 값 적용 / 명명색 보존 / 적용 후 닫힘 / 비우기는 키 제거). 회귀: 테스트 124/124, 편집 스모크 실패 0, DB 왕복 1,271건 diff 0/예외 0, 종이 렌더 P062 바이트 동일. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 5
parent
ac36f93a03
commit
e84337705f
@@ -0,0 +1,52 @@
|
||||
namespace SheetMe.Core.Catalog;
|
||||
|
||||
/// <summary>
|
||||
/// 색상 행 인라인 팔레트 — 운영 서식에서 <b>실제로 쓰이는</b> 값만 담는다.
|
||||
///
|
||||
/// 표준 색상표(빨/주/노/초…)를 늘어놓지 않는 이유가 있다. 실측(운영 디자인 1,271건의
|
||||
/// BackColor·ForeColor 60,319건)에서 상위 두 값이 전체의 84%를 차지한다 —
|
||||
/// White 29,010건(48%)과 "224, 224, 224" 21,497건(36%)이다. 뒤쪽은 꼬리가 길고 얇다.
|
||||
/// 자주 쓰는 값을 한 번에 고르게 하는 것이 목적이지 색을 발명하게 하는 것이 아니다.
|
||||
///
|
||||
/// 값은 <b>레거시 원문 형식</b>을 그대로 쓴다(명명색 또는 "R, G, B").
|
||||
/// 명명색을 RGB 로 풀면 원문과 달라져 왕복 diff 가 생기고, 시스템색의 의미도 사라진다.
|
||||
/// </summary>
|
||||
public static class LegacyColorCatalog
|
||||
{
|
||||
/// <summary>팔레트 항목 — 저장값과 실사용 건수(툴팁 표시용)</summary>
|
||||
public sealed record Entry(string Value, string Usage);
|
||||
|
||||
/// <summary>배경색 계열 — 실측 상위순</summary>
|
||||
public static IReadOnlyList<Entry> Backgrounds { get; } = new[]
|
||||
{
|
||||
new Entry("White", "29,010건"),
|
||||
new Entry("224, 224, 224", "21,497건"),
|
||||
new Entry("Transparent", "792건"),
|
||||
new Entry("Silver", "557건"),
|
||||
new Entry("Window", "440건"),
|
||||
new Entry("Gainsboro", "415건"),
|
||||
new Entry("226, 226, 226", "308건"),
|
||||
new Entry("LightGray", "245건"),
|
||||
new Entry("WhiteSmoke", "239건"),
|
||||
new Entry("DarkGray", "215건"),
|
||||
new Entry("Control", "99건"),
|
||||
new Entry("ControlLight", "64건"),
|
||||
};
|
||||
|
||||
/// <summary>글자색·강조 계열 — 실측 상위순</summary>
|
||||
public static IReadOnlyList<Entry> Foregrounds { get; } = new[]
|
||||
{
|
||||
new Entry("Black", "4,920건"),
|
||||
new Entry("ControlText", "345건"),
|
||||
new Entry("Blue", "69건"),
|
||||
new Entry("Red", "64건"),
|
||||
new Entry("Gray", "30건"),
|
||||
new Entry("RoyalBlue", "14건"),
|
||||
new Entry("LightYellow", "91건"),
|
||||
new Entry("255, 255, 192", "86건"),
|
||||
new Entry("Lavender", "78건"),
|
||||
new Entry("PaleTurquoise", "109건"),
|
||||
new Entry("Bisque", "51건"),
|
||||
new Entry("Info", "55건"),
|
||||
};
|
||||
}
|
||||
Reference in New Issue
Block a user