Example #1
0
    public IEnumerator WithEmojiComplex()
    {
        // 最後のgooooo..dが分離されて浮くように。
        var box = BoxElement.GO(
            null,// bg画像
            () =>
        {
            Debug.Log("ルートがタップされた");
        },
            TextElement.GO("hannidjkfajfaoooood"),                                                         // テキスト
            ImageElement.GO(null),                                                                         // 画像
            ButtonElement.GO(null, () => { Debug.Log("ボタンがタップされた"); }),
            TextElement.GO("hannin is yasu!\U0001F60A\U0001F60B this is public problem! goooooooooooooad") // 59から絵文字を1文字削ると?2文字減る。文字数カウント的にはUTF8と同じ扱いなのか。うーん

            // 事前にサイズを取得、インデックスポイントを送り込んで、取り除いて、という形にするか。
            // どうすればできる?載せ替える四角を成立させればいいか。単純に文字列コンテンツを絵文字でぶった切るか!!これは手な気がする。
            // 他になんかないかな。いけるな、
            // 文字列を最初に渡すときに、N個の絵文字が出た場合、\Uで検索して文字を取り出す。そんで、その文字がどんな画像になるか、っていうのを別途やる。そんで、
            // それぞれの文字を出力して、サイズを割り出し、文字列を再構成する。
            // 再構成した上でレイアウトすればいい。で、それぞれのレイアウト終了時に絵文字の画像を割り当てるか。
            // この方法であれば、まあ、そもそも画像を割り当てるような置換ができれば優勝できるな。

            // 割り出し方に問題が出るかな、例があると嬉しいな。ない。今はない。
            );

        // レイアウトに使うクラスを生成する
        var layouter = new BasicLayouter();

        // コンテンツのサイズをセットする
        var size = new Vector2(600, 100);

        // レイアウトを行う

        box = LayouTaro.Layout(
            canvas.transform,
            size,
            box,
            layouter
            );

        var rectTrans = box.gameObject.GetComponent <RectTransform>();

        rectTrans.anchoredPosition3D = Vector3.zero;
        rectTrans.localScale         = Vector3.one;

        ScreenCapture.CaptureScreenshot("./images/" + methodName);

        while (false)
        {
            yield return(null);
        }

        yield break;
    }
Example #2
0
    void Start()
    {
        // データのインスタンスを元に、レイアウトを開始する。
        Debug.Log("レイアウト開始!");

        /*
         *  ・マルチ文字列、ラストが1ラインなら別にレイアウト巻き込まれていいよね
         *  ・同じマルチ文字列で結果が違うやつがいる
         */

        // データ構造を作る、自由に構造を書いていい。
        var box = BoxElement.GO(
            null,// bg画像
            () =>
        {
            Debug.Log("ルートがタップされた");
        },
            TextElement.GO("hannin is yasu! this is public problem! gooooooooooooood"), // テキスト
            ImageElement.GO(null),                                                      // 画像
            ButtonElement.GO(null, () => { Debug.Log("ボタンがタップされた"); })
            );

        // レイアウトに使うクラスを生成する
        var layouter = new MyLayouter();

        // コンテンツのサイズをセットする
        var size = new Vector2(600, 100);

        // レイアウトを行う
        var go = box.gameObject;

        go = LayouTaro.Layout <BoxElement>(
            canvas.transform,
            size,
            go,
            layouter
            );

        go.transform.SetParent(canvas.transform);
        go.GetComponent <RectTransform>().anchoredPosition = Vector2.zero;

        // 値の更新とリレイアウトを行う
        // goからBoxを取得し、Relayoutを行い、行った後のGameObjectを受け取る。同じインスタンスで中身の値が変わったものが返ってくる。
        go = LayouTaro.RelayoutWithUpdate <BoxElement>(
            size,
            go,
            new Dictionary <LTElementType, object> {
            { LTElementType.Image, null },
            { LTElementType.Text, "relayout!" }
        },
            layouter
            );
    }
Example #3
0
    public IEnumerator RelayoutWithEmoji()
    {
        // generate your own data structure with parameters for UI.
        var box = BoxElement.GO(
            null,// UI bg with image
            () =>
        {
            Debug.Log("root box element is tapped.");
        },
            TextElement.GO("hannin is yasu! this is public problem\U0001F60A! gooooooooooooood "), // text.
            ImageElement.GO(null),                                                                 // image.
            ButtonElement.GO(null, () => { Debug.Log("button is tapped."); })
            );

        // generate the layouter which you want to use for layout.
        var layouter = new BasicLayouter();

        // set the default size of content.
        var size = new Vector2(600, 100);

        // do layout with LayouTaro. the GameObject will be returned with layouted structure.

        box = LayouTaro.Layout(
            canvas.transform,
            size,
            box,
            layouter
            );

        var rectTrans = box.gameObject.GetComponent <RectTransform>();

        rectTrans.anchoredPosition3D = Vector3.zero;
        rectTrans.localScale         = Vector3.one;

        // update element values and re-layout with same GameObject.
        box = LayouTaro.RelayoutWithUpdate(
            size,
            box,
            new Dictionary <LTElementType, object> {
            { LTElementType.Image, null },
            { LTElementType.Text, "relayout\U0001F60A!" }
        },
            layouter
            );

        yield return(null);

        ScreenCapture.CaptureScreenshot("./images/" + methodName);

        yield break;
    }
