当前位置: 首页>>代码示例>>C++>>正文


C++ TT_Face::interpreter方法代码示例

本文整理汇总了C++中TT_Face::interpreter方法的典型用法代码示例。如果您正苦于以下问题:C++ TT_Face::interpreter方法的具体用法?C++ TT_Face::interpreter怎么用?C++ TT_Face::interpreter使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在TT_Face的用法示例。


在下文中一共展示了TT_Face::interpreter方法的4个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。

示例1:

  tt_size_run_prep( TT_Size  size )
  {
    TT_Face         face = (TT_Face)size->root.face;
    TT_ExecContext  exec;
    FT_Error        error;


    /* debugging instances have their own context */
    if ( size->debug )
      exec = size->context;
    else
      exec = ( (TT_Driver)FT_FACE_DRIVER( face ) )->context;

    if ( !exec )
      return TT_Err_Could_Not_Find_Context;

    TT_Load_Context( exec, face, size );

    exec->callTop = 0;
    exec->top     = 0;

    exec->instruction_trap = FALSE;

    TT_Set_CodeRange( exec,
                      tt_coderange_cvt,
                      face->cvt_program,
                      face->cvt_program_size );

    TT_Clear_CodeRange( exec, tt_coderange_glyph );

    if ( face->cvt_program_size > 0 )
    {
      error = TT_Goto_CodeRange( exec, tt_coderange_cvt, 0 );

      if ( !error && !size->debug )
        error = face->interpreter( exec );
    }
    else
      error = TT_Err_Ok;

    /* save as default graphics state */
    size->GS = exec->GS;

    TT_Save_Context( exec, size );

    return error;
  }
开发者ID:OpenXIP,项目名称:xip-libraries,代码行数:47,代码来源:ttobjs.c

示例2: TT_Reset_Size


//.........这里部分代码省略.........
#ifdef TT_CONFIG_OPTION_BYTECODE_INTERPRETER

	{
		TT_ExecContext exec;
		FT_UInt i, j;


		/* Scale the cvt values to the new ppem.          */
		/* We use by default the y ppem to scale the CVT. */
		for(i = 0; i < size->cvt_size; i++)
			size->cvt[i] = FT_MulFix(face->cvt[i], size->ttmetrics.scale);

		/* All twilight points are originally zero */
		for(j = 0; j < size->twilight.n_points; j++)
		{
			size->twilight.org[j].x = 0;
			size->twilight.org[j].y = 0;
			size->twilight.cur[j].x = 0;
			size->twilight.cur[j].y = 0;
		}

		/* clear storage area */
		for(i = 0; i < size->storage_size; i++)
			size->storage[i] = 0;

		size->GS = tt_default_graphics_state;

		/* get execution context and run prep program */
		if(size->debug)
		{
			exec = size->context;
		}
		else
		{
			exec = TT_New_Context(face);
		}

		/* debugging instances have their own context */

		if(!exec)
		{
			return TT_Err_Could_Not_Find_Context;
		}

		TT_Load_Context(exec, face, size);

		TT_Set_CodeRange(exec,
		                 tt_coderange_cvt,
		                 face->cvt_program,
		                 face->cvt_program_size);

		TT_Clear_CodeRange(exec, tt_coderange_glyph);

		exec->instruction_trap = FALSE;

		exec->top     = 0;
		exec->callTop = 0;

		if(face->cvt_program_size > 0)
		{
			error = TT_Goto_CodeRange(exec, tt_coderange_cvt, 0);

			if(error)
			{
				goto End;
			}

			if(!size->debug)
			{
				error = face->interpreter(exec);
			}
		}
		else
		{
			error = TT_Err_Ok;
		}

		size->GS = exec->GS;
		/* save default graphics state */

End:
		TT_Save_Context(exec, size);

		if(!size->debug)
		{
			TT_Done_Context(exec);
		}

		/* debugging instances keep their context */
	}

#endif /* TT_CONFIG_OPTION_BYTECODE_INTERPRETER */

	if(!error)
	{
		size->ttmetrics.valid = TRUE;
	}

	return error;
}
开发者ID:Diskutant,项目名称:RTCW-SP,代码行数:101,代码来源:ttobjs.c

示例3: TT_Init_Size

