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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? pango-glyph-item.c

?? linux
?? C
?? 第 1 頁 / 共 2 頁
字號(hào):
/* Pango * pango-glyph-item.c: Pair of PangoItem and a glyph string * * Copyright (C) 2002 Red Hat Software * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Library General Public * License as published by the Free Software Foundation; either * version 2 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.	 See the GNU * Library General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this library; if not, write to the * Free Software Foundation, Inc., 59 Temple Place - Suite 330, * Boston, MA 02111-1307, USA. */#include <config.h>#include <string.h>#include "pango-glyph-item.h"#include "pango-glyph-item-private.h"#define LTR(glyph_item) (((glyph_item)->item->analysis.level % 2) == 0)/** * pango_glyph_item_split: * @orig: a #PangoItem * @text: text to which positions in @orig apply * @split_index: byte index of position to split item, relative to the start of the item * * Modifies @orig to cover only the text after @split_index, and * returns a new item that covers the text before @split_index that * used to be in @orig. You can think of @split_index as the length of * the returned item. @split_index may not be 0, and it may not be * greater than or equal to the length of @orig (that is, there must * be at least one byte assigned to each item, you can't create a * zero-length item). * * This function is similar in function to pango_item_split() (and uses * it internally.) * * Return value: the newly allocated item representing text before *               @split_index, which should be freed *               with pango_glyph_item_free(). * * Since: 1.2 **/PangoGlyphItem *pango_glyph_item_split (PangoGlyphItem *orig,			const char     *text,			int             split_index){  PangoGlyphItem *new;  int i;  int num_glyphs;  int num_remaining;  int split_offset;  g_return_val_if_fail (orig != NULL, NULL);  g_return_val_if_fail (orig->item->length > 0, NULL);  g_return_val_if_fail (split_index > 0, NULL);  g_return_val_if_fail (split_index < orig->item->length, NULL);  if (LTR (orig))    {      for (i = 0; i < orig->glyphs->num_glyphs; i++)	{	  if (orig->glyphs->log_clusters[i] >= split_index)	    break;	}      if (i == orig->glyphs->num_glyphs) /* No splitting necessary */	return NULL;      split_index = orig->glyphs->log_clusters[i];      num_glyphs = i;    }  else    {      for (i = orig->glyphs->num_glyphs - 1; i >= 0; i--)	{	  if (orig->glyphs->log_clusters[i] >= split_index)	    break;	}      if (i < 0) /* No splitting necessary */	return NULL;      split_index = orig->glyphs->log_clusters[i];      num_glyphs = orig->glyphs->num_glyphs - 1 - i;    }  num_remaining = orig->glyphs->num_glyphs - num_glyphs;  new = g_slice_new (PangoGlyphItem);  split_offset = g_utf8_pointer_to_offset (text + orig->item->offset,					   text + orig->item->offset + split_index);  new->item = pango_item_split (orig->item, split_index, split_offset);  new->glyphs = pango_glyph_string_new ();  pango_glyph_string_set_size (new->glyphs, num_glyphs);  if (LTR (orig))    {      memcpy (new->glyphs->glyphs, orig->glyphs->glyphs, num_glyphs * sizeof (PangoGlyphInfo));      memcpy (new->glyphs->log_clusters, orig->glyphs->log_clusters, num_glyphs * sizeof (int));      memmove (orig->glyphs->glyphs, orig->glyphs->glyphs + num_glyphs,	       num_remaining * sizeof (PangoGlyphInfo));      for (i = num_glyphs; i < orig->glyphs->num_glyphs; i++)	orig->glyphs->log_clusters[i - num_glyphs] = orig->glyphs->log_clusters[i] - split_index;    }  else    {      memcpy (new->glyphs->glyphs, orig->glyphs->glyphs + num_remaining, num_glyphs * sizeof (PangoGlyphInfo));      memcpy (new->glyphs->log_clusters, orig->glyphs->log_clusters + num_remaining, num_glyphs * sizeof (int));      for (i = 0; i < num_remaining; i++)	orig->glyphs->log_clusters[i] = orig->glyphs->log_clusters[i] - split_index;    }  pango_glyph_string_set_size (orig->glyphs, orig->glyphs->num_glyphs - num_glyphs);  return new;}/** * pango_glyph_item_free: * @glyph_item: a #PangoGlyphItem * * Frees a #PangoGlyphItem and memory to which it points. * * Since: 1.6 **/voidpango_glyph_item_free  (PangoGlyphItem *glyph_item){  if (glyph_item->item)    pango_item_free (glyph_item->item);  if (glyph_item->glyphs)    pango_glyph_string_free (glyph_item->glyphs);  g_slice_free (PangoGlyphItem, glyph_item);}/** * _pango_glyph_item_iter_next_cluster: * @iter: a #PangoGlyphItemIter * * Advances the iterator to the next cluster in the glyph item. * * Return value: %TRUE if the iterator was advanced, %FALSE if we were already on the *  last cluster. **/gboolean_pango_glyph_item_iter_next_cluster (PangoGlyphItemIter *iter){  int glyph_index = iter->end_glyph;  PangoGlyphString *glyphs = iter->glyph_item->glyphs;  int cluster;  PangoItem *item = iter->glyph_item->item;  if (LTR (iter->glyph_item))    {      if (glyph_index == glyphs->num_glyphs)	return FALSE;    }  else    {      if (glyph_index < 0)	return FALSE;    }  iter->start_glyph = iter->end_glyph;  iter->start_index = iter->end_index;  iter->start_char = iter->end_char;  if (LTR (iter->glyph_item))    {      cluster = glyphs->log_clusters[glyph_index];      while (TRUE)	{	  glyph_index++;	  if (glyph_index == glyphs->num_glyphs)	    {	      iter->end_index = item->offset + item->length;	      iter->end_char = item->num_chars;	      break;	    }	  if (glyphs->log_clusters[glyph_index] != cluster)	    {	      iter->end_index = item->offset + glyphs->log_clusters[glyph_index];	      iter->end_char += g_utf8_strlen (iter->text + iter->start_index,					       iter->end_index - iter->start_index);	      break;	    }	}    }  else			/* RTL */    {      cluster = glyphs->log_clusters[glyph_index];      while (TRUE)	{	  glyph_index--;	  if (glyph_index < 0)	    {	      iter->end_index = item->offset + item->length;	      iter->end_char = item->num_chars;	      break;	    }	  if (glyphs->log_clusters[glyph_index] != cluster)	    {	      iter->end_index = item->offset + glyphs->log_clusters[glyph_index];	      iter->end_char += g_utf8_strlen (iter->text + iter->start_index,					       iter->end_index - iter->start_index);	      break;	    }	}    }  iter->end_glyph = glyph_index;  return TRUE;}/** * _pango_glyph_item_iter_prev_cluster: * @iter: a #PangoGlyphItemIter * * Moves the iterator to the preceding cluster in the glyph item. * * Return value: %TRUE if the iterator was moved, %FALSE if we were already on the *  first cluster. **/gboolean_pango_glyph_item_iter_prev_cluster (PangoGlyphItemIter *iter){  int glyph_index = iter->start_glyph;  PangoGlyphString *glyphs = iter->glyph_item->glyphs;  int cluster;  PangoItem *item = iter->glyph_item->item;  if (LTR (iter->glyph_item))    {      if (glyph_index == 0)	return FALSE;    }  else    {      if (glyph_index == glyphs->num_glyphs - 1)	return FALSE;    }  iter->end_glyph = iter->start_glyph;  iter->end_index = iter->start_index;  iter->end_char = iter->start_char;  if (LTR (iter->glyph_item))    {      cluster = glyphs->log_clusters[glyph_index - 1];      while (TRUE)	{	  glyph_index--;	  if (glyph_index == 0)	    {	      iter->start_index = item->offset;	      iter->start_char = 0;	      break;	    }	  if (glyphs->log_clusters[glyph_index] != cluster)	    {	      glyph_index++;	      iter->start_index = item->offset + glyphs->log_clusters[glyph_index];	      iter->start_char -= g_utf8_strlen (iter->text + iter->start_index,						 iter->end_index - iter->start_index);	      break;	    }	}    }  else			/* RTL */    {      cluster = glyphs->log_clusters[glyph_index + 1];      while (TRUE)	{	  glyph_index++;	  if (glyph_index == glyphs->num_glyphs - 1)	    {	      iter->start_index = item->offset;	      iter->start_char = 0;	      break;	    }	  if (glyphs->log_clusters[glyph_index] != cluster)	    {	      glyph_index--;	      iter->start_index = item->offset + glyphs->log_clusters[glyph_index];	      iter->start_char -= g_utf8_strlen (iter->text + iter->start_index,						 iter->end_index - iter->start_index);	      break;	    }	}    }  iter->start_glyph = glyph_index;  return TRUE;}/** * _pango_glyph_item_iter_init_start: * @iter: pointer to a #PangoGlyphItemIter structure * @glyph_item: the glyph item that @iter points into * @text: text corresponding to the glyph item * * Initializes a #PangoGlyphItemIter structure to point to the * first cluster in a glyph item. * * Return value: %FALSE if there are no clusters in the glyph item; *  in this case, the state of @iter is undefined. **/gboolean_pango_glyph_item_iter_init_start (PangoGlyphItemIter  *iter,				   PangoGlyphItem      *glyph_item,

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
美国毛片一区二区三区| 肉色丝袜一区二区| 国产乱人伦偷精品视频免下载| 99精品视频在线观看| 精品免费99久久| 国产精品视频yy9299一区| 国产精品一二二区| 中文字幕精品在线不卡| 北岛玲一区二区三区四区| 欧美日韩精品电影| 亚洲人成电影网站色mp4| 在线影院国内精品| 亚洲午夜一二三区视频| 欧美日韩激情在线| 国产精品传媒在线| 国产成人精品影院| 亚洲色图一区二区三区| 欧美在线制服丝袜| 国产精品亚洲第一| 日韩欧美在线1卡| 另类中文字幕网| 国产精品毛片高清在线完整版| 成人国产免费视频| 久久精品免费观看| 国产精品激情偷乱一区二区∴| 国产精品一区二区在线看| 一区二区三区欧美亚洲| 国产无人区一区二区三区| 欧美三级三级三级爽爽爽| 美女一区二区在线观看| www.成人在线| 亚洲一区二区三区美女| 精品国产污网站| 久久久久成人黄色影片| 久久久久久久久久久久久女国产乱 | 日韩美女主播在线视频一区二区三区| 亚洲一二三专区| 亚洲一区视频在线| 91精品国产aⅴ一区二区| 午夜精品福利久久久| 国产午夜精品一区二区| 在线观看91精品国产入口| 天天综合色天天综合色h| 中文字幕一区二区三区四区| 欧美裸体bbwbbwbbw| 欧美性感一类影片在线播放| 国产福利一区二区三区| 激情伊人五月天久久综合| 亚洲成在人线在线播放| 日本欧美一区二区三区| 国产乱码精品一品二品| 国产成都精品91一区二区三| 成人理论电影网| 91国产免费观看| 久久众筹精品私拍模特| 亚洲精品乱码久久久久久日本蜜臀| 一区二区三区不卡在线观看| 日本va欧美va精品| 激情丁香综合五月| 国产中文一区二区三区| 99精品视频在线观看免费| 欧美日产国产精品| 亚洲蜜臀av乱码久久精品| 九九视频精品免费| 欧美无砖专区一中文字| 亚洲国产精品成人综合色在线婷婷| 偷拍与自拍一区| 99精品一区二区三区| 91在线无精精品入口| 欧美日韩高清影院| 亚洲一区二区在线免费观看视频| 高清成人免费视频| 亚洲人成网站在线| 一区二区三区在线视频播放| 国产精品久久久久影院色老大| 国模无码大尺度一区二区三区| 日本一区二区三区免费乱视频| 99re这里只有精品首页| 精久久久久久久久久久| 精品国产欧美一区二区| 91精品国模一区二区三区| 三级成人在线视频| 久久久久国产精品人| 色婷婷亚洲一区二区三区| 国产精品久久777777| 欧美日韩黄色一区二区| 日韩影院免费视频| 2023国产一二三区日本精品2022| 蜜臀精品久久久久久蜜臀| 精品美女在线观看| 成人午夜电影久久影院| 亚洲欧美日韩国产手机在线| 欧美中文字幕一区二区三区亚洲 | 中文字幕欧美激情一区| 99在线精品免费| 亚洲电影一区二区三区| 欧美第一区第二区| 色哦色哦哦色天天综合| 国产精品综合网| 日本欧美一区二区三区乱码| 一区二区三区中文字幕电影| 国产一区 二区 三区一级| 亚洲一区二区av在线| 日韩欧美你懂的| 欧美xingq一区二区| 欧美一区二区成人| 欧美视频一区二| 欧美性受xxxx| 欧洲生活片亚洲生活在线观看| 成人av动漫网站| 高清av一区二区| 国产福利不卡视频| 极品瑜伽女神91| 精品亚洲国产成人av制服丝袜| 青青草国产成人99久久| 久久精品国产澳门| 国产乱理伦片在线观看夜一区| 狠狠色丁香婷综合久久| 国产一区二区伦理片| 国产ts人妖一区二区| 国产风韵犹存在线视精品| 成人激情开心网| 色av一区二区| 欧美成人高清电影在线| 亚洲人一二三区| 午夜视频一区在线观看| 美女网站色91| 色一情一伦一子一伦一区| 日韩情涩欧美日韩视频| 1024国产精品| 国产成人亚洲综合a∨婷婷图片| 欧美丝袜丝交足nylons| 国产精品嫩草99a| 国产二区国产一区在线观看| 欧美一区二区三区的| 亚洲电影激情视频网站| 日本国产一区二区| 一区二区三区免费网站| 日本精品裸体写真集在线观看| 亚洲摸摸操操av| 欧美综合天天夜夜久久| 成人免费一区二区三区视频| 免费成人美女在线观看| 欧美人狂配大交3d怪物一区| 亚洲精品一区二区三区福利| 国产精品麻豆网站| 精品粉嫩超白一线天av| 日韩欧美成人一区| 视频一区欧美日韩| 欧美在线免费播放| 亚洲免费观看高清完整版在线观看| 国产一区二区调教| 精品毛片乱码1区2区3区| 天堂在线亚洲视频| 91麻豆精品国产91久久久资源速度| 五月天中文字幕一区二区| 91啦中文在线观看| 亚洲中国最大av网站| 欧美日本高清视频在线观看| 蜜臀av一区二区在线免费观看| 7777精品久久久大香线蕉 | 日韩欧美色综合网站| 久久69国产一区二区蜜臀| 日韩欧美国产不卡| 成人免费不卡视频| 一区二区三区免费观看| 日韩视频免费观看高清完整版| 美脚の诱脚舐め脚责91| 欧美一区二区三区色| 日韩成人av影视| 久久久久久一级片| 91啪亚洲精品| 一区二区三区四区在线播放 | 色婷婷精品大视频在线蜜桃视频| 国产欧美一二三区| 色综合色综合色综合| 天天综合色天天| 国产日韩在线不卡| 91成人在线精品| 蜜桃av一区二区三区| 中文字幕第一区| 99九九99九九九视频精品| 午夜天堂影视香蕉久久| 国产欧美一区二区三区鸳鸯浴 | 手机精品视频在线观看| 久久嫩草精品久久久精品| 97久久超碰精品国产| 五月开心婷婷久久| 国产精品美女一区二区三区| 在线影视一区二区三区| 国精产品一区一区三区mba桃花| 国产亚洲一二三区| 欧美一区二区三区四区在线观看| av男人天堂一区| 国产自产v一区二区三区c| 亚洲午夜精品一区二区三区他趣| 久久综合色8888| 久久综合丝袜日本网| 91精品国产一区二区三区蜜臀 | 精品在线亚洲视频|