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

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

Comments

Projects
None yet
2 participants
@naotaka
Contributor

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

This comment has been minimized.

Show comment
Hide comment
@1024jp

1024jp Sep 11, 2014

Member

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

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

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

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

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

Member

1024jp commented Sep 11, 2014

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

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

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

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

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

@1024jp

This comment has been minimized.

Show comment
Hide comment
@1024jp

1024jp Sep 11, 2014

Member

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

Member

1024jp commented Sep 11, 2014

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

@naotaka

This comment has been minimized.

Show comment
Hide comment
@naotaka

naotaka Sep 11, 2014

Contributor

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

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

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

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

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

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

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

Contributor

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

This comment has been minimized.

Show comment
Hide comment
@1024jp

1024jp Sep 11, 2014

Member

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

Member

1024jp commented Sep 11, 2014

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

@1024jp

This comment has been minimized.

Show comment
Hide comment
@1024jp

1024jp Sep 13, 2014

Member

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.

Member

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

This comment has been minimized.

Show comment
Hide comment
@naotaka

naotaka Sep 14, 2014

Contributor

どうもお疲れ様です。

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

Contributor

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