CS代考计算机代写 cache scheme /***************************************************************************/

/***************************************************************************/
/* */
/* ftcache.h */
/* */
/* FreeType Cache subsystem (specification). */
/* */
/* Copyright 1996-2015 by */
/* David Turner, Robert Wilhelm, and Werner Lemberg. */
/* */
/* This file is part of the FreeType project, and may only be used, */
/* modified, and distributed under the terms of the FreeType project */
/* license, LICENSE.TXT. By continuing to use, modify, or distribute */
/* this file you indicate that you have read the license and */
/* understand and accept it fully. */
/* */
/***************************************************************************/

#ifndef __FTCACHE_H__
#define __FTCACHE_H__

#include
#include FT_GLYPH_H

FT_BEGIN_HEADER

/*************************************************************************
*
*


* cache_subsystem
*
* <br /> * Cache Sub-System<br /> *<br /> * <Abstract><br /> * How to cache face, size, and glyph data with FreeType~2.<br /> *<br /> * <Description><br /> * This section describes the FreeType~2 cache sub-system, which is used<br /> * to limit the number of concurrently opened @FT_Face and @FT_Size<br /> * objects, as well as caching information like character maps and glyph<br /> * images while limiting their maximum memory usage.<br /> *<br /> * Note that all types and functions begin with the `FTC_’ prefix.<br /> *<br /> * The cache is highly portable and thus doesn’t know anything about the<br /> * fonts installed on your system, or how to access them. This implies<br /> * the following scheme:<br /> *<br /> * First, available or installed font faces are uniquely identified by<br /> * @FTC_FaceID values, provided to the cache by the client. Note that<br /> * the cache only stores and compares these values, and doesn’t try to<br /> * interpret them in any way.<br /> *<br /> * Second, the cache calls, only when needed, a client-provided function<br /> * to convert an @FTC_FaceID into a new @FT_Face object. The latter is<br /> * then completely managed by the cache, including its termination<br /> * through @FT_Done_Face. To monitor termination of face objects, the<br /> * finalizer callback in the `generic’ field of the @FT_Face object can<br /> * be used, which might also be used to store the @FTC_FaceID of the<br /> * face.<br /> *<br /> * Clients are free to map face IDs to anything else. The most simple<br /> * usage is to associate them to a (pathname,face_index) pair that is<br /> * used to call @FT_New_Face. However, more complex schemes are also<br /> * possible.<br /> *<br /> * Note that for the cache to work correctly, the face ID values must be<br /> * *persistent*, which means that the contents they point to should not<br /> * change at runtime, or that their value should not become invalid.<br /> *<br /> * If this is unavoidable (e.g., when a font is uninstalled at runtime),<br /> * you should call @FTC_Manager_RemoveFaceID as soon as possible, to let<br /> * the cache get rid of any references to the old @FTC_FaceID it may<br /> * keep internally. Failure to do so will lead to incorrect behaviour<br /> * or even crashes.<br /> *<br /> * To use the cache, start with calling @FTC_Manager_New to create a new<br /> * @FTC_Manager object, which models a single cache instance. You can<br /> * then look up @FT_Face and @FT_Size objects with<br /> * @FTC_Manager_LookupFace and @FTC_Manager_LookupSize, respectively.<br /> *<br /> * If you want to use the charmap caching, call @FTC_CMapCache_New, then<br /> * later use @FTC_CMapCache_Lookup to perform the equivalent of<br /> * @FT_Get_Char_Index, only much faster.<br /> *<br /> * If you want to use the @FT_Glyph caching, call @FTC_ImageCache, then<br /> * later use @FTC_ImageCache_Lookup to retrieve the corresponding<br /> * @FT_Glyph objects from the cache.<br /> *<br /> * If you need lots of small bitmaps, it is much more memory efficient<br /> * to call @FTC_SBitCache_New followed by @FTC_SBitCache_Lookup. This<br /> * returns @FTC_SBitRec structures, which are used to store small<br /> * bitmaps directly. (A small bitmap is one whose metrics and<br /> * dimensions all fit into 8-bit integers).<br /> *<br /> * We hope to also provide a kerning cache in the near future.<br /> *<br /> *<br /> * <Order><br /> * FTC_Manager<br /> * FTC_FaceID<br /> * FTC_Face_Requester<br /> *<br /> * FTC_Manager_New<br /> * FTC_Manager_Reset<br /> * FTC_Manager_Done<br /> * FTC_Manager_LookupFace<br /> * FTC_Manager_LookupSize<br /> * FTC_Manager_RemoveFaceID<br /> *<br /> * FTC_Node<br /> * FTC_Node_Unref<br /> *<br /> * FTC_ImageCache<br /> * FTC_ImageCache_New<br /> * FTC_ImageCache_Lookup<br /> *<br /> * FTC_SBit<br /> * FTC_SBitCache<br /> * FTC_SBitCache_New<br /> * FTC_SBitCache_Lookup<br /> *<br /> * FTC_CMapCache<br /> * FTC_CMapCache_New<br /> * FTC_CMapCache_Lookup<br /> *<br /> *************************************************************************/</p> <p> /*************************************************************************/<br /> /*************************************************************************/<br /> /*************************************************************************/<br /> /***** *****/<br /> /***** BASIC TYPE DEFINITIONS *****/<br /> /***** *****/<br /> /*************************************************************************/<br /> /*************************************************************************/<br /> /*************************************************************************/</p> <p> /*************************************************************************<br /> *<br /> * @type: FTC_FaceID<br /> *<br /> * @description:<br /> * An opaque pointer type that is used to identity face objects. The<br /> * contents of such objects is application-dependent.<br /> *<br /> * These pointers are typically used to point to a user-defined<br /> * structure containing a font file path, and face index.<br /> *<br /> * @note:<br /> * Never use NULL as a valid @FTC_FaceID.<br /> *<br /> * Face IDs are passed by the client to the cache manager that calls,<br /> * when needed, the @FTC_Face_Requester to translate them into new<br /> * @FT_Face objects.<br /> *<br /> * If the content of a given face ID changes at runtime, or if the value<br /> * becomes invalid (e.g., when uninstalling a font), you should<br /> * immediately call @FTC_Manager_RemoveFaceID before any other cache<br /> * function.<br /> *<br /> * Failure to do so will result in incorrect behaviour or even<br /> * memory leaks and crashes.<br /> */<br /> typedef FT_Pointer FTC_FaceID;</p> <p> /************************************************************************<br /> *<br /> * @functype:<br /> * FTC_Face_Requester<br /> *<br /> * @description:<br /> * A callback function provided by client applications. It is used by<br /> * the cache manager to translate a given @FTC_FaceID into a new valid<br /> * @FT_Face object, on demand.<br /> *<br /> * <Input><br /> * face_id ::<br /> * The face ID to resolve.<br /> *<br /> * library ::<br /> * A handle to a FreeType library object.<br /> *<br /> * req_data ::<br /> * Application-provided request data (see note below).<br /> *<br /> * <Output><br /> * aface ::<br /> * A new @FT_Face handle.<br /> *<br /> * <Return><br /> * FreeType error code. 0~means success.<br /> *<br /> * <Note><br /> * The third parameter `req_data’ is the same as the one passed by the<br /> * client when @FTC_Manager_New is called.<br /> *<br /> * The face requester should not perform funny things on the returned<br /> * face object, like creating a new @FT_Size for it, or setting a<br /> * transformation through @FT_Set_Transform!<br /> */<br /> typedef FT_Error<br /> (*FTC_Face_Requester)( FTC_FaceID face_id,<br /> FT_Library library,<br /> FT_Pointer req_data,<br /> FT_Face* aface );</p> <p> /* */</p> <p> /*************************************************************************/<br /> /*************************************************************************/<br /> /*************************************************************************/<br /> /***** *****/<br /> /***** CACHE MANAGER OBJECT *****/<br /> /***** *****/<br /> /*************************************************************************/<br /> /*************************************************************************/<br /> /*************************************************************************/</p> <p> /*************************************************************************/<br /> /* */<br /> /* <Type> */<br /> /* FTC_Manager */<br /> /* */<br /> /* <Description> */<br /> /* This object corresponds to one instance of the cache-subsystem. */<br /> /* It is used to cache one or more @FT_Face objects, along with */<br /> /* corresponding @FT_Size objects. */<br /> /* */<br /> /* The manager intentionally limits the total number of opened */<br /> /* @FT_Face and @FT_Size objects to control memory usage. See the */<br /> /* `max_faces’ and `max_sizes’ parameters of @FTC_Manager_New. */<br /> /* */<br /> /* The manager is also used to cache `nodes’ of various types while */<br /> /* limiting their total memory usage. */<br /> /* */<br /> /* All limitations are enforced by keeping lists of managed objects */<br /> /* in most-recently-used order, and flushing old nodes to make room */<br /> /* for new ones. */<br /> /* */<br /> typedef struct FTC_ManagerRec_* FTC_Manager;</p> <p> /*************************************************************************/<br /> /* */<br /> /* <Type> */<br /> /* FTC_Node */<br /> /* */<br /> /* <Description> */<br /> /* An opaque handle to a cache node object. Each cache node is */<br /> /* reference-counted. A node with a count of~0 might be flushed */<br /> /* out of a full cache whenever a lookup request is performed. */<br /> /* */<br /> /* If you look up nodes, you have the ability to `acquire’ them, */<br /> /* i.e., to increment their reference count. This will prevent the */<br /> /* node from being flushed out of the cache until you explicitly */<br /> /* `release’ it (see @FTC_Node_Unref). */<br /> /* */<br /> /* See also @FTC_SBitCache_Lookup and @FTC_ImageCache_Lookup. */<br /> /* */<br /> typedef struct FTC_NodeRec_* FTC_Node;</p> <p> /*************************************************************************/<br /> /* */<br /> /* <Function> */<br /> /* FTC_Manager_New */<br /> /* */<br /> /* <Description> */<br /> /* Create a new cache manager. */<br /> /* */<br /> /* <Input> */<br /> /* library :: The parent FreeType library handle to use. */<br /> /* */<br /> /* max_faces :: Maximum number of opened @FT_Face objects managed by */<br /> /* this cache instance. Use~0 for defaults. */<br /> /* */<br /> /* max_sizes :: Maximum number of opened @FT_Size objects managed by */<br /> /* this cache instance. Use~0 for defaults. */<br /> /* */<br /> /* max_bytes :: Maximum number of bytes to use for cached data nodes. */<br /> /* Use~0 for defaults. Note that this value does not */<br /> /* account for managed @FT_Face and @FT_Size objects. */<br /> /* */<br /> /* requester :: An application-provided callback used to translate */<br /> /* face IDs into real @FT_Face objects. */<br /> /* */<br /> /* req_data :: A generic pointer that is passed to the requester */<br /> /* each time it is called (see @FTC_Face_Requester). */<br /> /* */<br /> /* <Output> */<br /> /* amanager :: A handle to a new manager object. 0~in case of */<br /> /* failure. */<br /> /* */<br /> /* <Return> */<br /> /* FreeType error code. 0~means success. */<br /> /* */<br /> FT_EXPORT( FT_Error )<br /> FTC_Manager_New( FT_Library library,<br /> FT_UInt max_faces,<br /> FT_UInt max_sizes,<br /> FT_ULong max_bytes,<br /> FTC_Face_Requester requester,<br /> FT_Pointer req_data,<br /> FTC_Manager *amanager );</p> <p> /*************************************************************************/<br /> /* */<br /> /* <Function> */<br /> /* FTC_Manager_Reset */<br /> /* */<br /> /* <Description> */<br /> /* Empty a given cache manager. This simply gets rid of all the */<br /> /* currently cached @FT_Face and @FT_Size objects within the manager. */<br /> /* */<br /> /* <InOut> */<br /> /* manager :: A handle to the manager. */<br /> /* */<br /> FT_EXPORT( void )<br /> FTC_Manager_Reset( FTC_Manager manager );</p> <p> /*************************************************************************/<br /> /* */<br /> /* <Function> */<br /> /* FTC_Manager_Done */<br /> /* */<br /> /* <Description> */<br /> /* Destroy a given manager after emptying it. */<br /> /* */<br /> /* <Input> */<br /> /* manager :: A handle to the target cache manager object. */<br /> /* */<br /> FT_EXPORT( void )<br /> FTC_Manager_Done( FTC_Manager manager );</p> <p> /*************************************************************************/<br /> /* */<br /> /* <Function> */<br /> /* FTC_Manager_LookupFace */<br /> /* */<br /> /* <Description> */<br /> /* Retrieve the @FT_Face object that corresponds to a given face ID */<br /> /* through a cache manager. */<br /> /* */<br /> /* <Input> */<br /> /* manager :: A handle to the cache manager. */<br /> /* */<br /> /* face_id :: The ID of the face object. */<br /> /* */<br /> /* <Output> */<br /> /* aface :: A handle to the face object. */<br /> /* */<br /> /* <Return> */<br /> /* FreeType error code. 0~means success. */<br /> /* */<br /> /* <Note> */<br /> /* The returned @FT_Face object is always owned by the manager. You */<br /> /* should never try to discard it yourself. */<br /> /* */<br /> /* The @FT_Face object doesn’t necessarily have a current size object */<br /> /* (i.e., face->size can be~0). If you need a specific `font size’, */<br /> /* use @FTC_Manager_LookupSize instead. */<br /> /* */<br /> /* Never change the face’s transformation matrix (i.e., never call */<br /> /* the @FT_Set_Transform function) on a returned face! If you need */<br /> /* to transform glyphs, do it yourself after glyph loading. */<br /> /* */<br /> /* When you perform a lookup, out-of-memory errors are detected */<br /> /* _within_ the lookup and force incremental flushes of the cache */<br /> /* until enough memory is released for the lookup to succeed. */<br /> /* */<br /> /* If a lookup fails with `FT_Err_Out_Of_Memory’ the cache has */<br /> /* already been completely flushed, and still no memory was available */<br /> /* for the operation. */<br /> /* */<br /> FT_EXPORT( FT_Error )<br /> FTC_Manager_LookupFace( FTC_Manager manager,<br /> FTC_FaceID face_id,<br /> FT_Face *aface );</p> <p> /*************************************************************************/<br /> /* */<br /> /* <Struct> */<br /> /* FTC_ScalerRec */<br /> /* */<br /> /* <Description> */<br /> /* A structure used to describe a given character size in either */<br /> /* pixels or points to the cache manager. See */<br /> /* @FTC_Manager_LookupSize. */<br /> /* */<br /> /* <Fields> */<br /> /* face_id :: The source face ID. */<br /> /* */<br /> /* width :: The character width. */<br /> /* */<br /> /* height :: The character height. */<br /> /* */<br /> /* pixel :: A Boolean. If 1, the `width’ and `height’ fields are */<br /> /* interpreted as integer pixel character sizes. */<br /> /* Otherwise, they are expressed as 1/64th of points. */<br /> /* */<br /> /* x_res :: Only used when `pixel’ is value~0 to indicate the */<br /> /* horizontal resolution in dpi. */<br /> /* */<br /> /* y_res :: Only used when `pixel’ is value~0 to indicate the */<br /> /* vertical resolution in dpi. */<br /> /* */<br /> /* <Note> */<br /> /* This type is mainly used to retrieve @FT_Size objects through the */<br /> /* cache manager. */<br /> /* */<br /> typedef struct FTC_ScalerRec_<br /> {<br /> FTC_FaceID face_id;<br /> FT_UInt width;<br /> FT_UInt height;<br /> FT_Int pixel;<br /> FT_UInt x_res;<br /> FT_UInt y_res;</p> <p> } FTC_ScalerRec;</p> <p> /*************************************************************************/<br /> /* */<br /> /* <Struct> */<br /> /* FTC_Scaler */<br /> /* */<br /> /* <Description> */<br /> /* A handle to an @FTC_ScalerRec structure. */<br /> /* */<br /> typedef struct FTC_ScalerRec_* FTC_Scaler;</p> <p> /*************************************************************************/<br /> /* */<br /> /* <Function> */<br /> /* FTC_Manager_LookupSize */<br /> /* */<br /> /* <Description> */<br /> /* Retrieve the @FT_Size object that corresponds to a given */<br /> /* @FTC_ScalerRec pointer through a cache manager. */<br /> /* */<br /> /* <Input> */<br /> /* manager :: A handle to the cache manager. */<br /> /* */<br /> /* scaler :: A scaler handle. */<br /> /* */<br /> /* <Output> */<br /> /* asize :: A handle to the size object. */<br /> /* */<br /> /* <Return> */<br /> /* FreeType error code. 0~means success. */<br /> /* */<br /> /* <Note> */<br /> /* The returned @FT_Size object is always owned by the manager. You */<br /> /* should never try to discard it by yourself. */<br /> /* */<br /> /* You can access the parent @FT_Face object simply as `size->face’ */<br /> /* if you need it. Note that this object is also owned by the */<br /> /* manager. */<br /> /* */<br /> /* <Note> */<br /> /* When you perform a lookup, out-of-memory errors are detected */<br /> /* _within_ the lookup and force incremental flushes of the cache */<br /> /* until enough memory is released for the lookup to succeed. */<br /> /* */<br /> /* If a lookup fails with `FT_Err_Out_Of_Memory’ the cache has */<br /> /* already been completely flushed, and still no memory is available */<br /> /* for the operation. */<br /> /* */<br /> FT_EXPORT( FT_Error )<br /> FTC_Manager_LookupSize( FTC_Manager manager,<br /> FTC_Scaler scaler,<br /> FT_Size *asize );</p> <p> /*************************************************************************/<br /> /* */<br /> /* <Function> */<br /> /* FTC_Node_Unref */<br /> /* */<br /> /* <Description> */<br /> /* Decrement a cache node’s internal reference count. When the count */<br /> /* reaches 0, it is not destroyed but becomes eligible for subsequent */<br /> /* cache flushes. */<br /> /* */<br /> /* <Input> */<br /> /* node :: The cache node handle. */<br /> /* */<br /> /* manager :: The cache manager handle. */<br /> /* */<br /> FT_EXPORT( void )<br /> FTC_Node_Unref( FTC_Node node,<br /> FTC_Manager manager );</p> <p> /*************************************************************************<br /> *<br /> * @function:<br /> * FTC_Manager_RemoveFaceID<br /> *<br /> * @description:<br /> * A special function used to indicate to the cache manager that<br /> * a given @FTC_FaceID is no longer valid, either because its<br /> * content changed, or because it was deallocated or uninstalled.<br /> *<br /> * @input:<br /> * manager ::<br /> * The cache manager handle.<br /> *<br /> * face_id ::<br /> * The @FTC_FaceID to be removed.<br /> *<br /> * @note:<br /> * This function flushes all nodes from the cache corresponding to this<br /> * `face_id’, with the exception of nodes with a non-null reference<br /> * count.<br /> *<br /> * Such nodes are however modified internally so as to never appear<br /> * in later lookups with the same `face_id’ value, and to be immediately<br /> * destroyed when released by all their users.<br /> *<br /> */<br /> FT_EXPORT( void )<br /> FTC_Manager_RemoveFaceID( FTC_Manager manager,<br /> FTC_FaceID face_id );</p> <p> /*************************************************************************/<br /> /* */<br /> /* <Section> */<br /> /* cache_subsystem */<br /> /* */<br /> /*************************************************************************/</p> <p> /*************************************************************************<br /> *<br /> * @type:<br /> * FTC_CMapCache<br /> *<br /> * @description:<br /> * An opaque handle used to model a charmap cache. This cache is to<br /> * hold character codes -> glyph indices mappings.<br /> *<br /> */<br /> typedef struct FTC_CMapCacheRec_* FTC_CMapCache;</p> <p> /*************************************************************************<br /> *<br /> * @function:<br /> * FTC_CMapCache_New<br /> *<br /> * @description:<br /> * Create a new charmap cache.<br /> *<br /> * @input:<br /> * manager ::<br /> * A handle to the cache manager.<br /> *<br /> * @output:<br /> * acache ::<br /> * A new cache handle. NULL in case of error.<br /> *<br /> * @return:<br /> * FreeType error code. 0~means success.<br /> *<br /> * @note:<br /> * Like all other caches, this one will be destroyed with the cache<br /> * manager.<br /> *<br /> */<br /> FT_EXPORT( FT_Error )<br /> FTC_CMapCache_New( FTC_Manager manager,<br /> FTC_CMapCache *acache );</p> <p> /************************************************************************<br /> *<br /> * @function:<br /> * FTC_CMapCache_Lookup<br /> *<br /> * @description:<br /> * Translate a character code into a glyph index, using the charmap<br /> * cache.<br /> *<br /> * @input:<br /> * cache ::<br /> * A charmap cache handle.<br /> *<br /> * face_id ::<br /> * The source face ID.<br /> *<br /> * cmap_index ::<br /> * The index of the charmap in the source face. Any negative value<br /> * means to use the cache @FT_Face’s default charmap.<br /> *<br /> * char_code ::<br /> * The character code (in the corresponding charmap).<br /> *<br /> * @return:<br /> * Glyph index. 0~means `no glyph’.<br /> *<br /> */<br /> FT_EXPORT( FT_UInt )<br /> FTC_CMapCache_Lookup( FTC_CMapCache cache,<br /> FTC_FaceID face_id,<br /> FT_Int cmap_index,<br /> FT_UInt32 char_code );</p> <p> /*************************************************************************/<br /> /* */<br /> /* <Section> */<br /> /* cache_subsystem */<br /> /* */<br /> /*************************************************************************/</p> <p> /*************************************************************************/<br /> /*************************************************************************/<br /> /*************************************************************************/<br /> /***** *****/<br /> /***** IMAGE CACHE OBJECT *****/<br /> /***** *****/<br /> /*************************************************************************/<br /> /*************************************************************************/<br /> /*************************************************************************/</p> <p> /*************************************************************************<br /> *<br /> * @struct:<br /> * FTC_ImageTypeRec<br /> *<br /> * @description:<br /> * A structure used to model the type of images in a glyph cache.<br /> *<br /> * @fields:<br /> * face_id ::<br /> * The face ID.<br /> *<br /> * width ::<br /> * The width in pixels.<br /> *<br /> * height ::<br /> * The height in pixels.<br /> *<br /> * flags ::<br /> * The load flags, as in @FT_Load_Glyph.<br /> *<br /> */<br /> typedef struct FTC_ImageTypeRec_<br /> {<br /> FTC_FaceID face_id;<br /> FT_UInt width;<br /> FT_UInt height;<br /> FT_Int32 flags;</p> <p> } FTC_ImageTypeRec;</p> <p> /*************************************************************************<br /> *<br /> * @type:<br /> * FTC_ImageType<br /> *<br /> * @description:<br /> * A handle to an @FTC_ImageTypeRec structure.<br /> *<br /> */<br /> typedef struct FTC_ImageTypeRec_* FTC_ImageType;</p> <p> /* */</p> <p>#define FTC_IMAGE_TYPE_COMPARE( d1, d2 ) \<br /> ( (d1)->face_id == (d2)->face_id && \<br /> (d1)->width == (d2)->width && \<br /> (d1)->flags == (d2)->flags )</p> <p> /*************************************************************************/<br /> /* */<br /> /* <Type> */<br /> /* FTC_ImageCache */<br /> /* */<br /> /* <Description> */<br /> /* A handle to a glyph image cache object. They are designed to */<br /> /* hold many distinct glyph images while not exceeding a certain */<br /> /* memory threshold. */<br /> /* */<br /> typedef struct FTC_ImageCacheRec_* FTC_ImageCache;</p> <p> /*************************************************************************/<br /> /* */<br /> /* <Function> */<br /> /* FTC_ImageCache_New */<br /> /* */<br /> /* <Description> */<br /> /* Create a new glyph image cache. */<br /> /* */<br /> /* <Input> */<br /> /* manager :: The parent manager for the image cache. */<br /> /* */<br /> /* <Output> */<br /> /* acache :: A handle to the new glyph image cache object. */<br /> /* */<br /> /* <Return> */<br /> /* FreeType error code. 0~means success. */<br /> /* */<br /> FT_EXPORT( FT_Error )<br /> FTC_ImageCache_New( FTC_Manager manager,<br /> FTC_ImageCache *acache );</p> <p> /*************************************************************************/<br /> /* */<br /> /* <Function> */<br /> /* FTC_ImageCache_Lookup */<br /> /* */<br /> /* <Description> */<br /> /* Retrieve a given glyph image from a glyph image cache. */<br /> /* */<br /> /* <Input> */<br /> /* cache :: A handle to the source glyph image cache. */<br /> /* */<br /> /* type :: A pointer to a glyph image type descriptor. */<br /> /* */<br /> /* gindex :: The glyph index to retrieve. */<br /> /* */<br /> /* <Output> */<br /> /* aglyph :: The corresponding @FT_Glyph object. 0~in case of */<br /> /* failure. */<br /> /* */<br /> /* anode :: Used to return the address of of the corresponding cache */<br /> /* node after incrementing its reference count (see note */<br /> /* below). */<br /> /* */<br /> /* <Return> */<br /> /* FreeType error code. 0~means success. */<br /> /* */<br /> /* <Note> */<br /> /* The returned glyph is owned and managed by the glyph image cache. */<br /> /* Never try to transform or discard it manually! You can however */<br /> /* create a copy with @FT_Glyph_Copy and modify the new one. */<br /> /* */<br /> /* If `anode’ is _not_ NULL, it receives the address of the cache */<br /> /* node containing the glyph image, after increasing its reference */<br /> /* count. This ensures that the node (as well as the @FT_Glyph) will */<br /> /* always be kept in the cache until you call @FTC_Node_Unref to */<br /> /* `release’ it. */<br /> /* */<br /> /* If `anode’ is NULL, the cache node is left unchanged, which means */<br /> /* that the @FT_Glyph could be flushed out of the cache on the next */<br /> /* call to one of the caching sub-system APIs. Don’t assume that it */<br /> /* is persistent! */<br /> /* */<br /> FT_EXPORT( FT_Error )<br /> FTC_ImageCache_Lookup( FTC_ImageCache cache,<br /> FTC_ImageType type,<br /> FT_UInt gindex,<br /> FT_Glyph *aglyph,<br /> FTC_Node *anode );</p> <p> /*************************************************************************/<br /> /* */<br /> /* <Function> */<br /> /* FTC_ImageCache_LookupScaler */<br /> /* */<br /> /* <Description> */<br /> /* A variant of @FTC_ImageCache_Lookup that uses an @FTC_ScalerRec */<br /> /* to specify the face ID and its size. */<br /> /* */<br /> /* <Input> */<br /> /* cache :: A handle to the source glyph image cache. */<br /> /* */<br /> /* scaler :: A pointer to a scaler descriptor. */<br /> /* */<br /> /* load_flags :: The corresponding load flags. */<br /> /* */<br /> /* gindex :: The glyph index to retrieve. */<br /> /* */<br /> /* <Output> */<br /> /* aglyph :: The corresponding @FT_Glyph object. 0~in case of */<br /> /* failure. */<br /> /* */<br /> /* anode :: Used to return the address of of the corresponding */<br /> /* cache node after incrementing its reference count */<br /> /* (see note below). */<br /> /* */<br /> /* <Return> */<br /> /* FreeType error code. 0~means success. */<br /> /* */<br /> /* <Note> */<br /> /* The returned glyph is owned and managed by the glyph image cache. */<br /> /* Never try to transform or discard it manually! You can however */<br /> /* create a copy with @FT_Glyph_Copy and modify the new one. */<br /> /* */<br /> /* If `anode’ is _not_ NULL, it receives the address of the cache */<br /> /* node containing the glyph image, after increasing its reference */<br /> /* count. This ensures that the node (as well as the @FT_Glyph) will */<br /> /* always be kept in the cache until you call @FTC_Node_Unref to */<br /> /* `release’ it. */<br /> /* */<br /> /* If `anode’ is NULL, the cache node is left unchanged, which means */<br /> /* that the @FT_Glyph could be flushed out of the cache on the next */<br /> /* call to one of the caching sub-system APIs. Don’t assume that it */<br /> /* is persistent! */<br /> /* */<br /> /* Calls to @FT_Set_Char_Size and friends have no effect on cached */<br /> /* glyphs; you should always use the FreeType cache API instead. */<br /> /* */<br /> FT_EXPORT( FT_Error )<br /> FTC_ImageCache_LookupScaler( FTC_ImageCache cache,<br /> FTC_Scaler scaler,<br /> FT_ULong load_flags,<br /> FT_UInt gindex,<br /> FT_Glyph *aglyph,<br /> FTC_Node *anode );</p> <p> /*************************************************************************/<br /> /* */<br /> /* <Type> */<br /> /* FTC_SBit */<br /> /* */<br /> /* <Description> */<br /> /* A handle to a small bitmap descriptor. See the @FTC_SBitRec */<br /> /* structure for details. */<br /> /* */<br /> typedef struct FTC_SBitRec_* FTC_SBit;</p> <p> /*************************************************************************/<br /> /* */<br /> /* <Struct> */<br /> /* FTC_SBitRec */<br /> /* */<br /> /* <Description> */<br /> /* A very compact structure used to describe a small glyph bitmap. */<br /> /* */<br /> /* <Fields> */<br /> /* width :: The bitmap width in pixels. */<br /> /* */<br /> /* height :: The bitmap height in pixels. */<br /> /* */<br /> /* left :: The horizontal distance from the pen position to the */<br /> /* left bitmap border (a.k.a. `left side bearing’, or */<br /> /* `lsb’). */<br /> /* */<br /> /* top :: The vertical distance from the pen position (on the */<br /> /* baseline) to the upper bitmap border (a.k.a. `top */<br /> /* side bearing’). The distance is positive for upwards */<br /> /* y~coordinates. */<br /> /* */<br /> /* format :: The format of the glyph bitmap (monochrome or gray). */<br /> /* */<br /> /* max_grays :: Maximum gray level value (in the range 1 to~255). */<br /> /* */<br /> /* pitch :: The number of bytes per bitmap line. May be positive */<br /> /* or negative. */<br /> /* */<br /> /* xadvance :: The horizontal advance width in pixels. */<br /> /* */<br /> /* yadvance :: The vertical advance height in pixels. */<br /> /* */<br /> /* buffer :: A pointer to the bitmap pixels. */<br /> /* */<br /> typedef struct FTC_SBitRec_<br /> {<br /> FT_Byte width;<br /> FT_Byte height;<br /> FT_Char left;<br /> FT_Char top;</p> <p> FT_Byte format;<br /> FT_Byte max_grays;<br /> FT_Short pitch;<br /> FT_Char xadvance;<br /> FT_Char yadvance;</p> <p> FT_Byte* buffer;</p> <p> } FTC_SBitRec;</p> <p> /*************************************************************************/<br /> /* */<br /> /* <Type> */<br /> /* FTC_SBitCache */<br /> /* */<br /> /* <Description> */<br /> /* A handle to a small bitmap cache. These are special cache objects */<br /> /* used to store small glyph bitmaps (and anti-aliased pixmaps) in a */<br /> /* much more efficient way than the traditional glyph image cache */<br /> /* implemented by @FTC_ImageCache. */<br /> /* */<br /> typedef struct FTC_SBitCacheRec_* FTC_SBitCache;</p> <p> /*************************************************************************/<br /> /* */<br /> /* <Function> */<br /> /* FTC_SBitCache_New */<br /> /* */<br /> /* <Description> */<br /> /* Create a new cache to store small glyph bitmaps. */<br /> /* */<br /> /* <Input> */<br /> /* manager :: A handle to the source cache manager. */<br /> /* */<br /> /* <Output> */<br /> /* acache :: A handle to the new sbit cache. NULL in case of error. */<br /> /* */<br /> /* <Return> */<br /> /* FreeType error code. 0~means success. */<br /> /* */<br /> FT_EXPORT( FT_Error )<br /> FTC_SBitCache_New( FTC_Manager manager,<br /> FTC_SBitCache *acache );</p> <p> /*************************************************************************/<br /> /* */<br /> /* <Function> */<br /> /* FTC_SBitCache_Lookup */<br /> /* */<br /> /* <Description> */<br /> /* Look up a given small glyph bitmap in a given sbit cache and */<br /> /* `lock’ it to prevent its flushing from the cache until needed. */<br /> /* */<br /> /* <Input> */<br /> /* cache :: A handle to the source sbit cache. */<br /> /* */<br /> /* type :: A pointer to the glyph image type descriptor. */<br /> /* */<br /> /* gindex :: The glyph index. */<br /> /* */<br /> /* <Output> */<br /> /* sbit :: A handle to a small bitmap descriptor. */<br /> /* */<br /> /* anode :: Used to return the address of of the corresponding cache */<br /> /* node after incrementing its reference count (see note */<br /> /* below). */<br /> /* */<br /> /* <Return> */<br /> /* FreeType error code. 0~means success. */<br /> /* */<br /> /* <Note> */<br /> /* The small bitmap descriptor and its bit buffer are owned by the */<br /> /* cache and should never be freed by the application. They might */<br /> /* as well disappear from memory on the next cache lookup, so don’t */<br /> /* treat them as persistent data. */<br /> /* */<br /> /* The descriptor’s `buffer’ field is set to~0 to indicate a missing */<br /> /* glyph bitmap. */<br /> /* */<br /> /* If `anode’ is _not_ NULL, it receives the address of the cache */<br /> /* node containing the bitmap, after increasing its reference count. */<br /> /* This ensures that the node (as well as the image) will always be */<br /> /* kept in the cache until you call @FTC_Node_Unref to `release’ it. */<br /> /* */<br /> /* If `anode’ is NULL, the cache node is left unchanged, which means */<br /> /* that the bitmap could be flushed out of the cache on the next */<br /> /* call to one of the caching sub-system APIs. Don’t assume that it */<br /> /* is persistent! */<br /> /* */<br /> FT_EXPORT( FT_Error )<br /> FTC_SBitCache_Lookup( FTC_SBitCache cache,<br /> FTC_ImageType type,<br /> FT_UInt gindex,<br /> FTC_SBit *sbit,<br /> FTC_Node *anode );</p> <p> /*************************************************************************/<br /> /* */<br /> /* <Function> */<br /> /* FTC_SBitCache_LookupScaler */<br /> /* */<br /> /* <Description> */<br /> /* A variant of @FTC_SBitCache_Lookup that uses an @FTC_ScalerRec */<br /> /* to specify the face ID and its size. */<br /> /* */<br /> /* <Input> */<br /> /* cache :: A handle to the source sbit cache. */<br /> /* */<br /> /* scaler :: A pointer to the scaler descriptor. */<br /> /* */<br /> /* load_flags :: The corresponding load flags. */<br /> /* */<br /> /* gindex :: The glyph index. */<br /> /* */<br /> /* <Output> */<br /> /* sbit :: A handle to a small bitmap descriptor. */<br /> /* */<br /> /* anode :: Used to return the address of of the corresponding */<br /> /* cache node after incrementing its reference count */<br /> /* (see note below). */<br /> /* */<br /> /* <Return> */<br /> /* FreeType error code. 0~means success. */<br /> /* */<br /> /* <Note> */<br /> /* The small bitmap descriptor and its bit buffer are owned by the */<br /> /* cache and should never be freed by the application. They might */<br /> /* as well disappear from memory on the next cache lookup, so don’t */<br /> /* treat them as persistent data. */<br /> /* */<br /> /* The descriptor’s `buffer’ field is set to~0 to indicate a missing */<br /> /* glyph bitmap. */<br /> /* */<br /> /* If `anode’ is _not_ NULL, it receives the address of the cache */<br /> /* node containing the bitmap, after increasing its reference count. */<br /> /* This ensures that the node (as well as the image) will always be */<br /> /* kept in the cache until you call @FTC_Node_Unref to `release’ it. */<br /> /* */<br /> /* If `anode’ is NULL, the cache node is left unchanged, which means */<br /> /* that the bitmap could be flushed out of the cache on the next */<br /> /* call to one of the caching sub-system APIs. Don’t assume that it */<br /> /* is persistent! */<br /> /* */<br /> FT_EXPORT( FT_Error )<br /> FTC_SBitCache_LookupScaler( FTC_SBitCache cache,<br /> FTC_Scaler scaler,<br /> FT_ULong load_flags,<br /> FT_UInt gindex,<br /> FTC_SBit *sbit,<br /> FTC_Node *anode );</p> <p> /* */</p> <p>FT_END_HEADER</p> <p>#endif /* __FTCACHE_H__ */</p> <p>/* END */</p> </div><!-- .entry-content .clear --> </div> </article><!-- #post-## --> <nav class="navigation post-navigation" aria-label="Posts"> <div class="nav-links"><div class="nav-previous"><a title="CS代考计算机代写 /***************************************************************************/" href="https://powcoder.com/2021/02/13/cs%e4%bb%a3%e8%80%83%e8%ae%a1%e7%ae%97%e6%9c%ba%e4%bb%a3%e5%86%99-66/" rel="prev"><span class="ast-left-arrow" aria-hidden="true">←</span> Previous Post</a></div><div class="nav-next"><a title="CS代考计算机代写 # Max2Obj Version 4.0 Mar 10th, 2001" href="https://powcoder.com/2021/02/13/cs%e4%bb%a3%e8%80%83%e8%ae%a1%e7%ae%97%e6%9c%ba%e4%bb%a3%e5%86%99-max2obj-version-4-0-mar-10th-2001/" rel="next">Next Post <span class="ast-right-arrow" aria-hidden="true">→</span></a></div></div> </nav><div class="ast-single-related-posts-container ast-container--fallback"><div class="ast-related-posts-title-section"> <h2 class="ast-related-posts-title"> Related Posts </h2> </div><div class="ast-related-posts-wrapper"> <article class="ast-related-post post-38 post type-post status-publish format-standard hentry category-uncategorized tag-matlab tag-simulation"> <div class="ast-related-posts-inner-section"> <div class="ast-related-post-content"> <div class="ast-related-post-featured-section ast-no-thumb"></div> <header class="entry-header related-entry-header"> <h3 class="ast-related-post-title entry-title"> <a href="https://powcoder.com/2016/06/21/matlab-simulation/" target="_self" rel="bookmark noopener noreferrer">matlab simulation</a> </h3> <div class="entry-meta ast-related-cat-style--none ast-related-tag-style--none"><span class="ast-taxonomy-container cat-links default"><a href="https://powcoder.com/category/uncategorized/" rel="category tag">程序代写 CS代考</a></span> / <span class="ast-taxonomy-container tags-links default"><a href="https://powcoder.com/tag/matlab/" rel="tag">matlab代写代考</a>, <a href="https://powcoder.com/tag/simulation/" rel="tag">simulation</a></span></div> </header> <div class="entry-content clear"> </div> </div> </div> </article> <article class="ast-related-post post-39 post type-post status-publish format-standard hentry category-uncategorized tag-c"> <div class="ast-related-posts-inner-section"> <div class="ast-related-post-content"> <div class="ast-related-post-featured-section ast-no-thumb"></div> <header class="entry-header related-entry-header"> <h3 class="ast-related-post-title entry-title"> <a href="https://powcoder.com/2016/06/21/ab202-assignment-1-arkapong/" target="_self" rel="bookmark noopener noreferrer">AB202 Assignment 1: Arkapong</a> </h3> <div class="entry-meta ast-related-cat-style--none ast-related-tag-style--none"><span class="ast-taxonomy-container cat-links default"><a href="https://powcoder.com/category/uncategorized/" rel="category tag">程序代写 CS代考</a></span> / <span class="ast-taxonomy-container tags-links default"><a href="https://powcoder.com/tag/c/" rel="tag">c++代做</a></span></div> </header> <div class="entry-content clear"> </div> </div> </div> </article> <article class="ast-related-post post-40 post type-post status-publish format-standard hentry category-uncategorized tag-c"> <div class="ast-related-posts-inner-section"> <div class="ast-related-post-content"> <div class="ast-related-post-featured-section ast-no-thumb"></div> <header class="entry-header related-entry-header"> <h3 class="ast-related-post-title entry-title"> <a href="https://powcoder.com/2016/06/21/msc-c-programming/" target="_self" rel="bookmark noopener noreferrer">MSc C++ Programming</a> </h3> <div class="entry-meta ast-related-cat-style--none ast-related-tag-style--none"><span class="ast-taxonomy-container cat-links default"><a href="https://powcoder.com/category/uncategorized/" rel="category tag">程序代写 CS代考</a></span> / <span class="ast-taxonomy-container tags-links default"><a href="https://powcoder.com/tag/c/" rel="tag">c++代做</a></span></div> </header> <div class="entry-content clear"> </div> </div> </div> </article> <article class="ast-related-post post-41 post type-post status-publish format-standard hentry category-uncategorized tag-prolog"> <div class="ast-related-posts-inner-section"> <div class="ast-related-post-content"> <div class="ast-related-post-featured-section ast-no-thumb"></div> <header class="entry-header related-entry-header"> <h3 class="ast-related-post-title entry-title"> <a href="https://powcoder.com/2016/06/21/msc-assessed-prolog-lab-exercise-2/" target="_self" rel="bookmark noopener noreferrer">MSc Assessed Prolog Lab Exercise 2</a> </h3> <div class="entry-meta ast-related-cat-style--none ast-related-tag-style--none"><span class="ast-taxonomy-container cat-links default"><a href="https://powcoder.com/category/uncategorized/" rel="category tag">程序代写 CS代考</a></span> / <span class="ast-taxonomy-container tags-links default"><a href="https://powcoder.com/tag/prolog/" rel="tag">Prolog代写代考</a></span></div> </header> <div class="entry-content clear"> </div> </div> </div> </article> <article class="ast-related-post post-49 post type-post status-publish format-standard hentry category-uncategorized tag-c tag-uml"> <div class="ast-related-posts-inner-section"> <div class="ast-related-post-content"> <div class="ast-related-post-featured-section ast-no-thumb"></div> <header class="entry-header related-entry-header"> <h3 class="ast-related-post-title entry-title"> <a href="https://powcoder.com/2016/06/21/spring-session2015assignment-1/" target="_self" rel="bookmark noopener noreferrer">Spring Session:2015:Assignment 1</a> </h3> <div class="entry-meta ast-related-cat-style--none ast-related-tag-style--none"><span class="ast-taxonomy-container cat-links default"><a href="https://powcoder.com/category/uncategorized/" rel="category tag">程序代写 CS代考</a></span> / <span class="ast-taxonomy-container tags-links default"><a href="https://powcoder.com/tag/c/" rel="tag">c++代做</a>, <a href="https://powcoder.com/tag/uml/" rel="tag">UML</a></span></div> </header> <div class="entry-content clear"> </div> </div> </div> </article> <article class="ast-related-post post-51 post type-post status-publish format-standard hentry category-uncategorized tag-uml"> <div class="ast-related-posts-inner-section"> <div class="ast-related-post-content"> <div class="ast-related-post-featured-section ast-no-thumb"></div> <header class="entry-header related-entry-header"> <h3 class="ast-related-post-title entry-title"> <a href="https://powcoder.com/2016/06/21/assignment-2-inception-and-elaboration/" target="_self" rel="bookmark noopener noreferrer">Assignment 2: "Inception and Elaboration"</a> </h3> <div class="entry-meta ast-related-cat-style--none ast-related-tag-style--none"><span class="ast-taxonomy-container cat-links default"><a href="https://powcoder.com/category/uncategorized/" rel="category tag">程序代写 CS代考</a></span> / <span class="ast-taxonomy-container tags-links default"><a href="https://powcoder.com/tag/uml/" rel="tag">UML</a></span></div> </header> <div class="entry-content clear"> </div> </div> </div> </article> <article class="ast-related-post post-55 post type-post status-publish format-standard hentry category-uncategorized tag-android tag-java"> <div class="ast-related-posts-inner-section"> <div class="ast-related-post-content"> <div class="ast-related-post-featured-section ast-no-thumb"></div> <header class="entry-header related-entry-header"> <h3 class="ast-related-post-title entry-title"> <a href="https://powcoder.com/2016/06/21/android-app/" target="_self" rel="bookmark noopener noreferrer">android app</a> </h3> <div class="entry-meta ast-related-cat-style--none ast-related-tag-style--none"><span class="ast-taxonomy-container cat-links default"><a href="https://powcoder.com/category/uncategorized/" rel="category tag">程序代写 CS代考</a></span> / <span class="ast-taxonomy-container tags-links default"><a href="https://powcoder.com/tag/android/" rel="tag">android</a>, <a href="https://powcoder.com/tag/java/" rel="tag">Java代写代考</a></span></div> </header> <div class="entry-content clear"> </div> </div> </div> </article> <article class="ast-related-post post-57 post type-post status-publish format-standard hentry category-uncategorized tag-java tag-junit"> <div class="ast-related-posts-inner-section"> <div class="ast-related-post-content"> <div class="ast-related-post-featured-section ast-no-thumb"></div> <header class="entry-header related-entry-header"> <h3 class="ast-related-post-title entry-title"> <a href="https://powcoder.com/2016/06/21/comp220-software-development-tools/" target="_self" rel="bookmark noopener noreferrer">COMP220: Software Development Tools</a> </h3> <div class="entry-meta ast-related-cat-style--none ast-related-tag-style--none"><span class="ast-taxonomy-container cat-links default"><a href="https://powcoder.com/category/uncategorized/" rel="category tag">程序代写 CS代考</a></span> / <span class="ast-taxonomy-container tags-links default"><a href="https://powcoder.com/tag/java/" rel="tag">Java代写代考</a>, <a href="https://powcoder.com/tag/junit/" rel="tag">junit</a></span></div> </header> <div class="entry-content clear"> </div> </div> </div> </article> </div> </div> </main><!-- #main --> </div><!-- #primary --> <div class="widget-area secondary" id="secondary" itemtype="https://schema.org/WPSideBar" itemscope="itemscope"> <div class="sidebar-main" > <aside id="custom_html-2" class="widget_text widget widget_custom_html"><h2 class="widget-title">Contact</h2><div class="textwidget custom-html-widget"><ul> <li><strong>QQ: 1823890830</strong></li> <li><strong>微信号(WeChat): powcoder</strong></li> <li><img data-recalc-dims="1" class="alignnone wp-image-366" src="https://i0.wp.com/powcoder.com/wp-content/uploads/2021/01/powcoder.jpg?resize=133%2C133&ssl=1" alt="myweixin" width="133" height="133"/></li> <li><strong>Email: <a href="mailto:powcoder@163.com">powcoder@163.com</a></strong></li> </ul> <ul> <li><strong>请加微信或QQ发要求</strong></li> <li><strong>Contact me through WeChat</strong></li> </ul> </div></aside><aside id="categories-2" class="widget widget_categories"><h2 class="widget-title">Categories</h2><nav aria-label="Categories"> <ul> <li class="cat-item cat-item-245"><a href="https://powcoder.com/category/machine-learning/">机器学习代写代考 machine learning</a> </li> <li class="cat-item cat-item-242"><a href="https://powcoder.com/category/database-db-sql/">数据库代写代考 DB Database SQL</a> </li> <li class="cat-item cat-item-244"><a href="https://powcoder.com/category/data-structure-algorithm/">数据结构算法代写代考 data structure algorithm</a> </li> <li class="cat-item cat-item-239"><a href="https://powcoder.com/category/%e4%ba%ba%e5%b7%a5%e6%99%ba%e8%83%bd-ai-artificial-intelligence/">人工智能 AI Artificial Intelligence</a> </li> <li class="cat-item cat-item-247"><a href="https://powcoder.com/category/compiler/">编译器原理 Compiler</a> </li> <li class="cat-item cat-item-254"><a href="https://powcoder.com/category/network-socket/">计算机网络 套接字编程 computer network socket programming</a> </li> <li class="cat-item cat-item-240"><a href="https://powcoder.com/category/hadoop-map-reduce-spark-hbase/">大数据 Hadoop Map Reduce Spark HBase</a> </li> <li class="cat-item cat-item-241"><a href="https://powcoder.com/category/%e6%93%8d%e4%bd%9c%e7%b3%bb%e7%bb%9fosoperating-system/">操作系统OS代写代考 (Operating System)</a> </li> <li class="cat-item cat-item-250"><a href="https://powcoder.com/category/computer-architecture/">计算机体系结构代写代考 Computer Architecture</a> </li> <li class="cat-item cat-item-251"><a href="https://powcoder.com/category/computer-graphics-opengl-webgl/">计算机图形学 Computer Graphics opengl webgl</a> </li> <li class="cat-item cat-item-249"><a href="https://powcoder.com/category/nlp/">自然语言处理 NLP natural language processing</a> </li> <li class="cat-item cat-item-383"><a href="https://powcoder.com/category/%e5%b9%b6%e8%a1%8c%e8%ae%a1%e7%ae%97/">并行计算</a> </li> <li class="cat-item cat-item-253"><a href="https://powcoder.com/category/computation-theory/">计算理论 Theory of Computation</a> </li> <li class="cat-item cat-item-252"><a href="https://powcoder.com/category/computer-security/">计算机安全密码学computer security cryptography</a> </li> <li class="cat-item cat-item-246"><a href="https://powcoder.com/category/sys-programming/">系统编程 System programming</a> </li> <li class="cat-item cat-item-367"><a href="https://powcoder.com/category/%e6%95%b0%e5%80%bc%e7%a7%91%e5%ad%a6%e8%ae%a1%e7%ae%97/">数值科学计算</a> </li> <li class="cat-item cat-item-255"><a href="https://powcoder.com/category/%e8%ae%a1%e7%ae%97%e6%9c%ba%e8%a7%86%e8%a7%89compute-vision/">计算机视觉代写代考(Compute Vision)</a> </li> <li class="cat-item cat-item-248"><a href="https://powcoder.com/category/web/">网页应用 Web Application</a> </li> <li class="cat-item cat-item-401"><a href="https://powcoder.com/category/%e5%88%86%e5%b8%83%e5%bc%8f%e7%b3%bb%e7%bb%9f/">分布式系统</a> </li> <li class="cat-item cat-item-640"><a href="https://powcoder.com/category/%e7%ac%94%e8%af%95%e9%9d%a2%e8%af%95/">笔试面试</a> </li> <li class="cat-item cat-item-403"><a href="https://powcoder.com/category/%e5%87%bd%e6%95%b0%e5%bc%8f%e7%bc%96%e7%a8%8b/">函数式编程</a> </li> <li class="cat-item cat-item-243"><a href="https://powcoder.com/category/%e6%95%b0%e6%8d%ae%e6%8c%96%e6%8e%98-data-mining/">数据挖掘 Data Mining</a> </li> <li class="cat-item cat-item-364"><a href="https://powcoder.com/category/%e7%a6%bb%e6%95%a3%e6%95%b0%e5%ad%a6/">离散数学代写代考 (Discrete mathematics)</a> </li> <li class="cat-item cat-item-384"><a href="https://powcoder.com/category/%e8%bd%af%e4%bb%b6%e5%b7%a5%e7%a8%8b/">软件工程</a> </li> <li class="cat-item cat-item-551"><a href="https://powcoder.com/category/%e7%bc%96%e7%a8%8b%e8%af%ad%e8%a8%80-programming-language/">编程语言 Programming Language</a> </li> <li class="cat-item cat-item-594"><a href="https://powcoder.com/category/%e7%bb%9f%e8%ae%a1%e4%bb%a3%e5%86%99%e4%bb%a3%e8%80%83/">统计代写代考</a> </li> <li class="cat-item cat-item-574"><a href="https://powcoder.com/category/%e8%bf%90%e7%ad%b9%e5%ad%a6-operation-research/">运筹学 Operation Research</a> </li> </ul> </nav></aside><aside id="tag_cloud-3" class="widget widget_tag_cloud"><h2 class="widget-title">Tag</h2><nav aria-label="Tag"><div class="tagcloud"><a href="https://powcoder.com/tag/algorithm/" class="tag-cloud-link tag-link-469 tag-link-position-1" style="font-size: 18px;" aria-label="Algorithm算法代写代考 (15,147 items)">Algorithm算法代写代考</a><a href="https://powcoder.com/tag/java/" class="tag-cloud-link tag-link-298 tag-link-position-2" style="font-size: 16.91156462585px;" aria-label="Java代写代考 (7,275 items)">Java代写代考</a><a href="https://powcoder.com/tag/database/" class="tag-cloud-link tag-link-414 tag-link-position-3" style="font-size: 16.503401360544px;" aria-label="database (5,442 items)">database</a><a href="https://powcoder.com/tag/data-structure/" class="tag-cloud-link tag-link-501 tag-link-position-4" style="font-size: 16.43537414966px;" aria-label="data structure (5,189 items)">data structure</a><a href="https://powcoder.com/tag/python/" class="tag-cloud-link tag-link-331 tag-link-position-5" style="font-size: 16.299319727891px;" aria-label="Python代写代考 (4,817 items)">Python代写代考</a><a href="https://powcoder.com/tag/compiler/" class="tag-cloud-link tag-link-472 tag-link-position-6" style="font-size: 16.027210884354px;" aria-label="compiler (4,000 items)">compiler</a><a href="https://powcoder.com/tag/scheme/" class="tag-cloud-link tag-link-338 tag-link-position-7" style="font-size: 15.823129251701px;" aria-label="Scheme代写代考 (3,502 items)">Scheme代写代考</a><a href="https://powcoder.com/tag/c-4/" class="tag-cloud-link tag-link-499 tag-link-position-8" style="font-size: 15.823129251701px;" aria-label="C语言代写 (3,489 items)">C语言代写</a><a href="https://powcoder.com/tag/ai/" class="tag-cloud-link tag-link-369 tag-link-position-9" style="font-size: 15.176870748299px;" aria-label="AI代写 (2,216 items)">AI代写</a><a href="https://powcoder.com/tag/c-3/" class="tag-cloud-link tag-link-491 tag-link-position-10" style="font-size: 14.700680272109px;" aria-label="c++代写 (1,633 items)">c++代写</a><a href="https://powcoder.com/tag/sql/" class="tag-cloud-link tag-link-395 tag-link-position-11" style="font-size: 14.530612244898px;" aria-label="SQL代写代考 (1,457 items)">SQL代写代考</a><a href="https://powcoder.com/tag/haskell/" class="tag-cloud-link tag-link-291 tag-link-position-12" style="font-size: 14.530612244898px;" aria-label="Haskell代写代考 (1,453 items)">Haskell代写代考</a><a href="https://powcoder.com/tag/javascript/" class="tag-cloud-link tag-link-299 tag-link-position-13" style="font-size: 14.462585034014px;" aria-label="javascript (1,395 items)">javascript</a><a href="https://powcoder.com/tag/concurrency/" class="tag-cloud-link tag-link-503 tag-link-position-14" style="font-size: 14.428571428571px;" aria-label="concurrency (1,355 items)">concurrency</a><a href="https://powcoder.com/tag/matlab/" class="tag-cloud-link tag-link-309 tag-link-position-15" style="font-size: 14.360544217687px;" aria-label="matlab代写代考 (1,281 items)">matlab代写代考</a><a href="https://powcoder.com/tag/finance/" class="tag-cloud-link tag-link-282 tag-link-position-16" style="font-size: 14.292517006803px;" aria-label="finance (1,221 items)">finance</a><a href="https://powcoder.com/tag/interpreter/" class="tag-cloud-link tag-link-297 tag-link-position-17" style="font-size: 14.190476190476px;" aria-label="interpreter (1,144 items)">interpreter</a><a href="https://powcoder.com/tag/mips/" class="tag-cloud-link tag-link-313 tag-link-position-18" style="font-size: 14.190476190476px;" aria-label="MIPS汇编代写代考 (1,138 items)">MIPS汇编代写代考</a><a href="https://powcoder.com/tag/data-mining/" class="tag-cloud-link tag-link-271 tag-link-position-19" style="font-size: 13.986394557823px;" aria-label="data mining (994 items)">data mining</a><a href="https://powcoder.com/tag/decision-tree/" class="tag-cloud-link tag-link-273 tag-link-position-20" style="font-size: 13.952380952381px;" aria-label="decision tree (982 items)">decision tree</a><a href="https://powcoder.com/tag/deep-learning/" class="tag-cloud-link tag-link-274 tag-link-position-21" style="font-size: 13.952380952381px;" aria-label="deep learning深度学习代写代考 (980 items)">deep learning深度学习代写代考</a><a href="https://powcoder.com/tag/prolog/" class="tag-cloud-link tag-link-329 tag-link-position-22" style="font-size: 13.918367346939px;" aria-label="Prolog代写代考 (957 items)">Prolog代写代考</a><a href="https://powcoder.com/tag/file-system/" class="tag-cloud-link tag-link-281 tag-link-position-23" style="font-size: 13.850340136054px;" aria-label="file system (902 items)">file system</a><a href="https://powcoder.com/tag/c/" class="tag-cloud-link tag-link-265 tag-link-position-24" style="font-size: 13.578231292517px;" aria-label="c++代做 (764 items)">c++代做</a><a href="https://powcoder.com/tag/computer-architecture/" class="tag-cloud-link tag-link-507 tag-link-position-25" style="font-size: 13.47619047619px;" aria-label="computer architecture (712 items)">computer architecture</a><a href="https://powcoder.com/tag/er/" class="tag-cloud-link tag-link-433 tag-link-position-26" style="font-size: 13.47619047619px;" aria-label="ER (711 items)">ER</a><a href="https://powcoder.com/tag/gui/" class="tag-cloud-link tag-link-290 tag-link-position-27" style="font-size: 13.47619047619px;" aria-label="gui (711 items)">gui</a><a href="https://powcoder.com/tag/gpu/" class="tag-cloud-link tag-link-396 tag-link-position-28" style="font-size: 13.272108843537px;" aria-label="GPU (620 items)">GPU</a><a href="https://powcoder.com/tag/data-science/" class="tag-cloud-link tag-link-272 tag-link-position-29" style="font-size: 13.272108843537px;" aria-label="data science (615 items)">data science</a><a href="https://powcoder.com/tag/x86%e6%b1%87%e7%bc%96/" class="tag-cloud-link tag-link-514 tag-link-position-30" style="font-size: 13.238095238095px;" aria-label="x86汇编代写代考 (606 items)">x86汇编代写代考</a><a href="https://powcoder.com/tag/case-study/" class="tag-cloud-link tag-link-468 tag-link-position-31" style="font-size: 13.204081632653px;" aria-label="case study (586 items)">case study</a><a href="https://powcoder.com/tag/distributed-system/" class="tag-cloud-link tag-link-277 tag-link-position-32" style="font-size: 13.170068027211px;" aria-label="distributed system (576 items)">distributed system</a><a href="https://powcoder.com/tag/android/" class="tag-cloud-link tag-link-256 tag-link-position-33" style="font-size: 13.034013605442px;" aria-label="android (527 items)">android</a><a href="https://powcoder.com/tag/kernel/" class="tag-cloud-link tag-link-470 tag-link-position-34" style="font-size: 13.034013605442px;" aria-label="kernel (520 items)">kernel</a><a href="https://powcoder.com/tag/arm/" class="tag-cloud-link tag-link-483 tag-link-position-35" style="font-size: 13px;" aria-label="ARM汇编代写代考 (514 items)">ARM汇编代写代考</a></div> </nav></aside><aside id="block-4" class="widget widget_block"> <div class="wp-block-group is-layout-flow wp-block-group-is-layout-flow"><div class="wp-block-group__inner-container"><ul class="wp-block-latest-posts__list wp-block-latest-posts"><li><a class="wp-block-latest-posts__post-title" href="https://powcoder.com/2025/06/17/gatech-cs-6035-%e4%bf%a1%e6%81%af%e5%ae%89%e5%85%a8%e4%bb%a3%e5%86%99/">gatech CS 6035 信息安全代写</a></li> <li><a class="wp-block-latest-posts__post-title" href="https://powcoder.com/2025/06/17/gatech-cs7638-ai4r-%e4%bb%a3%e5%81%9a%e8%be%85%e5%af%bc/">gatech cs7638 AI4R 代做辅导</a></li> <li><a class="wp-block-latest-posts__post-title" href="https://powcoder.com/2025/01/19/%e7%a8%8b%e5%ba%8f%e4%bb%a3%e5%86%99-cs7641-assignment-4-markov-decision-processes-fall-2024/">程序代写 CS7641 Assignment 4 Markov Decision Processes Fall 2024</a></li> <li><a class="wp-block-latest-posts__post-title" href="https://powcoder.com/2025/01/19/cs%e4%bb%a3%e5%86%99-cs-0447-computer-organization-and-assembly-language-midterm-project-conne/">CS代写 CS 0447 Computer Organization and Assembly Language Midterm Project – Conne</a></li> <li><a class="wp-block-latest-posts__post-title" href="https://powcoder.com/2024/12/10/cs%e4%bb%a3%e8%80%83-cs-0447-computer-organization-and-assembly-language-midterm-project-conne/">CS代考 CS 0447 Computer Organization and Assembly Language Midterm Project – Conne</a></li> </ul></div></div> </aside> </div><!-- .sidebar-main --> </div><!-- #secondary --> </div> <!-- ast-container --> </div><!-- #content --> <footer class="site-footer" id="colophon" itemtype="https://schema.org/WPFooter" itemscope="itemscope" itemid="#colophon"> <div class="site-below-footer-wrap ast-builder-grid-row-container site-footer-focus-item ast-builder-grid-row-full ast-builder-grid-row-tablet-full ast-builder-grid-row-mobile-full ast-footer-row-stack ast-footer-row-tablet-stack ast-footer-row-mobile-stack" data-section="section-below-footer-builder"> <div class="ast-builder-grid-row-container-inner"> <div class="ast-builder-footer-grid-columns site-below-footer-inner-wrap ast-builder-grid-row"> <div class="site-footer-below-section-1 site-footer-section site-footer-section-1"> <div class="ast-builder-layout-element ast-flex site-footer-focus-item ast-footer-copyright" data-section="section-footer-builder"> <div class="ast-footer-copyright"><p>Copyright © 2026 PowCoder代写 | Powered by <a href="https://wpastra.com" rel="nofollow noopener" target="_blank">Astra WordPress Theme</a></p> </div> </div> </div> </div> </div> </div> </footer><!-- #colophon --> </div><!-- #page --> <script type="speculationrules"> {"prefetch":[{"source":"document","where":{"and":[{"href_matches":"/*"},{"not":{"href_matches":["/wp-*.php","/wp-admin/*","/wp-content/uploads/*","/wp-content/*","/wp-content/plugins/*","/wp-content/themes/astra/*","/*\\?(.+)"]}},{"not":{"selector_matches":"a[rel~=\"nofollow\"]"}},{"not":{"selector_matches":".no-prefetch, .no-prefetch a"}}]},"eagerness":"conservative"}]} </script> <script> /(trident|msie)/i.test(navigator.userAgent)&&document.getElementById&&window.addEventListener&&window.addEventListener("hashchange",function(){var t,e=location.hash.substring(1);/^[A-z0-9_-]+$/.test(e)&&(t=document.getElementById(e))&&(/^(?:a|select|input|button|textarea)$/i.test(t.tagName)||(t.tabIndex=-1),t.focus())},!1); </script> <script id="astra-theme-js-js-extra"> var astra = {"break_point":"921","isRtl":"","is_scroll_to_id":"","is_scroll_to_top":"","is_header_footer_builder_active":"1","responsive_cart_click":"flyout","is_dark_palette":""}; //# sourceURL=astra-theme-js-js-extra </script> <script src="https://powcoder.com/wp-content/cache/minify/75800.js"></script> <script id="jetpack-stats-js-before"> _stq = window._stq || []; _stq.push([ "view", {"v":"ext","blog":"132118579","post":"40957","tz":"8","srv":"powcoder.com","j":"1:15.7.1"} ]); _stq.push([ "clickTrackerInit", "132118579", "40957" ]); //# sourceURL=jetpack-stats-js-before </script> <script src="https://stats.wp.com/e-202617.js" id="jetpack-stats-js" defer data-wp-strategy="defer"></script> </body> </html> <!-- Performance optimized by W3 Total Cache. Learn more: https://www.boldgrid.com/w3-total-cache/?utm_source=w3tc&utm_medium=footer_comment&utm_campaign=free_plugin Page Caching using Disk: Enhanced Content Delivery Network via N/A Minified using Disk Served from: powcoder.com @ 2026-04-27 07:30:53 by W3 Total Cache -->