Example #4
0
    public IEnumerator DetectMissingEmoji()
    {
        // generate your own data structure with parameters for UI.
        var box = BoxElement.GO(
            null,// UI bg with image
            () =>
        {
            Debug.Log("root box element is tapped.");
        },
            TextElement.GO("\U0001F971\U0001F60A"), // text.
            ImageElement.GO(null),                  // image.
            ButtonElement.GO(null, () => { Debug.Log("button is tapped."); })
            );

        // generate the layouter which you want to use for layout.
        var layouter = new BasicLayouter();

        // set the default size of content.
        var size = new Vector2(600, 100);

        var done = false;

        LayouTaro.SetOnMissingCharacterFound(chs =>
        {
            var bytes = Encoding.UTF8.GetBytes(chs);
            foreach (var ch in bytes)
            {
                Debug.Log("missing ch byte:" + ch);
            }
            done = true;
        });
        // do layout with LayouTaro. the GameObject will be returned with layouted structure.

        box = LayouTaro.Layout(
            canvas.transform,
            size,
            box,
            layouter
            );

        var rectTrans = box.gameObject.GetComponent <RectTransform>();

        rectTrans.anchoredPosition3D = Vector3.zero;
        rectTrans.localScale         = Vector3.one;

        ScreenCapture.CaptureScreenshot("./images/" + methodName);

        Assert.True(done);
        yield break;
    }
Example #5
0
    public IEnumerator WithEmojiComplex2()
    {
        // 最後のgooooo..dが分離されて浮くように。
        var box = BoxElement.GO(
            null,// bg画像
            () =>
        {
            Debug.Log("ルートがタップされた");
        },
            TextElement.GO("hannidjkfajfaoooood"),                                                // テキスト
            ImageElement.GO(null),                                                                // 画像
            ButtonElement.GO(null, () => { Debug.Log("ボタンがタップされた"); }),
            TextElement.GO("hannin is yasu!\U0001F60A this is public problem! goooooooooooooad"), // テキスト
            ImageElement.GO(null),                                                                // 画像
            ImageElement.GO(null),                                                                // 画像
            TextElement.GO("hannidjkfajfaoooood2")
            );

        // レイアウトに使うクラスを生成する
        var layouter = new BasicLayouter();

        // コンテンツのサイズをセットする
        var size = new Vector2(600, 100);

        // レイアウトを行う

        box = LayouTaro.Layout(
            canvas.transform,
            size,
            box,
            layouter
            );

        var rectTrans = box.gameObject.GetComponent <RectTransform>();

        rectTrans.anchoredPosition3D = Vector3.zero;
        rectTrans.localScale         = Vector3.one;

        ScreenCapture.CaptureScreenshot("./images/" + methodName);

        while (false)
        {
            yield return(null);
        }

        yield break;
    }
Example #6
0
    public IEnumerator LayoutOneLineTextDoesNotContainInTheEndOfLine()
    {
        var box = BoxElement.GO(
            null,// bg画像
            () =>
        {
            Debug.Log("ルートがタップされた");
        },
            TextElement.GO("hannin is yasu! this is public problem! gooooooood"), // テキスト
            ImageElement.GO(null),                                                // 画像
            ImageElement.GO(6.558f + 0.0002f, 10f),
            TextElement.GO("lllllllllllllx"),
            TextElement.GO("dijklmnoああああああああああああいえああああ")
            );

        // レイアウトに使うクラスを生成する
        var layouter = new BasicLayouter();

        // コンテンツのサイズをセットする
        var size = new Vector2(600, 100);

        // レイアウトを行う

        box = LayouTaro.Layout(
            canvas.transform,
            size,
            box,
            layouter
            );

        var rectTrans = box.gameObject.GetComponent <RectTransform>();

        rectTrans.anchoredPosition3D = Vector3.zero;
        rectTrans.localScale         = Vector3.one;

        yield return(null);

        while (false)
        {
            yield return(null);
        }

        ScreenCapture.CaptureScreenshot("./images/" + methodName);
        yield break;
    }
Example #7
0
    public IEnumerator ImageAndButton()
    {
        // generate your own data structure with parameters for UI.
        var box = BoxElement.GO(
            null,// UI bg with image
            () =>
        {
            Debug.Log("root box element is tapped.");
        },
            ImageElement.GO(null),// image.
            ButtonElement.GO(null, () => { Debug.Log("button is tapped."); })
            );

        // generate the layouter which you want to use for layout.
        var layouter = new BasicLayouter();

        // set the default size of content.
        var size = new Vector2(600, 100);

        // do layout with LayouTaro. the GameObject will be returned with layouted structure.

        box = LayouTaro.Layout(
            canvas.transform,
            size,
            box,
            layouter
            );

        var rectTrans = box.gameObject.GetComponent <RectTransform>();

        rectTrans.anchoredPosition3D = Vector3.zero;
        rectTrans.localScale         = Vector3.one;

        yield return(null);

        ScreenCapture.CaptureScreenshot("./images/" + methodName);

        yield break;
    }
Example #8
0
    public IEnumerator BasicPattern()
    {
        var box = BoxElement.GO(
            null,// bg画像
            () =>
        {
            Debug.Log("ルートがタップされた");
        },
            TextElement.GO("hannin is yasu! this is public problem! gooooooooooooood"), // テキスト
            ImageElement.GO(null),                                                      // 画像
            ButtonElement.GO(null, () => { Debug.Log("ボタンがタップされた"); })
            );

        // レイアウトに使うクラスを生成する
        var layouter = new BasicLayouter();

        // コンテンツのサイズをセットする
        var size = new Vector2(600, 100);

        // レイアウトを行う

        box = LayouTaro.Layout(
            canvas.transform,
            size,
            box,
            layouter
            );

        var rectTrans = box.gameObject.GetComponent <RectTransform>();

        rectTrans.anchoredPosition3D = Vector3.zero;
        rectTrans.localScale         = Vector3.one;


        ScreenCapture.CaptureScreenshot("./images/" + methodName);
        yield break;
    }