[Squeak-ja: 4564] BitBltの録画・再生が完全には成功しない

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
7 messages Options
Reply | Threaded
Open this post in threaded view
|

[Squeak-ja: 4564] BitBltの録画・再生が完全には成功しない

Hiroki Horiuchi
こんにちは。

以前ブログに書いたように、PharoでBitBltを録画・再生する実験を行っていま
すが、完全には成功していません。どのようにしたらうまく行きますか?

よろしくお願いします。
--
堀内寛己(ほりうちひろき)
http://twitter.com/x19290
http://19290.net/wpmu/blog/2011/05/h2-bit-blt-study2.html (このメールの続き)

(再現方法)

添付のH2-BitBlt-Study2.stファイルをFileinし、該ファイルの先頭のコメント
にしたがいます。該ファイルをFileinすることにより、以下が追加されます。

* H2BltCollectorクラス
* H2BltVramクラス
* BitBlt>>primDisplayString2:from:to:map:xTable:kern:
* BitBlt>>primDisplayString3:from:to:map:xTable:kern:
* BitBlt>>copyBits2
* BitBlt>>copyBits3
* BitBlt>>copyBits4

H2-BitBlt-Study2.st (12K) Download Attachment
Reply | Threaded
Open this post in threaded view
|

[Squeak-ja: 4565] Re: BitBltの録画・再生が完全には成功しない

Hiroki Horiuchi
またUTF-8で送ってしまいました。

念のため、読めない場合は、アーカイブ
http://www.smalltalk.jp/pipermail/squeak-ja/2011-May/004564.html
をご覧ください。
--
堀内寛己(ほりうちひろき)
http://twitter.com/x19290

Reply | Threaded
Open this post in threaded view
|

[Squeak-ja: 4566] Re: BitBltの録画・再生が完全には成功しない

Yoshiki Ohshima-2
In reply to this post by Hiroki Horiuchi
At Wed, 11 May 2011 18:46:21 +0900,
Hiroki Horiuchi wrote:
>
> こんにちは。
>
> 以前ブログに書いたように、PharoでBitBltを録画・再生する実験を行っていま
> すが、完全には成功していません。どのようにしたらうまく行きますか?

  面白い企画ですね。中身は良く見ていませんが、おそらくはBalloonCanvas
まわりではないかと予想されます。たとえば、Squeak 4.2イメージで、MVC
Projectを開き、そのなかで同様の処理をした場合はいかがでしょうか。

  もしそれで動くとすれば、asBalloonCanvasのsendersを見て、
BalloonCanvas経由で描画しているところをFormCanvasの機能でエミュレート
するようにするとよいかもしれません。

-- Yoshiki
Reply | Threaded
Open this post in threaded view
|

[Squeak-ja: 4568] Re: BitBltの録画・再生が完全には成功しない

Hiroki Horiuchi
On 2011年05月12日 02:36, Yoshiki Ohshima wrote:

> 面白い企画ですね。

ありがとうございます。励みになります。

> たとえば、Squeak 4.2イメージで、MVC
> Projectを開き、そのなかで同様の処理をした場合はいかがでしょうか。

MVCプロジェクト内でウィンドウタイトルは、正常に表示されました。

> もしそれで動くとすれば、asBalloonCanvasのsendersを見て、
> BalloonCanvas経由で描画しているところをFormCanvasの機能でエミュレート
> するようにするとよいかもしれません。

これがよくわかりません。あてずっぽうで、BalloonCanvas>>asBalloonCanvasを
削除したところ、結果は同じ(グラデーションが再現されない)でした。
FormCanvas>>asBalloonCanvasを^ self や^ self copyにしたところ、システム
がフリーズしました。

なお、前回(ブログで)文字がかすれると書いた問題は、BitBlt>>destForm:を追
加して、(self copy destForm: H2BltVram singleton vram) copyBitsするよう
にしたら直りました。
--
堀内寛己(ほりうちひろき)
http://twitter.com/x19290
Reply | Threaded
Open this post in threaded view
|

