示例#1
0
        public string HPDF_Dict_GetKeyByObj(HPDF_Object obj)
        {
            for (int i = 0; i < List.Count; i++)
            {
                var element = List[i];
                var header  = element.Value.Header;

                if (header.ObjClass == HPDF_Obj_Header.HPDF_OCLASS_PROXY)
                {
                    HPDF_Proxy p = new HPDF_Proxy(element.Value);

                    if (p.Obj == obj)
                    {
                        return(element.Key);
                    }
                }
                else
                {
                    if (element.Value == obj)
                    {
                        return(element.Key);
                    }
                }
            }

            return(null);
        }
示例#2
0
        public HPDF_Object HPDF_Dict_GetItem(string key, uint objClass)
        {
            LibLogger.Debug(this.GetType(), $"HPDF_Dict_GetItem key {key} objClass {objClass}");

            var         element = GetElement(key);
            HPDF_Object obj     = new HPDF_Object();

            if (element != null && key == element.Key)
            {
                var header = element.Value.Header;

                if (header.ObjClass == HPDF_Obj_Header.HPDF_OCLASS_PROXY)
                {
                    HPDF_Proxy p = new HPDF_Proxy(element.Value);
                    header = p.Header;
                    obj    = p.Obj;
                }
                else
                {
                    obj = element.Value;
                }

                if ((Header.ObjClass & HPDF_Obj_Header.HPDF_OCLASS_ANY) != objClass)
                {
                    Error = new HPDF_Error("HPDF_Dict_GetItem", HPDF_Error.HPDF_DICT_ITEM_UNEXPECTED_TYPE, 0);
                }
            }

            return(obj);
        }
示例#3
0
        public void HPDF_Dict_Add(string key, HPDF_Object obj)
        {
            LibLogger.Debug(this.GetType(), $"HPDF_Dict_Add key {key} obj.Header.ObjId {obj.Header.ObjId}");

            HPDF_Obj_Header  header = obj.Header;
            HPDF_DictElement element;

            if ((header.ObjId & HPDF_Obj_Header.HPDF_OTYPE_DIRECT) != 0)
            {
                Error = new HPDF_Error("HPDF_Dict_Add line - invalid object", HPDF_Error.HPDF_INVALID_OBJECT, 0);
            }

            if (key == null)
            {
                Error = new HPDF_Error("HPDF_Dict_Add line - invalid object", HPDF_Error.HPDF_INVALID_OBJECT, 0);
            }

            if (List.Count >= HPDF_Consts.HPDF_LIMIT_MAX_DICT_ELEMENT)
            {
                LibLogger.Debug(this.GetType(), " HPDF_Dict_Add exceed limitatin of dict count(" + HPDF_Consts.HPDF_LIMIT_MAX_DICT_ELEMENT.ToString() + ")");
                Error = new HPDF_Error("HPDF_Dict_Add line - invalid object", HPDF_Error.HPDF_DICT_COUNT_ERR, 0);
            }

            /* check whether there is an object which has same name */
            element = GetElement(key);

            if (element != null)
            {
                element.Value = null;
            }
            else
            {
                element = new HPDF_DictElement
                {
                    Key   = key,
                    Value = null
                };

                List.Add(element);
            }

            if ((header.ObjId & HPDF_Obj_Header.HPDF_OTYPE_INDIRECT) != 0)
            {
                var proxy = new HPDF_Proxy(obj);
                element.Value       = proxy;
                proxy.Header.ObjId |= HPDF_Obj_Header.HPDF_OTYPE_DIRECT;
            }
            else
            {
                element.Value = obj;
                header.ObjId |= HPDF_Obj_Header.HPDF_OTYPE_DIRECT;
            }
        }