亚洲欧美第一页_禁久久精品乱码_粉嫩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一区二区三区免费野_久草精品视频
亚洲激情欧美激情| 午夜天堂影视香蕉久久| 日本国产一区二区| 久久精品国产网站| 亚洲免费在线电影| 国产精品入口麻豆原神| 欧美岛国在线观看| 欧美三级视频在线观看| 成人黄色小视频在线观看| 视频在线观看91| 亚洲欧美日韩精品久久久久| 久久婷婷久久一区二区三区| 91精品国产欧美一区二区| 91视频com| 国产成人aaa| 蓝色福利精品导航| 日产精品久久久久久久性色 | 国产日韩欧美a| 这里只有精品99re| 欧美亚洲精品一区| 99久久国产综合精品女不卡| 国产成a人亚洲精品| 激情五月播播久久久精品| 亚洲一区av在线| 亚洲精品欧美激情| 国产精品久久久久久久久图文区| 精品成人在线观看| 日韩视频在线一区二区| 在线成人高清不卡| 欧美在线啊v一区| 色综合中文字幕国产| 成人激情视频网站| 成人自拍视频在线| 成人18视频在线播放| 不卡的看片网站| 成人亚洲一区二区一| 国产成人综合在线观看| 国产精品综合二区| 国产乱人伦偷精品视频不卡| 国内精品伊人久久久久av影院| 六月丁香综合在线视频| 另类小说欧美激情| 麻豆精品视频在线| 狠狠色狠狠色综合| 国产一区二区不卡| 成人免费视频caoporn| 成人av网址在线| 色婷婷亚洲婷婷| 欧美日韩日日骚| 日韩一区二区三区高清免费看看| 欧美mv日韩mv| 国产亚洲制服色| 国产精品久久久久久久浪潮网站| 亚洲美女偷拍久久| 香蕉成人啪国产精品视频综合网| 亚洲无线码一区二区三区| 日韩高清欧美激情| 激情伊人五月天久久综合| 丁香婷婷深情五月亚洲| 色综合天天综合网天天狠天天| 欧美性淫爽ww久久久久无| 欧美一级午夜免费电影| 久久久av毛片精品| 亚洲婷婷综合色高清在线| 亚洲午夜激情av| 美腿丝袜在线亚洲一区| 国产不卡一区视频| 在线观看视频欧美| 日韩你懂的在线播放| 国产欧美精品一区二区色综合| 亚洲天堂2014| 琪琪久久久久日韩精品| 国产91丝袜在线18| 欧美日韩亚洲丝袜制服| 久久久久久久久岛国免费| 一区二区在线观看av| 奇米色一区二区三区四区| 成人小视频免费观看| 欧美系列在线观看| 国产欧美日韩精品a在线观看| 一区二区三区中文字幕| 韩国成人精品a∨在线观看| av中文字幕不卡| 日韩视频一区二区三区在线播放| 国产精品无人区| 热久久国产精品| 91网站视频在线观看| 欧美一级黄色录像| 一区二区三区四区在线免费观看| 久久国内精品自在自线400部| 成人精品鲁一区一区二区| 884aa四虎影成人精品一区| 日本一区二区三区高清不卡| 亚洲.国产.中文慕字在线| 国产不卡视频一区二区三区| 在线观看日韩一区| 欧美国产丝袜视频| 蜜臀av性久久久久蜜臀aⅴ流畅| 91毛片在线观看| 久久久久久久久久久久久夜| 午夜视频一区二区| 91一区二区三区在线播放| 精品国产1区2区3区| 亚洲香肠在线观看| av毛片久久久久**hd| 26uuu国产电影一区二区| 午夜伊人狠狠久久| 91啪在线观看| 国产嫩草影院久久久久| 美日韩一区二区| 欧美日韩免费一区二区三区视频| 国产日产精品一区| 激情深爱一区二区| 欧美一区二区三区视频免费播放 | 欧美一区二区三区在线观看| 亚洲色图丝袜美腿| www.久久精品| 日本一区二区免费在线| 国内精品第一页| 欧美大尺度电影在线| 日本视频中文字幕一区二区三区| 欧美视频一区二区三区四区 | 日本不卡一二三区黄网| 欧美亚洲综合在线| 亚洲欧美激情小说另类| 99精品视频一区| 中文字幕一区二区三| 福利91精品一区二区三区| 久久青草欧美一区二区三区| 麻豆91小视频| 欧美大白屁股肥臀xxxxxx| 日韩av在线发布| 欧美一区二区三区免费视频| 天堂成人免费av电影一区| 欧美日韩一区二区电影| 亚洲第一福利视频在线| 欧美亚洲综合另类| 亚洲精品日韩一| 欧美日韩综合不卡| 日韩成人dvd| 欧美α欧美αv大片| 狠狠色丁香九九婷婷综合五月| 欧美刺激午夜性久久久久久久| 国内成+人亚洲+欧美+综合在线| 久久亚洲免费视频| 丁香一区二区三区| 亚洲婷婷综合色高清在线| 91同城在线观看| 亚洲在线视频一区| 91麻豆精品国产91久久久久久久久| 日韩中文字幕亚洲一区二区va在线| 欧美精品少妇一区二区三区 | 激情久久五月天| 久久久久久久久久电影| 成人福利视频在线| 一级精品视频在线观看宜春院| 欧美日韩在线三级| 麻豆91小视频| 中文字幕一区二区日韩精品绯色| 91成人免费网站| 日韩成人av影视| 国产日韩欧美亚洲| 欧美自拍偷拍午夜视频| 日本不卡123| 国产嫩草影院久久久久| 欧美综合天天夜夜久久| 久久99精品国产麻豆婷婷| 中文字幕在线免费不卡| 欧美精品一级二级| 丁香婷婷深情五月亚洲| 污片在线观看一区二区| 久久综合99re88久久爱| 一本到高清视频免费精品| 日本不卡在线视频| 亚洲国产精品黑人久久久| 欧美日韩午夜在线| 国产成人啪午夜精品网站男同| 亚洲一区二区三区免费视频| 久久久美女艺术照精彩视频福利播放| 99久久er热在这里只有精品15| 日本欧美加勒比视频| 中文在线资源观看网站视频免费不卡| 在线亚洲高清视频| 国产精品一区二区三区网站| 夜夜嗨av一区二区三区中文字幕| 欧美一激情一区二区三区| 99热精品国产| 黄网站免费久久| 亚洲动漫第一页| 中文字幕av在线一区二区三区| 欧美日韩在线亚洲一区蜜芽| 成人免费视频播放| 久久99精品国产麻豆婷婷| 亚洲综合免费观看高清完整版在线| 久久精品夜夜夜夜久久| 欧美一区二区视频在线观看| 在线免费观看视频一区| 成人一区二区三区| 久久国产精品99久久人人澡| 亚洲一区二区三区免费视频|