[Squeak-ja: 4569] Re: BitBltの録画・再生が完全には成功しない

Hiroki Horiuchi
On 2011年05月12日 11:15, Hiroki Horiuchi wrote:

> なお、前回(ブログで)文字がかすれると書いた問題は、BitBlt>>destForm:を追
> 加して、(self copy destForm: H2BltVram singleton vram) copyBitsするよう
> にしたら直りました。

BitBlt>>destForm:は、その名のとおり、ただのセッターです。destFormが
DisplayであるBitBlt (GrafPortかもしれない)をコピーして、そのdestFormを
このセッターを使ってH2BltVram singleton vramにすげ替えてから、copyBitsし
たということです。
--
堀内寛己(ほりうちひろき)
http://twitter.com/x19290

Reply | Threaded
Open this post in threaded view
|

[Squeak-ja: 4570] Re: BitBltの録画・再生が完全には成功しない

Yoshiki Ohshima-2
In reply to this post by Hiroki Horiuchi
At Thu, 12 May 2011 11:15:34 +0900,
Hiroki Horiuchi wrote:

>
> On 2011年05月12日 02:36, Yoshiki Ohshima wrote:
>
> > 面白い企画ですね。
>
> ありがとうございます。励みになります。
>
> > たとえば、Squeak 4.2イメージで、MVC
> > Projectを開き、そのなかで同様の処理をした場合はいかがでしょうか。
>
> MVCプロジェクト内でウィンドウタイトルは、正常に表示されました。

  Displayや他のFormを操作するためのエンジンとしては、昔からのBitBltの
他にBalloonEngineというものがあって、グラデーションやアンチエイリア
シング付のポリゴン描画などはそちらが使われるようになっています。これが
補足されていないために完全になっていないのではないかと推測しています。

> > もしそれで動くとすれば、asBalloonCanvasのsendersを見て、
> > BalloonCanvas経由で描画しているところをFormCanvasの機能でエミュレート
> > するようにするとよいかもしれません。
>
> これがよくわかりません。あてずっぽうで、BalloonCanvas>>asBalloonCanvasを
> 削除したところ、結果は同じ(グラデーションが再現されない)でした。
> FormCanvas>>asBalloonCanvasを^ self や^ self copyにしたところ、システム
> がフリーズしました。

FormCanvas>>drawPolygon:fillStyle:borderWidth:borderColor:

drawPolygon: vertices fillStyle: aFillStyle borderWidth: bw borderColor: bc
        "Use a BalloonCanvas"
        self asBalloonCanvas
                drawPolygon: vertices asArray
                fillStyle: (self shadowColor ifNil:[aFillStyle])
                borderWidth: bw
                borderColor: bc

というようになっているので、asBalloonCanvasが自分自身を返すと無限ルー
プになってしまいますね。

  BalloonCanvas経由の描画をどのように完全に補足するかというのはちょっ
と考える必要がありますね。原理的には、copyBitsを補足するのと同様に、
#flushの前でのEngineの状態をコピーすることでできるのかもしれませんが。

-- Yoshiki
Reply | Threaded
Open this post in threaded view
|

[Squeak-ja: 4572] Re: BitBltの録画・再生が完全には成功しない

Hiroki Horiuchi
On 2011年05月12日 14:07, Yoshiki Ohshima wrote:

> BalloonCanvas経由の描画をどのように完全に補足するかというのはちょっ
> と考える必要がありますね。原理的には、copyBitsを補足するのと同様に、
> #flushの前でのEngineの状態をコピーすることでできるのかもしれませんが。
--
ありがとうございます。

copyBitsを録画・再生するのと同様の方法で、グラデーションがほぼ再現できま
した。いずれまとめるつもりですが、ご報告まで。
--
堀内寛己(ほりうちひろき)
http://twitter.com/x19290