Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

テーマの色データの格納方式の変更 #217

Closed
naotaka opened this issue Sep 11, 2014 · 6 comments
Closed

テーマの色データの格納方式の変更 #217

naotaka opened this issue Sep 11, 2014 · 6 comments
Assignees
Labels
Milestone

Comments

@naotaka
Copy link
Contributor

@naotaka naotaka commented Sep 11, 2014

テーマファイルの格納方式はNSColorをシリアライズしたものになっていますが、これを文字列に変更してはどうでしょうか。

具体的にはXcodeと同じRGBAか、Atomのような16進数カラーコードを想定しています。

利点:

  1. 目視での判別のしやすさが向上
  2. スクリプト言語での生成が容易
  3. ウェブからのコピー&ペーストで作成・編集が可能に

1: 目視での判別のしやすさが向上

#140 で書かれているように「色データは人間には読めない数値の羅列」ではありますが、現在の形式のデータから色を類推や比較するのは、他の形式に比べ難度が高く感じます。

普段から画像処理やウェブ制作に慣れた人なら、RGBや16進数カラーコードなら大体の予測もできるのではないでしょうか。

2: スクリプト言語での生成が容易

今回の提案の一番のモチベーションなのですが、Rubyを使ってERBテンプレートからテーマを簡単に生成できる chriskempson/base16-builder でCotEditorのテーマも作成できるようになります。

汎用性の高い文字列処理なら、プログラムによる生成・変換が容易になると思います。

3: ウェブからのコピー&ペーストで作成・編集が可能に

テーマを自分で一から作るのではなく、公開された色見本から作る場合は16進数カラーコードに対応していれば、ウェブからのコピー&ペーストができて便利です。例えば Solarizedなどです。

また、CSSのソースから拝借したり、カラーピッカーとの親和性も高まります。

以上、ご検討のほどよろしくお願いします。

@1024jp
Copy link
Member

@1024jp 1024jp commented Sep 11, 2014

なるほどおっしゃる通りです。

現在NSColorをシリアライゼーションしたものなのは単に実装が楽ちんだからなので、
リーダブル(というかライタブル)なものの方が需要があるのならば
そっちにするべきでしょうね。
そしてタイミングとしては、まだテーマリリースされていない今しかない!
ということでやります。変更しましょう。

実装は何らかの記法に固定して、NSColorWellにそれ用のValueTransformerを噛ませる感じでしょう。
幸い自作のWFColorCodeがあるので活用できそうです。

決める必要があるのはカラーコードをどの書式にするかどうかとカラースペースをどれに固定するかですね。

そういうことであればどうせならplistベースでなくてJSONベースの方が良いでしょうか?
手間はあまり変わらないので。

@1024jp
Copy link
Member

@1024jp 1024jp commented Sep 11, 2014

間違って途中で送ってしまいました。カラースペースは扱いの手軽さ的にNSCalibratedRGBColorSpaceNSDeviceRGBColorSpace のどちらかになると思います。
書式は簡単なのはhexでRGBaにするか、0-255の同じくRGBaのカンマ区切りか。今ならアルファ値は殺しちゃって普通のRGB hexにしちゃう手もありますね。

@naotaka
Copy link
Contributor Author

@naotaka naotaka commented Sep 11, 2014

ご検討いただき、ありがとうございます!

そしてタイミングとしては、まだテーマリリースされていない今しかない!

そうですね、リリース前なのが幸いしました。

そういうことであればどうせならplistベースでなくてJSONベースの方が良いでしょうか?

XMLよりJSONのほうが簡潔なので、問題ないようでしたらそちらの方が望ましいですね。

今ならアルファ値は殺しちゃって普通のRGB hexにしちゃう手もありますね。

そういえば、Xcodeのテーマをいろいろ見ている時にアルファ値は必要ないようなと感じてたのを思い出しました。RGBのみを使っていた一人のテーマ作者を除き、あとは全部アルファ値は1しか使われていなかった気がします。

@1024jp 1024jp added the refactoring label Sep 11, 2014
@1024jp 1024jp added this to the 2.0 milestone Sep 11, 2014
@1024jp 1024jp self-assigned this Sep 11, 2014
@1024jp
Copy link
Member

@1024jp 1024jp commented Sep 11, 2014

そうですね、「便利かな」と思いアルファ値追加してみたものの、実際には自分でさえもあまり使ってないので単なるRGBに戻そうかと思います。
ハッシュ付きのhexが一番楽なのでそれにしようかと思います。

1024jp added a commit that referenced this issue Sep 11, 2014
@1024jp
Copy link
Member

@1024jp 1024jp commented Sep 13, 2014

1e87317 にてテーマファイルの形式を plist (xml) + serialised NSColor から JSON + RGB hex に変更しました。

注意: 過去にCotEditor 2.0系をビルド・実行したことがある人は、これ以降のCotEditor を立ち上げる前に必ず一度 ~/Application Support/CotEditor/Themes/ を削除してください。過去のフォーマットは読み込めなくなっています。この変更に対しての以降コードは書かれていません。


On commit 1e87317, the theme file format is changed to JSON + hex color code base. Remove all your customized themes in ~/Application Support/CotEditor/Themes/ before run this CotEditor. Sinse the theme integrated version of CotEditor has not been released yet, I did not create migration code for this change.

@1024jp 1024jp closed this Sep 13, 2014
@naotaka
Copy link
Contributor Author

@naotaka naotaka commented Sep 14, 2014

どうもお疲れ様です。

スッキリして見やすくなり、ファイルサイズも小さくなって良い感じですね。#fffのような省略形でも受け付けてくれるのはタイプ量が減ってありがたいです。

@1024jp 1024jp added task and removed refactoring labels Jan 26, 2018
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Linked pull requests

Successfully merging a pull request may close this issue.

None yet
2 participants
You can’t perform that action at this time.