HPDF_EXPORT(HPDF_STATUS) HPDF_3DView_SetPerspectiveProjection(HPDF_Dict view, HPDF_REAL fov) { HPDF_STATUS ret = HPDF_OK; HPDF_Dict projection; HPDF_PTRACE ((" HPDF_3DView_SetPerspectiveProjection\n")); if (view == NULL || fov < 0 || fov > 180) { return HPDF_INVALID_U3D_DATA; } projection = HPDF_Dict_New (view->mmgr); if (!projection) { return HPDF_Error_GetCode (view->error); } ret = HPDF_Dict_AddName (projection, "Subtype", "P"); if (ret != HPDF_OK) { HPDF_Dict_Free (projection); return ret; } ret = HPDF_Dict_AddName (projection, "PS", "Min"); if (ret != HPDF_OK) { HPDF_Dict_Free (projection); return ret; } ret = HPDF_Dict_AddReal (projection, "FOV", fov); if (ret != HPDF_OK) { HPDF_Dict_Free (projection); return ret; } ret = HPDF_Dict_Add (view, "P", projection); if (ret != HPDF_OK) { HPDF_Dict_Free (projection); return ret; } return ret; }
HPDF_EXPORT(HPDF_STATUS) HPDF_3DView_AddNode(HPDF_Dict view, const char *name, HPDF_REAL opacity, HPDF_BOOL visible) { HPDF_Array nodes = NULL; HPDF_Dict node; HPDF_STATUS ret = HPDF_OK; HPDF_PTRACE ((" HPDF_3DView_AddNode\n")); if (view == NULL || opacity < 0 || opacity > 1 || name == NULL || name[0] == '\0') { return HPDF_INVALID_U3D_DATA; } nodes = (HPDF_Array)HPDF_Dict_GetItem (view, "NA", HPDF_OCLASS_ARRAY); if (nodes == NULL) { nodes = HPDF_Array_New (view->mmgr); if (!nodes) { return HPDF_Error_GetCode (view->error); } ret = HPDF_Dict_Add (view, "NA", nodes); if (ret != HPDF_OK) { HPDF_Array_Free (nodes); return ret; } } node = HPDF_Dict_New (view->mmgr); if (!node) { HPDF_Array_Free (nodes); return HPDF_Error_GetCode (view->error); } ret = HPDF_Dict_AddName (node, "Type", "3DNode"); if (ret != HPDF_OK) { HPDF_Array_Free (nodes); HPDF_Dict_Free (node); return ret; } ret = HPDF_Dict_Add (node, "N", HPDF_String_New (view->mmgr, name, NULL)); if (ret != HPDF_OK) { HPDF_Array_Free (nodes); HPDF_Dict_Free (node); return ret; } ret = HPDF_Dict_AddReal (node, "O", opacity); if (ret != HPDF_OK) { HPDF_Array_Free (nodes); HPDF_Dict_Free (node); return ret; } ret = HPDF_Dict_AddBoolean (node, "V", visible); if (ret != HPDF_OK) { HPDF_Dict_Free (node); HPDF_Array_Free (nodes); return ret; } ret = HPDF_Array_Add(nodes, node); if (ret != HPDF_OK) { HPDF_Dict_Free (node); HPDF_Array_Free (nodes); return ret; } return ret; }
HPDF_MarkupAnnot_SetTransparency (HPDF_Annotation annot, HPDF_REAL value) { HPDF_PTRACE((" HPDF_MarkupAnnot_SetTransparency\n")); return HPDF_Dict_AddReal( annot, "CA", value); }
HPDF_Annotation_SetBorderStyle (HPDF_Annotation annot, HPDF_BSSubtype subtype, HPDF_REAL width, HPDF_UINT16 dash_on, HPDF_UINT16 dash_off, HPDF_UINT16 dash_phase) { HPDF_Dict bs; HPDF_Array dash; HPDF_STATUS ret; HPDF_PTRACE((" HPDF_Annotation_SetBoderStyle\n")); bs = HPDF_Dict_New (annot->mmgr); if (!bs) return HPDF_Error_GetCode (annot->error); if ((ret = HPDF_Dict_Add (annot, "BS", bs)) != HPDF_OK) return ret; if (subtype == HPDF_BS_DASHED) { dash = HPDF_Array_New (annot->mmgr); if (!dash) return HPDF_Error_GetCode (annot->error); if ((ret = HPDF_Dict_Add (bs, "D", dash)) != HPDF_OK) return ret; ret += HPDF_Dict_AddName (bs, "Type", "Border"); ret += HPDF_Array_AddReal (dash, dash_on); ret += HPDF_Array_AddReal (dash, dash_off); if (dash_phase != 0) ret += HPDF_Array_AddReal (dash, dash_off); } switch (subtype) { case HPDF_BS_SOLID: ret += HPDF_Dict_AddName (bs, "S", "S"); break; case HPDF_BS_DASHED: ret += HPDF_Dict_AddName (bs, "S", "D"); break; case HPDF_BS_BEVELED: ret += HPDF_Dict_AddName (bs, "S", "B"); break; case HPDF_BS_INSET: ret += HPDF_Dict_AddName (bs, "S", "I"); break; case HPDF_BS_UNDERLINED: ret += HPDF_Dict_AddName (bs, "S", "U"); break; default: return HPDF_SetError (annot->error, HPDF_ANNOT_INVALID_BORDER_STYLE, 0); } if (width != HPDF_BS_DEF_WIDTH) ret += HPDF_Dict_AddReal (bs, "W", width); if (ret != HPDF_OK) return HPDF_Error_GetCode (annot->error); return HPDF_OK; }