本文整理汇总了C++中pdf_new_name函数的典型用法代码示例。如果您正苦于以下问题:C++ pdf_new_name函数的具体用法?C++ pdf_new_name怎么用?C++ pdf_new_name使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了pdf_new_name函数的20个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C++代码示例。
示例1: create_cspace_sRGB
/* Approximated sRGB */
static pdf_obj *
create_cspace_sRGB (png_structp png_ptr, png_infop info_ptr)
{
pdf_obj *colorspace;
pdf_obj *cal_param;
png_byte color_type;
color_type = png_get_color_type(png_ptr, info_ptr);
/* Parameters taken from PNG spec. section 4.2.2.3. */
cal_param = make_param_Cal(color_type,
2.2,
0.3127, 0.329,
0.64, 0.33, 0.3, 0.6, 0.15, 0.06);
if (!cal_param)
return NULL;
colorspace = pdf_new_array();
switch (color_type) {
case PNG_COLOR_TYPE_RGB:
case PNG_COLOR_TYPE_RGB_ALPHA:
case PNG_COLOR_TYPE_PALETTE:
pdf_add_array(colorspace, pdf_new_name("CalRGB"));
break;
case PNG_COLOR_TYPE_GRAY:
case PNG_COLOR_TYPE_GRAY_ALPHA:
pdf_add_array(colorspace, pdf_new_name("CalGray"));
break;
}
pdf_add_array(colorspace, cal_param);
return colorspace;
}
开发者ID:leo-liu,项目名称:ptex-ng,代码行数:35,代码来源:pngimage.c
示例2: get_rendering_intent
/*
* sRGB:
*
* If sRGB chunk is present, cHRM and gAMA chunk must be ignored.
*
*/
static pdf_obj *
get_rendering_intent (png_structp png_ptr, png_infop info_ptr)
{
pdf_obj *intent;
int srgb_intent;
if (png_get_valid(png_ptr, info_ptr, PNG_INFO_sRGB) &&
png_get_sRGB (png_ptr, info_ptr, &srgb_intent)) {
switch (srgb_intent) {
case PNG_sRGB_INTENT_SATURATION:
intent = pdf_new_name("Saturation");
break;
case PNG_sRGB_INTENT_PERCEPTUAL:
intent = pdf_new_name("Perceptual");
break;
case PNG_sRGB_INTENT_ABSOLUTE:
intent = pdf_new_name("AbsoluteColorimetric");
break;
case PNG_sRGB_INTENT_RELATIVE:
intent = pdf_new_name("RelativeColorimetric");
break;
default:
WARN("%s: Invalid value in PNG sRGB chunk: %d", PNG_DEBUG_STR, srgb_intent);
intent = NULL;
}
} else
intent = NULL;
return intent;
}
开发者ID:leo-liu,项目名称:ptex-ng,代码行数:36,代码来源:pngimage.c
示例3: create_encoding_resource
/* Creates the PDF Encoding entry for the encoding.
* If baseenc is non-null, it is used as BaseEncoding entry.
*/
static pdf_obj *
create_encoding_resource (pdf_encoding *encoding, pdf_encoding *baseenc)
{
pdf_obj *differences;
ASSERT(encoding);
ASSERT(!encoding->resource);
differences = make_encoding_differences(encoding->glyphs,
baseenc ? baseenc->glyphs : NULL,
encoding->is_used);
if (differences) {
pdf_obj *resource = pdf_new_dict();
if (baseenc)
pdf_add_dict(resource, pdf_new_name("BaseEncoding"),
pdf_link_obj(baseenc->resource));
pdf_add_dict(resource, pdf_new_name("Differences"), differences);
return resource;
} else {
/* Fix a bug with the MinionPro package using MnSymbol fonts
* in its virtual fonts:
*
* Some font may have font_id even if no character is used.
* For example, suppose that a virtual file A.vf uses two
* other fonts, B and C. Even if only characters of B are used
* in a DVI document, C will have font_id too.
* In this case, both baseenc and differences can be NULL.
*
* Actually these fonts will be ignored in pdffont.c.
*/
return baseenc ? pdf_link_obj(baseenc->resource) : NULL;
}
}
开发者ID:MiKTeX,项目名称:miktex,代码行数:36,代码来源:pdfencoding.c
示例4: create_soft_mask
static pdf_obj *
create_soft_mask (png_structp png_ptr, png_infop info_ptr,
png_bytep image_data_ptr, png_uint_32 width, png_uint_32 height)
{
pdf_obj *smask, *dict;
png_bytep smask_data_ptr;
png_bytep trans;
int num_trans;
png_uint_32 i;
if (!png_get_valid(png_ptr, info_ptr, PNG_INFO_tRNS) ||
!png_get_tRNS(png_ptr, info_ptr, &trans, &num_trans, NULL)) {
WARN("%s: PNG does not have valid tRNS chunk but tRNS is requested.", PNG_DEBUG_STR);
return NULL;
}
smask = pdf_new_stream(STREAM_COMPRESS);
dict = pdf_stream_dict(smask);
smask_data_ptr = (png_bytep) NEW(width*height, png_byte);
pdf_add_dict(dict, pdf_new_name("Type"), pdf_new_name("XObject"));
pdf_add_dict(dict, pdf_new_name("Subtype"), pdf_new_name("Image"));
pdf_add_dict(dict, pdf_new_name("Width"), pdf_new_number(width));
pdf_add_dict(dict, pdf_new_name("Height"), pdf_new_number(height));
pdf_add_dict(dict, pdf_new_name("ColorSpace"), pdf_new_name("DeviceGray"));
pdf_add_dict(dict, pdf_new_name("BitsPerComponent"), pdf_new_number(8));
for (i = 0; i < width*height; i++) {
png_byte idx = image_data_ptr[i];
smask_data_ptr[i] = (idx < num_trans) ? trans[idx] : 0xff;
}
pdf_add_stream(smask, (char *)smask_data_ptr, width*height);
RELEASE(smask_data_ptr);
return smask;
}
开发者ID:leo-liu,项目名称:ptex-ng,代码行数:34,代码来源:pngimage.c
示例5: pdf_flush_font
static void
pdf_flush_font (pdf_font *font)
{
char *fontname, *uniqueTag;
if (!font) {
return;
}
if (font->resource && font->reference) {
if (font->subtype != PDF_FONT_FONTTYPE_TYPE3) {
if (pdf_font_get_flag(font, PDF_FONT_FLAG_NOEMBED)) {
pdf_add_dict(font->resource,
pdf_new_name("BaseFont"), pdf_new_name(font->fontname));
if (font->descriptor) {
pdf_add_dict(font->descriptor,
pdf_new_name("FontName"), pdf_new_name(font->fontname));
}
} else {
if (!font->fontname) {
ERROR("Undefined in fontname... (%s)", font->ident);
}
fontname = NEW(7+strlen(font->fontname)+1, char);
uniqueTag = pdf_font_get_uniqueTag(font);
sprintf(fontname, "%6s+%s", uniqueTag, font->fontname);
pdf_add_dict(font->resource,
pdf_new_name("BaseFont"), pdf_new_name(fontname));
if (font->descriptor) {
pdf_add_dict(font->descriptor,
pdf_new_name("FontName"), pdf_new_name(fontname));
}
RELEASE(fontname);
}
if (font->descriptor) {
pdf_add_dict(font->resource,
pdf_new_name("FontDescriptor"), pdf_ref_obj(font->descriptor));
}
}
}
if (font->resource)
pdf_release_obj(font->resource);
if (font->descriptor)
pdf_release_obj(font->descriptor);
if (font->reference)
pdf_release_obj(font->reference);
font->reference = NULL;
font->resource = NULL;
font->descriptor = NULL;
return;
}
开发者ID:shirat74,项目名称:dvipdfm-x,代码行数:53,代码来源:pdffont.c
示例6: pdfout_data_scalar_to_pdf_name
pdf_obj *
pdfout_data_scalar_to_pdf_name (fz_context *ctx, pdf_document *doc,
pdfout_data *scalar)
{
const char *s = scalar_get_string (ctx, scalar);
return pdf_new_name (ctx, doc, s);
}
开发者ID:amba,项目名称:pdfout,代码行数:7,代码来源:data.c
示例7: pdf_set_annot_icon_name
void
pdf_set_annot_icon_name(fz_context *ctx, pdf_annot *annot, const char *name)
{
pdf_document *doc = annot->page->doc;
check_allowed_subtypes(ctx, annot, PDF_NAME_Name, icon_name_subtypes);
pdf_dict_put_drop(ctx, annot->obj, PDF_NAME_Name, pdf_new_name(ctx, doc, name));
}
开发者ID:project-renard-survey,项目名称:mupdf,代码行数:7,代码来源:pdf-annot-edit.c
示例8: pdf_parse_stm_obj
pdf_obj *
pdf_parse_stm_obj(pdf_document *doc, fz_stream *file, pdf_lexbuf *buf)
{
pdf_token tok;
fz_context *ctx = file->ctx;
tok = pdf_lex(file, buf);
switch (tok)
{
case PDF_TOK_OPEN_ARRAY:
return pdf_parse_array(doc, file, buf);
case PDF_TOK_OPEN_DICT:
return pdf_parse_dict(doc, file, buf);
case PDF_TOK_NAME: return pdf_new_name(doc, buf->scratch); break;
case PDF_TOK_REAL: return pdf_new_real(doc, buf->f); break;
case PDF_TOK_STRING: return pdf_new_string(doc, buf->scratch, buf->len); break;
case PDF_TOK_TRUE: return pdf_new_bool(doc, 1); break;
case PDF_TOK_FALSE: return pdf_new_bool(doc, 0); break;
case PDF_TOK_NULL: return pdf_new_null(doc); break;
case PDF_TOK_INT: return pdf_new_int(doc, buf->i); break;
default: fz_throw(ctx, FZ_ERROR_GENERIC, "unknown token in object stream");
}
return NULL; /* Stupid MSVC */
}
开发者ID:FabriceSalvaire,项目名称:mupdf-v1.3,代码行数:25,代码来源:pdf-parse.c
示例9: pdf_new_page_label
void pdf_new_page_label (pdf_file_handle pdf_file,
int page_index,
int base,
int count,
char style,
char *prefix)
{
struct pdf_obj *label_dict;
char style_str [2] = { style, '\0' };
if (! pdf_file->page_label_tree)
{
pdf_file->page_label_tree = pdf_new_name_tree (pdf_file, 1);
}
label_dict = pdf_new_obj (PT_DICTIONARY);
if (style)
pdf_set_dict_entry (label_dict, "S", pdf_new_name (style_str));
if (prefix)
pdf_set_dict_entry (label_dict, "P", pdf_new_string (prefix));
if (base > 1)
pdf_set_dict_entry (label_dict, "St", pdf_new_integer (base));
pdf_add_number_tree_element (pdf_file->page_label_tree,
page_index,
label_dict);
}
开发者ID:brouhaha,项目名称:tumble,代码行数:30,代码来源:pdf_page_label.c
示例10: pdf_to_utf8_name
pdf_obj *
pdf_to_utf8_name(pdf_document *doc, pdf_obj *src)
{
char *buf = pdf_to_utf8(doc, src);
pdf_obj *dst = pdf_new_name(doc, buf);
fz_free(doc->ctx, buf);
return dst;
}
开发者ID:panyihua,项目名称:SumatraPDF_SpecialPrint,代码行数:8,代码来源:pdf-parse.c
示例11: pdf_to_utf8_name
pdf_obj *
pdf_to_utf8_name(fz_context *ctx, pdf_document *doc, pdf_obj *src)
{
char *buf = pdf_to_utf8(ctx, doc, src);
pdf_obj *dst = pdf_new_name(ctx, doc, buf);
fz_free(ctx, buf);
return dst;
}
开发者ID:Enzime,项目名称:mupdf,代码行数:8,代码来源:pdf-parse.c
示例12: Type0Font_set_ToUnicode
void
Type0Font_set_ToUnicode (Type0Font *font, pdf_obj *cmap_ref)
{
ASSERT(font);
pdf_add_dict(font->fontdict,
pdf_new_name("ToUnicode"), cmap_ref);
}
开发者ID:YandYTeX,项目名称:ptex-ng,代码行数:8,代码来源:type0.c
示例13: create_cspace_Indexed
/*
* Set up Indexed ColorSpace for color-type PALETTE:
*
* PNG allows only RGB color for base color space. If gAMA and/or cHRM
* chunk is available, we can use CalRGB color space instead of DeviceRGB
* for base color space.
*
*/
static pdf_obj *
create_cspace_Indexed (png_structp png_ptr, png_infop info_ptr)
{
pdf_obj *colorspace;
pdf_obj *base, *lookup;
png_byte *data_ptr;
png_colorp plte;
int num_plte, i;
if (!png_get_valid(png_ptr, info_ptr, PNG_INFO_PLTE) ||
!png_get_PLTE(png_ptr, info_ptr, &plte, &num_plte)) {
WARN("%s: PNG does not have valid PLTE chunk.", PNG_DEBUG_STR);
return NULL;
}
/* Order is important. */
colorspace = pdf_new_array ();
pdf_add_array(colorspace, pdf_new_name("Indexed"));
if (png_get_valid(png_ptr, info_ptr, PNG_INFO_iCCP))
base = create_cspace_ICCBased(png_ptr, info_ptr);
else {
if (png_get_valid(png_ptr, info_ptr, PNG_INFO_sRGB))
base = create_cspace_sRGB(png_ptr, info_ptr);
else
base = create_cspace_CalRGB(png_ptr, info_ptr);
}
if (!base)
base = pdf_new_name("DeviceRGB");
pdf_add_array(colorspace, base);
pdf_add_array(colorspace, pdf_new_number(num_plte-1));
data_ptr = NEW(num_plte*3, png_byte);
for (i = 0; i < num_plte; i++) {
data_ptr[3*i] = plte[i].red;
data_ptr[3*i+1] = plte[i].green;
data_ptr[3*i+2] = plte[i].blue;
}
lookup = pdf_new_string(data_ptr, num_plte*3);
RELEASE(data_ptr);
pdf_add_array(colorspace, lookup);
return colorspace;
}
开发者ID:leo-liu,项目名称:ptex-ng,代码行数:53,代码来源:pngimage.c
示例14: pdf_create_page
pdf_page *
pdf_create_page(pdf_document *doc, fz_rect mediabox, int res, int rotate)
{
pdf_page *page = NULL;
pdf_obj *pageobj;
float userunit = 1;
fz_context *ctx = doc->ctx;
fz_matrix ctm, tmp;
fz_rect realbox;
page = fz_malloc_struct(ctx, pdf_page);
fz_try(ctx)
{
page->resources = NULL;
page->contents = NULL;
page->transparency = 0;
page->links = NULL;
page->annots = NULL;
page->me = pageobj = pdf_new_dict(doc, 4);
pdf_dict_puts_drop(pageobj, "Type", pdf_new_name(doc, "Page"));
page->mediabox.x0 = fz_min(mediabox.x0, mediabox.x1) * userunit;
page->mediabox.y0 = fz_min(mediabox.y0, mediabox.y1) * userunit;
page->mediabox.x1 = fz_max(mediabox.x0, mediabox.x1) * userunit;
page->mediabox.y1 = fz_max(mediabox.y0, mediabox.y1) * userunit;
pdf_dict_puts_drop(pageobj, "MediaBox", pdf_new_rect(doc, &page->mediabox));
/* Snap page->rotate to 0, 90, 180 or 270 */
if (page->rotate < 0)
page->rotate = 360 - ((-page->rotate) % 360);
if (page->rotate >= 360)
page->rotate = page->rotate % 360;
page->rotate = 90*((page->rotate + 45)/90);
if (page->rotate > 360)
page->rotate = 0;
pdf_dict_puts_drop(pageobj, "Rotate", pdf_new_int(doc, page->rotate));
fz_pre_rotate(fz_scale(&ctm, 1, -1), -page->rotate);
realbox = page->mediabox;
fz_transform_rect(&realbox, &ctm);
fz_pre_scale(fz_translate(&tmp, -realbox.x0, -realbox.y0), userunit, userunit);
fz_concat(&ctm, &ctm, &tmp);
page->ctm = ctm;
/* Do not create a Contents, as an empty Contents dict is not
* valid. See Bug 694712 */
}
fz_catch(ctx)
{
pdf_drop_obj(page->me);
fz_free(ctx, page);
fz_rethrow_message(ctx, "Failed to create page");
}
return page;
}
开发者ID:codepongo,项目名称:sumatrapdf,代码行数:57,代码来源:pdf-page.c
示例15: create_cspace_ICCBased
static pdf_obj *
create_cspace_ICCBased (png_structp png_ptr, png_infop info_ptr)
{
pdf_obj *colorspace;
int csp_id, colortype;
png_byte color_type;
png_charp name;
int compression_type; /* Manual page for libpng does not
* clarify whether profile data is inflated by libpng.
*/
#if PNG_LIBPNG_VER_MINOR < 5
png_charp profile;
#else
png_bytep profile;
#endif
png_uint_32 proflen;
if (!png_get_valid(png_ptr, info_ptr, PNG_INFO_iCCP) ||
!png_get_iCCP(png_ptr, info_ptr, &name, &compression_type, &profile, &proflen))
return NULL;
color_type = png_get_color_type(png_ptr, info_ptr);
if (color_type & PNG_COLOR_MASK_COLOR) {
colortype = PDF_COLORSPACE_TYPE_RGB;
#if 0
alternate = create_cspace_CalRGB(png_ptr, info_ptr);
#endif
} else {
colortype = PDF_COLORSPACE_TYPE_GRAY;
#if 0
alternate = create_cspace_CalGray(png_ptr, info_ptr);
#endif
}
#if 0
if (alternate)
pdf_add_dict(dict, pdf_new_name("Alternate"), alternate);
#endif
if (iccp_check_colorspace(colortype, profile, proflen) < 0)
colorspace = NULL;
else {
csp_id = iccp_load_profile(name, profile, proflen);
if (csp_id < 0) {
colorspace = NULL;
} else {
colorspace = pdf_get_colorspace_reference(csp_id);
}
}
/* Rendering intent ... */
return colorspace;
}
开发者ID:leo-liu,项目名称:ptex-ng,代码行数:55,代码来源:pngimage.c
示例16: jp2_include_image
int
jp2_include_image (pdf_ximage *ximage, FILE *fp)
{
int smask = 0;
pdf_obj *stream, *stream_dict;
ximage_info info;
if (pdf_check_version(1, 5) < 0) {
WARN("JPEG 2000 support requires PDF version >= 1.5.\n");
return -1;
}
pdf_ximage_init_image_info(&info);
stream = stream_dict = NULL;
rewind(fp);
if (scan_file(&info, &smask, fp) < 0) {
WARN("JPEG2000: Reading JPEG 2000 file failed.");
return -1;
}
stream = pdf_new_stream(0);
stream_dict = pdf_stream_dict(stream);
pdf_add_dict(stream_dict,
pdf_new_name("Filter"), pdf_new_name("JPXDecode"));
if (smask)
pdf_add_dict(stream_dict,
pdf_new_name("SMaskInData"), pdf_new_number(1));
/* Read whole file */
{
int nb_read;
rewind(fp);
while ((nb_read =
fread(work_buffer, sizeof(char), WORK_BUFFER_SIZE, fp)) > 0)
pdf_add_stream(stream, work_buffer, nb_read);
}
pdf_ximage_set_image(ximage, &info, stream);
return 0;
}
开发者ID:shirat74,项目名称:dvipdfm-x,代码行数:41,代码来源:jp2image.c
示例17: jp2_include_image
int
jp2_include_image (pdf_ximage *ximage, FILE *fp)
{
unsigned pdf_version;
pdf_obj *stream, *stream_dict;
ximage_info info;
pdf_version = pdf_get_version();
if (pdf_version < 5) {
WARN("JPEG 2000 support requires PDF version >= 1.5 (Current setting 1.%d)\n", pdf_version);
return -1;
}
pdf_ximage_init_image_info(&info);
stream = stream_dict = NULL;
rewind(fp);
if (scan_file(&info, fp) < 0) {
WARN("Reading JPEG 2000 file failed.");
return -1;
}
stream = pdf_new_stream(0);
stream_dict = pdf_stream_dict(stream);
pdf_add_dict(stream_dict,
pdf_new_name("Filter"), pdf_new_name("JPXDecode"));
/* Read whole file */
{
long nb_read;
rewind(fp);
while ((nb_read =
fread(work_buffer, sizeof(char), WORK_BUFFER_SIZE, fp)) > 0)
pdf_add_stream(stream, work_buffer, nb_read);
}
pdf_ximage_set_image(ximage, &info, stream);
return 0;
}
开发者ID:simoncozens,项目名称:dvipdfm-x,代码行数:39,代码来源:jp2image.c
示例18: hash_to_pdf_dict
static pdf_obj *
hash_to_pdf_dict (fz_context *ctx, pdf_document *doc, pdfout_data *hash,
int *page)
{
pdf_obj *dict_obj = pdf_new_dict (ctx, doc, 3);
int len = pdfout_data_hash_len (ctx, hash);
for (int j = 0; j < len; ++j)
{
char *key, *value;
int value_len;
pdfout_data_hash_get_key_value (ctx, hash, &key, &value, &value_len, j);
if (streq (key, "page"))
*page = pdfout_strtoint_null (ctx, value);
else if (streq (key, "prefix"))
{
pdf_obj *string = pdfout_utf8_to_str_obj (ctx, doc, value,
value_len);
pdf_dict_puts_drop (ctx, dict_obj, "P", string);
}
else if (streq (key, "first"))
{
int first = pdfout_strtoint_null (ctx, value);
pdf_dict_puts_drop (ctx, dict_obj, "St",
pdf_new_int (ctx, doc, first));
}
else if (streq (key, "style"))
{
const char *name;
if (streq (value, "arabic"))
name = "D";
else if (streq (value, "Roman"))
name = "R";
else if (streq (value, "roman"))
name = "r";
else if (streq (value, "Letters"))
name = "A";
else if (streq (value, "letters"))
name = "a";
else
abort ();
pdf_obj *name_obj = pdf_new_name (ctx, doc, name);
pdf_dict_puts_drop (ctx, dict_obj, "S", name_obj);
}
}
return dict_obj;
}
开发者ID:amba,项目名称:pdfout,代码行数:49,代码来源:page-labels.c
示例19: pdf_dict_puts
static pdf_obj *start_new_destpage(fz_context *ctx,double width_pts,double height_pts)
{
pdf_obj *pageobj;
pdf_obj *mbox;
pageobj=pdf_new_dict(ctx,2);
pdf_dict_puts(pageobj,"Type",pdf_new_name(ctx,"Page"));
mbox=pdf_new_array(ctx,4);
pdf_array_push(mbox,pdf_new_real(ctx,0.));
pdf_array_push(mbox,pdf_new_real(ctx,0.));
pdf_array_push(mbox,pdf_new_real(ctx,width_pts));
pdf_array_push(mbox,pdf_new_real(ctx,height_pts));
pdf_dict_puts(pageobj,"MediaBox",mbox);
return(pageobj);
}
开发者ID:chenkaigithub,项目名称:libk2pdfopt,代码行数:16,代码来源:wmupdf.c
示例20: make_encoding_differences
/* Creates a PDF Differences array for the encoding, based on the
* base encoding baseenc (if not NULL). Only character codes which
* are actually used in the document are considered.
*/
static pdf_obj *
make_encoding_differences (char **enc_vec, char **baseenc, const char *is_used)
{
pdf_obj *differences = NULL;
int code, count = 0;
int skipping = 1;
ASSERT(enc_vec);
/*
* Write all entries (except .notdef) if baseenc is unknown.
* If is_used is given, write only used entries.
*/
differences = pdf_new_array();
for (code = 0; code < 256; code++) {
/* We skip NULL (= ".notdef"). Any character code mapped to ".notdef"
* glyph should not be used in the document.
*/
if ((is_used && !is_used[code]) || !enc_vec[code])
skipping = 1;
else if (!baseenc || !baseenc[code] ||
strcmp(baseenc[code], enc_vec[code]) != 0) {
/*
* Difference found.
*/
if (skipping)
pdf_add_array(differences, pdf_new_number(code));
pdf_add_array(differences, pdf_new_name(enc_vec[code]));
skipping = 0;
count++;
} else
skipping = 1;
}
/*
* No difference found. Some PDF viewers can't handle differences without
* any differences. We return NULL.
*/
if (count == 0) {
pdf_release_obj(differences);
differences = NULL;
}
return differences;
}
开发者ID:MiKTeX,项目名称:miktex,代码行数:49,代码来源:pdfencoding.c
注:本文中的pdf_new_name函数示例由纯净天空整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。 |
请发表评论