亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? z186.html

?? gtk_text program sample&eg
?? HTML
?? 第 1 頁 / 共 3 頁
字號:
              buffer.            </p>          </li>          <li>            <p>              In antialiased mode, the <span class="STRUCTNAME">              affine</span> and <span class="STRUCTNAME">              clip_path</span> arguments to the update method are              used to transform the sorted vector path; thus the              affine and clip path are implicitly stored for use in              the render method. If you do not use <tt class=               "APPLICATION">libart_lgpl</tt>'s sorted vector paths              in your own canvas items, you must arrange some other              way to ensure the affine and clip are taken into              account when you render.            </p>          </li>          <li>            <p>              In both modes, a redraw is requested for both the              region the item used to occupy, <i class="EMPHASIS">              and</i> the region the item will now occupy.            </p>          </li>        </ul>        <p>          Much of this work takes place behind the scenes in          utility functions from <tt class="FILENAME">          libgnomeui/gnome-canvas-util.h</tt>. <tt class=          "FUNCTION">gnome_canvas_update_bbox()</tt> sets the          item's new bounding box and requests a redraw on both the          old and new bounding boxes; it is used in GDK mode. (<tt          class="FUNCTION">gnome_canvas_update_bbox()</tt> expects          canvas pixel coordinates; <tt class="FUNCTION">          get_bounds()</tt> is a trivial function which computes          the rectangle's bounds in canvas pixel coordinates.)        </p>        <p>          So you know what's happening behind the scenes, here is          the implementation of <tt class="FUNCTION">          gnome_canvas_update_bbox()</tt>:        </p>        <table border="0" bgcolor="#E0E0E0" width="100%">          <tr>            <td><pre class="PROGRAMLISTING">&#13;voidgnome_canvas_update_bbox (GnomeCanvasItem *item,                           int x1, int y1,                           int x2, int y2){  gnome_canvas_request_redraw (item-&gt;canvas,                                item-&gt;x1, item-&gt;y1,                                item-&gt;x2, item-&gt;y2);  item-&gt;x1 = x1;  item-&gt;y1 = y1;  item-&gt;x2 = x2;  item-&gt;y2 = y2;  gnome_canvas_request_redraw (item-&gt;canvas,                                item-&gt;x1, item-&gt;y1,                                item-&gt;x2, item-&gt;y2);}      </pre>            </td>          </tr>        </table>        <p>          Of course you're free to do the equivalent yourself, this          is merely a convenience function.        </p>        <p>          In GDK mode, that's about all that happens; we update the          bounds and then return. Antialiased mode is a bit more          complex, but essentially the same tasks are performed.          First, <tt class="FUNCTION">          gnome_canvas_item_reset_bounds()</tt> sets the item's          bounds back to an empty rectangle. Then, two sorted          vector paths are prepared; one for the solid part of the          rectangle (if any), and one for the rectangle's outline          (if any). The same procedure is followed each time.          First, a vector path for <tt class="APPLICATION">          libart_lgpl</tt> is prepared; next, the path is affine          transformed; then <tt class="FUNCTION">          gnome_canvas_item_update_svp_clip()</tt> is used to          request a redraw on the old path, free the old path, clip          the new path, request a redraw on the new one, and save          the new one for use in rendering. If the rectangle's fill          or outline has been turned off, a redraw is requested on          the old vector path, but no new path is created.        </p>        <p>          To give you a clearer idea what is happening, here is the          implementation of <tt class="FUNCTION">          gnome_canvas_item_update_svp_clip()</tt>:        </p>        <table border="0" bgcolor="#E0E0E0" width="100%">          <tr>            <td><pre class="PROGRAMLISTING">&#13;voidgnome_canvas_item_update_svp_clip (GnomeCanvasItem *item,                                    ArtSVP **p_svp, ArtSVP *new_svp,                                   ArtSVP *clip_svp){  ArtSVP *clipped_svp;  if (clip_svp != NULL)     {      clipped_svp = art_svp_intersect (new_svp, clip_svp);      art_svp_free (new_svp);    }   else     {      clipped_svp = new_svp;    }  gnome_canvas_item_update_svp (item, p_svp, clipped_svp);}      </pre>            </td>          </tr>        </table>        <p>          and <tt class="FUNCTION">          gnome_canvas_item_update_svp()</tt>:        </p>        <table border="0" bgcolor="#E0E0E0" width="100%">          <tr>            <td><pre class="PROGRAMLISTING">&#13;voidgnome_canvas_item_update_svp (GnomeCanvasItem *item,                               ArtSVP **p_svp, ArtSVP *new_svp){  ArtDRect bbox;  gnome_canvas_update_svp (item-&gt;canvas, p_svp, new_svp);  if (new_svp)     {      bbox.x0 = item-&gt;x1;      bbox.y0 = item-&gt;y1;      bbox.x1 = item-&gt;x2;      bbox.y1 = item-&gt;y2;      art_drect_svp_union (&amp;bbox, new_svp);      item-&gt;x1 = bbox.x0;      item-&gt;y1 = bbox.y0;      item-&gt;x2 = bbox.x1;      item-&gt;y2 = bbox.y1;    }}      </pre>            </td>          </tr>        </table>        <p>          and then <tt class="FUNCTION">          gnome_canvas_update_svp()</tt>:        </p>        <table border="0" bgcolor="#E0E0E0" width="100%">          <tr>            <td><pre class="PROGRAMLISTING">&#13;voidgnome_canvas_update_svp (GnomeCanvas *canvas,                          ArtSVP **p_svp, ArtSVP *new_svp){  ArtSVP *old_svp;  ArtSVP *diff;  ArtUta *repaint_uta;  old_svp = *p_svp;  if (old_svp != NULL &amp;&amp; new_svp != NULL)     {      repaint_uta = art_uta_from_svp (old_svp);      gnome_canvas_request_redraw_uta (canvas, repaint_uta);      repaint_uta = art_uta_from_svp (new_svp);      gnome_canvas_request_redraw_uta (canvas, repaint_uta);    }   else if (old_svp != NULL)     {      repaint_uta = art_uta_from_svp (old_svp);      art_svp_free (old_svp);      gnome_canvas_request_redraw_uta (canvas, repaint_uta);    }  *p_svp = new_svp;}      </pre>            </td>          </tr>        </table>        <p>          Again, all of these are in <tt class="FILENAME">          libgnomeui/gnome-canvas-util.h</tt> for any canvas item          to use. Ignore the implementation details; the idea is          simply to see what work is being done. The code may be          easier to understand if you know that an <span class=           "STRUCTNAME">ArtDRect</span> is a "rectangle defined with          doubles," from <tt class="APPLICATION">libart_lgpl</tt>,          and that an <span class="STRUCTNAME">ArtUta</span> is a          "microtile array," basically a list of small regions.          (The antialiased canvas tracks the redraw region in a          fairly sophisticated way. Note that the "U" in "<span          class="STRUCTNAME">Uta</span>" is supposed to suggest the          greek letter symbolizing "micro," it does not stand for a          word beginning with "U".)        </p>        <div class="SECT3">          <h3 class="SECT3">            <a name="Z188">Requesting Updates</a>          </h3>          <p>            It is the canvas item's responsibility to request an            update or redraw when the properties of the item are            changed and the screen should be refreshed. This is            straightforward. For example, here is a snippet of code            from <tt class="FUNCTION">            gnome_canvas_re_set_arg()</tt>, which sets the <span            class="STRUCTNAME">"y2"</span> argument:          </p>          <table border="0" bgcolor="#E0E0E0" width="100%">            <tr>              <td><pre class="PROGRAMLISTING">&#13;  case ARG_Y2:    re-&gt;y2 = GTK_VALUE_DOUBLE (*arg);    gnome_canvas_item_request_update (item);    break;    </pre>              </td>            </tr>          </table>          <p>            Since <span class="STRUCTNAME">"y2"</span> modifies the            shape of the rectangle, the path must be recreated and            an update is necessary. Note that <tt class="FUNCTION">            gnome_canvas_item_request_update()</tt> simply sets a            flag and installs an idle handler if none is pending,            so it can be called many times without a performance            penalty.          </p>          <p>            Not all changes require an update; a redraw may be            sufficient, or perhaps the argument is unrelated to the            display. It depends on the canvas item and what exactly            is being changed.          </p>        </div>      </div>      <div class="SECT2">        <h2 class="SECT2">          <a name="Z189">The Render Method (Antialiased Mode)</a>        </h2>        <p>          The render method is shared between <span class=           "STRUCTNAME">GnomeCanvasRect</span> and <span class=           "STRUCTNAME">GnomeCanvasEllipse</span>; all it does is          stamp the two paths created in the update method into the          RGB buffer:        </p>        <table border="0" bgcolor="#E0E0E0" width="100%">          <tr>            <td><pre class="PROGRAMLISTING">&#13;static voidgnome_canvas_re_render (GnomeCanvasItem *item,                        GnomeCanvasBuf *buf){  GnomeCanvasRE *re;  guint32 fg_color, bg_color;  re = GNOME_CANVAS_RE (item);  if (re-&gt;fill_svp != NULL) {    gnome_canvas_render_svp (buf, re-&gt;fill_svp, re-&gt;fill_color);  }  if (re-&gt;outline_svp != NULL) {    gnome_canvas_render_svp (buf, re-&gt;outline_svp, re-&gt;outline_color);  }}      </pre>            </td>          </tr>        </table>        <p>          As you can see, most of the work takes place in <tt          class="FUNCTION">gnome_canvas_render_svp()</tt>, another          function from <tt class="FILENAME">          libgnomeui/gnome-canvas-util.h</tt>; here is its          implementation:        </p>        <table border="0" bgcolor="#E0E0E0" width="100%">          <tr>            <td><pre class="PROGRAMLISTING">&#13;voidgnome_canvas_render_svp (GnomeCanvasBuf *buf, ArtSVP *svp, guint32 rgba){  guint32 fg_color, bg_color;  if (buf-&gt;is_bg) {    bg_color = buf-&gt;bg_color;    fg_color = rgba &gt;&gt; 8;    art_rgb_svp_aa (svp,                    buf-&gt;rect.x0, buf-&gt;rect.y0, buf-&gt;rect.x1, buf-&gt;rect.y1,                    fg_color, bg_color,                    buf-&gt;buf, buf-&gt;buf_rowstride,                    NULL);    buf-&gt;is_bg = 0;    buf-&gt;is_buf = 1;  } else {    art_rgb_svp_alpha (svp,                       buf-&gt;rect.x0, buf-&gt;rect.y0, buf-&gt;rect.x1, buf-&gt;rect.y1,                       rgba,                       buf-&gt;buf, buf-&gt;buf_rowstride,                       NULL);  }}      </pre>            </td>          </tr>        </table>        <p>

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲国产日日夜夜| bt欧美亚洲午夜电影天堂| 国产盗摄一区二区三区| 在线视频国内一区二区| 亚洲精品在线免费播放| 亚洲精品成人精品456| 国产在线精品不卡| 欧美日韩国产bt| 国产精品毛片高清在线完整版| 国产精品一区二区黑丝| 在线精品亚洲一区二区不卡| 国产精品午夜电影| 国产一区二区导航在线播放| 欧美在线观看视频在线| 国产精品久久久久一区二区三区 | 欧美日韩高清不卡| 国产精品欧美综合在线| 国产在线视频一区二区| 精品欧美乱码久久久久久1区2区 | 欧美美女一区二区| 国产精品丝袜久久久久久app| 美女视频黄 久久| 91精品国产91热久久久做人人 | 欧美图区在线视频| 亚洲男人天堂av网| 91在线精品秘密一区二区| 久久久一区二区三区| 看电影不卡的网站| 欧美成人高清电影在线| 日韩黄色在线观看| 日韩一区二区视频| 亚洲成人一区二区在线观看| 日本道免费精品一区二区三区| 亚洲人成亚洲人成在线观看图片| 成人av午夜电影| |精品福利一区二区三区| 9i在线看片成人免费| 国产精品久久久久aaaa樱花 | 国产高清无密码一区二区三区| 精品剧情在线观看| 激情偷乱视频一区二区三区| 欧美一区午夜精品| 精品亚洲欧美一区| 国产欧美一区二区三区在线看蜜臀 | 国产精品久久久久影院亚瑟| 99精品欧美一区| 亚洲免费观看高清完整版在线| 欧美在线色视频| 视频在线观看一区二区三区| 91精品国产丝袜白色高跟鞋| 蜜臀久久99精品久久久画质超高清| 日韩欧美卡一卡二| 国产一区二区三区在线观看精品 | 在线观看91av| 国产夫妻精品视频| 一区二区三区欧美| 日韩一区二区三区四区| 国产一区二区伦理片| 亚洲国产经典视频| 日本电影欧美片| 日韩va欧美va亚洲va久久| 精品国产一区二区三区av性色| 国产一区二区剧情av在线| 国产精品久久久久久久久久久免费看 | 欧美亚洲动漫精品| 日本道精品一区二区三区| 五月天亚洲精品| 久久久久99精品国产片| 99久久精品免费| 日本伊人色综合网| 国产精品丝袜91| 日韩一区二区三区在线视频| 成人美女在线观看| 三级在线观看一区二区| 中文字幕久久午夜不卡| 欧美日本一道本| 国产高清一区日本| 日韩和欧美一区二区| 国产日韩欧美亚洲| 色婷婷综合中文久久一本| 久久国产精品第一页| 18欧美乱大交hd1984| 精品免费国产一区二区三区四区| av中文字幕不卡| 日韩电影在线观看电影| 亚洲视频一区二区在线| 2023国产精品| 日韩欧美123| 亚洲自拍另类综合| 色综合久久久久综合体| 精品一区二区三区在线播放| 亚洲日本乱码在线观看| 久久久不卡影院| 欧美乱妇20p| 欧美在线你懂得| www.亚洲色图| 国产成人精品午夜视频免费| 日韩电影在线观看网站| 亚洲一区在线观看视频| 中文字幕乱码久久午夜不卡| 久久久综合精品| 精品国产乱码久久| 精品久久久久久久久久久久久久久久久| 色8久久人人97超碰香蕉987| 国产一区二区按摩在线观看| 日本成人在线不卡视频| 亚洲超碰精品一区二区| 一区二区三区四区国产精品| 国产精品理伦片| 亚洲国产高清在线观看视频| 久久女同性恋中文字幕| 久久综合九色综合欧美亚洲| 69久久夜色精品国产69蝌蚪网| 日本高清不卡aⅴ免费网站| 99麻豆久久久国产精品免费优播| 国产乱人伦偷精品视频免下载| 蜜桃av一区二区在线观看| 亚洲成人激情自拍| 天天色综合天天| 日韩激情在线观看| 久久aⅴ国产欧美74aaa| 国产精品一区二区三区四区 | 日韩一区二区在线免费观看| 日韩亚洲欧美一区二区三区| 91精品国产综合久久精品app| 制服丝袜av成人在线看| 日韩精品一区二区三区swag| 国产成人综合在线| 成人小视频免费观看| 国产精品456露脸| a在线欧美一区| 欧美男生操女生| 欧美成人激情免费网| 精品国产髙清在线看国产毛片| 欧美大片一区二区三区| 国产喷白浆一区二区三区| 亚洲区小说区图片区qvod| 亚洲精品欧美二区三区中文字幕| 亚洲一区二区在线视频| 日韩成人免费在线| 高清国产一区二区| 99r国产精品| 7777精品伊人久久久大香线蕉经典版下载 | 91精品在线免费观看| 日韩欧美一级二级| 国产精品美女一区二区| 亚洲国产另类精品专区| 精品影视av免费| 一本久道久久综合中文字幕| 91精品一区二区三区久久久久久| 久久久久97国产精华液好用吗| 亚洲日穴在线视频| 另类成人小视频在线| 成人av免费网站| 欧美日韩国产一级片| 久久亚洲综合av| 亚洲午夜免费福利视频| 日本aⅴ亚洲精品中文乱码| 国产mv日韩mv欧美| 91精品国产综合久久福利| 国产农村妇女毛片精品久久麻豆| 亚洲最大色网站| 国产成人av资源| 欧美一区二区国产| 亚洲欧洲国产日本综合| 捆绑紧缚一区二区三区视频 | 五月婷婷久久综合| 成人免费观看av| 精品国产在天天线2019| 亚洲视频电影在线| 精品中文字幕一区二区小辣椒| www.成人在线| 精品裸体舞一区二区三区| 亚洲乱码中文字幕综合| 久草中文综合在线| 欧美特级限制片免费在线观看| 久久精品亚洲麻豆av一区二区| 日韩高清在线观看| 91性感美女视频| 久久综合成人精品亚洲另类欧美| 亚洲精品视频自拍| av亚洲精华国产精华精华 | 国产一区二区三区在线观看免费| 欧美巨大另类极品videosbest | 欧美亚洲国产一卡| 中文字幕日韩精品一区| 精品亚洲国内自在自线福利| 在线观看av不卡| 最新国产成人在线观看| 国产高清不卡二三区| 欧美成人高清电影在线| 免费xxxx性欧美18vr| 欧美日韩精品欧美日韩精品一综合| 国产精品电影一区二区| 国产69精品久久久久777| 久久蜜臀精品av| 国产精品一区二区在线看| ww久久中文字幕| 国产精品一二三区| 国产日韩一级二级三级|