Giter VIP home page Giter VIP logo

dxruby_sprite_ui's Introduction

dxruby_sprite_ui's People

Contributors

aoitaku avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar

Forkers

vivit-jc

dxruby_sprite_ui's Issues

相対的なコンポーネントのサイズ指定

コンポーネントのサイズを相対的に指定できるようにする。現在は整数リテラルでピクセル指定することができるが、浮動小数点数リテラルを使って親要素に対する倍率でサイズを指定できるようにする。

テキストラベルの行間

テキストラベルの行間を設定可能にする。現在は折り返しテキストのみ行間設定が反映されるようになっている。

キーイベントハンドラ

キーイベントを受け取ってコントロールのフォーカスを遷移させたりイベントハンドラをコールしたりする仕組みを実装する。

ビルダーDSL内で add_event_handler が例外になる

ビルダーDSL内で add_event_handler を呼び出すと例外が発生する。
(コンポーネントのスタイル指定をクラスに分離した際にデグレードした?)
ビルダーDSL内で add_event_handler を使ってイベントハンドラを登録できるように修正する。

リストボックス

コレクションの要素を子コンポーネントとして整列させることのできるコンテナクラス、いわゆるリストボックスを作る。

横並びのコンポーネント

現状コンポーネントは垂直方向にしか整列させることができないが、親コンテナ幅が許す限り水平方向に並べるオプションを追加することで横並びレイアウトを可能にする。

ボーダーと背景色

ボーダーと背景色をサポートする。
角丸ボーダーや任意の画像を用いたボーダー、背景画像については実装を先送りにする。

親要素からの相対的なコンポーネントの位置指定

コンポーネントの位置を相対的に指定できるようにする。現在は整数リテラルでピクセル指定することができるが、浮動小数点数リテラルを使って親要素に対する倍率で位置を指定できるようにする。

コンポーネントの背景画像

コンポーネントの背景画像をサポートする。

以下の表示方法に対応する。

  • 原寸大で表示
  • 垂直方向に敷き詰め
  • 水平方向に敷き詰め
  • 垂直、水平方向に敷き詰め
  • コンポーネントの領域に収まるように拡大・縮小(アスペクト比を維持)
  • コンポーネントの領域を覆うように拡大・縮小(アスペクト比を維持)
  • コンポーネントの領域にあわせて拡大・縮小(アスペクト比を無視)

テキストの折り返し

テキストラベル、テキストボタン内の文字列の折り返しを実装する。
ただし、width が nil のときは折り返しを行わないものとする。

ビルダー DSL 用のパラメータ設定 API とコンポーネント本体の API の分離

ビルダー DSL からパラメータを設定する API とコンポーネント本体の API が共有されているため、同名で動きの異なるメソッドが作りにくい状況になっている。
また、コンポーネント本体で値を書き換えてしまうと、初期化時のパラメータが失われるため、ビルダー DSL からは初期値を登録するだけで、コンポーネント本体からは読み出すだけとするほうがよりよい設計になる。
ビルダー DSL は設定用とし、コンポーネント本体の API から分離させる。

テキストラベルの複数行文字列対応

テキストラベルのテキストが改行文字を含む場合、以下の問題がある。

  • 高品質描画を行わない場合、改行が行われるが、領域幅と高さに改行が反映されない。
    改行の有無にかかわらず幅は文字の長さ分、高さは一文字分になる。
  • 高品質描画を行う場合、改行が行われない。これは DXRuby のフォント描画 API の仕様である。

自前で改行で分割を行って、領域幅、高さを適切に計算し、複数行描画に対応する。

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.