LOCAL_DEF
FT_Error  TT_Init_Size(TT_Size size)
{
	FT_Error error = TT_Err_Ok;


#ifdef TT_CONFIG_OPTION_BYTECODE_INTERPRETER

	TT_Face face   = (TT_Face)size->root.face;
	FT_Memory memory = face->root.memory;
	FT_Int i;

	TT_ExecContext exec;
	FT_UShort n_twilight;
	TT_MaxProfile  *maxp = &face->max_profile;


	size->ttmetrics.valid = FALSE;

	size->max_function_defs    = maxp->maxFunctionDefs;
	size->max_instruction_defs = maxp->maxInstructionDefs;

	size->num_function_defs    = 0;
	size->num_instruction_defs = 0;

	size->max_func = 0;
	size->max_ins  = 0;

	size->cvt_size     = face->cvt_size;
	size->storage_size = maxp->maxStorage;

	/* Set default metrics */
	{
		FT_Size_Metrics  *metrics  = &size->root.metrics;
		TT_Size_Metrics  *metrics2 = &size->ttmetrics;


		metrics->x_ppem = 0;
		metrics->y_ppem = 0;

		metrics2->rotated   = FALSE;
		metrics2->stretched = FALSE;

		/* set default compensation (all 0) */
		for(i = 0; i < 4; i++)
			metrics2->compensations[i] = 0;
	}

	/* allocate function defs, instruction defs, cvt, and storage area */
	if(ALLOC_ARRAY(size->function_defs,
	               size->max_function_defs,
	               TT_DefRecord)                ||

	        ALLOC_ARRAY(size->instruction_defs,
	                    size->max_instruction_defs,
	                    TT_DefRecord)                ||

	        ALLOC_ARRAY(size->cvt,
	                    size->cvt_size, FT_Long)     ||

	        ALLOC_ARRAY(size->storage,
	                    size->storage_size, FT_Long))
	{

		goto Fail_Memory;
	}

	/* reserve twilight zone */
	n_twilight = maxp->maxTwilightPoints;
	error = TT_New_GlyphZone(memory, n_twilight, 0, &size->twilight);

	if(error)
	{
		goto Fail_Memory;
	}

	size->twilight.n_points = n_twilight;

	/* set `face->interpreter' according to the debug hook present */
	{
		FT_Library library = face->root.driver->root.library;


		face->interpreter = (TT_Interpreter)
		                    library->debug_hooks[FT_DEBUG_HOOK_TRUETYPE];

		if(!face->interpreter)
		{
			face->interpreter = (TT_Interpreter)TT_RunIns;
		}
	}

	/* Fine, now execute the font program! */
	exec = size->context;

	/* size objects used during debugging have their own context */
	if(!size->debug)
	{
		exec = TT_New_Context(face);
	}
//.........这里部分代码省略.........
开发者ID:Diskutant,项目名称:RTCW-SP,代码行数:101,代码来源:ttobjs.c

示例4:

tt_size_run_prep( TT_Size  size,
                  FT_Bool  pedantic )
{
    TT_Face         face = (TT_Face)size->root.face;
    TT_ExecContext  exec;
    FT_Error        error;


    exec = size->context;

    error = TT_Load_Context( exec, face, size );
    if ( error )
        return error;

    exec->callTop = 0;
    exec->top     = 0;

    exec->instruction_trap = FALSE;

    exec->pedantic_hinting = pedantic;

    TT_Set_CodeRange( exec,
                      tt_coderange_cvt,
                      face->cvt_program,
                      (FT_Long)face->cvt_program_size );

    TT_Clear_CodeRange( exec, tt_coderange_glyph );

    if ( face->cvt_program_size > 0 )
    {
        TT_Goto_CodeRange( exec, tt_coderange_cvt, 0 );

        FT_TRACE4(( "Executing `prep' table.\n" ));

        error = face->interpreter( exec );
    }
    else
        error = FT_Err_Ok;

    size->cvt_ready = error;

    /* UNDOCUMENTED!  The MS rasterizer doesn't allow the following */
    /* graphics state variables to be modified by the CVT program.  */

    exec->GS.dualVector.x = 0x4000;
    exec->GS.dualVector.y = 0;
    exec->GS.projVector.x = 0x4000;
    exec->GS.projVector.y = 0x0;
    exec->GS.freeVector.x = 0x4000;
    exec->GS.freeVector.y = 0x0;

    exec->GS.rp0 = 0;
    exec->GS.rp1 = 0;
    exec->GS.rp2 = 0;

    exec->GS.gep0 = 1;
    exec->GS.gep1 = 1;
    exec->GS.gep2 = 1;

    exec->GS.loop = 1;

    /* save as default graphics state */
    size->GS = exec->GS;

    TT_Save_Context( exec, size );

    return error;
}
开发者ID:Ruw-Van,项目名称:krkrz,代码行数:68,代码来源:ttobjs.c


注:本文中的TT_Face::interpreter方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。