📄 htformat.h
字号:
int cursor_tag_micropos;/* selection*/ FileOfs sel_start; FileOfs sel_end;/* visual info */ int cursor_visual_xpos; int cursor_visual_length;/* misc info */ int cursor_tag_class;// union { FileOfs cursor_tag_offset; struct { LINE_ID id; } cursor_tag_id;// }; char cursor_line[1024];/* tag palettes */ palette tagpal;/**/ int xscroll; bool uf_initialized; bool isdirty_cursor_line;/* overwritten */ virtual const char *func(uint i, bool execute); virtual bool next_logical_pos(viewer_pos pos, viewer_pos *npos); virtual bool next_logical_offset(FileOfs ofs, FileOfs *nofs); virtual Object *vstate_create(); virtual void vstate_restore(Object *view_state);/* new */ int address_input(const char *title, char *buf, int buflen, uint32 histid); void adjust_cursor_group(); void adjust_cursor_idx(); int center_view(viewer_pos p); void clear_subs(); bool compeq_viewer_pos(uformat_viewer_pos *a, uformat_viewer_pos *b); void check_cursor_visibility(); void clear_viewer_pos(uformat_viewer_pos *p); int cursor_left(); int cursor_right(); int cursor_down(int n); int cursor_up(int n); int cursor_home(); int cursor_end(); void cursor_tab(); void cursorline_dirty(); void cursorline_get(); virtual int cursormicro_forward(); virtual int cursormicro_backward(); virtual int cursormicroedit_forward(); bool edit_end(); bool edit_input(byte b); int edit_input_c2h(byte b); int edit_input_c2d(byte b); void edit_input_correctpos(); bool edit_start(); bool edit_update(); bool edit(); bool find_first_tag(uformat_viewer_pos *p, int limit); bool find_first_edit_tag_with_offset(uformat_viewer_pos *p, int limit, FileOfs offset); void focus_cursor(); vcp getcolor_tag(uint pal_index); bool get_current_tag(char **tag); bool get_current_tag_size(uint32 *size); vcp get_tag_color_edit(FileOfs tag_offset, uint size, bool atcursoroffset, bool iscursor); int next_line(uformat_viewer_pos *p, int n); int prev_line(uformat_viewer_pos *p, int n); void print_tagstring(int x, int y, int maxlen, int xscroll, char *tagstring, bool cursor_in_line); virtual bool ref(); bool ref_desc(ID id, FileOfs offset, uint size, bool bigendian); bool ref_flags(ID id, FileOfs offset); virtual bool ref_sel(LINE_ID *id); virtual void reloadpalette(); uint render_tagstring(char *chars, vcp *colors, uint maxlen, char *tagstring, bool cursor_in_line); void render_tagstring_desc(const char **string, int *length, vcp *tag_color, char *tag, uint size, bool bigendian, bool is_cursor); uint render_tagstring_single(char *chars, vcp *colors, uint maxlen, uint offset, const char *text, uint len, vcp color); void scroll_up(int n); void scroll_down(int n); void select_mode_off(); void select_mode_on(); void select_mode_pre(); void select_mode_post(bool lastpos); bool set_cursor(uformat_viewer_pos p); void update_micropos(); void update_misc_info(); void update_visual_info(); void update_ypos();public: uint search_caps; void init(Bounds *b, const char *desc, int caps, File *file, ht_format_group *format_group); virtual void done();/* overwritten */ virtual void clear_viewer_pos(viewer_pos *p); virtual void draw(); virtual bool get_current_offset(FileOfs *offset); virtual bool get_current_pos(viewer_pos *pos); virtual bool goto_offset(FileOfs offset, bool save_vstate); virtual bool goto_pos(viewer_pos pos, bool save_vstate); virtual void handlemsg(htmsg *msg); virtual ht_search_result *psearch(ht_search_request *search, FileOfs start, FileOfs end); virtual void pselect_add(FileOfs start, FileOfs end); virtual void pselect_get(FileOfs *start, FileOfs *end); virtual void pselect_set(FileOfs start, FileOfs end); virtual uint pwrite(FileOfs ofs, void *buf, uint size); virtual bool qword_to_offset(uint64 q, FileOfs *ofs); virtual ht_search_result *vsearch(ht_search_request *search, viewer_pos start, viewer_pos end);/* new */ virtual bool compeq_viewer_pos(viewer_pos *a, viewer_pos *b); void complete_init(); virtual void insertsub(ht_sub *sub); void sendsubmsg(int msg); void sendsubmsg(htmsg *msg);};/* * CLASS ht_sub *//* search results */#define SR_NOT_FOUND 0#define SR_FOUND 1#define SR_NOT_SUPPORTED 2class ht_sub: public Object {protected: File *file;public: ht_uformat_viewer *uformat_viewer; ht_sub *prev, *next; void init(File *file);/* new */ virtual bool convert_ofs_to_id(const FileOfs offset, LINE_ID *line_id); virtual bool convert_id_to_ofs(const LINE_ID line_id, FileOfs *offset); virtual bool closest_line_id(LINE_ID *line_id); virtual void first_line_id(LINE_ID *line_id); virtual bool getline(char *line, int maxlen, const LINE_ID line_id); virtual void handlemsg(htmsg *msg); virtual void last_line_id(LINE_ID *line_id); virtual int next_line_id(LINE_ID *line_id, int n); virtual int prev_line_id(LINE_ID *line_id, int n); virtual bool ref(LINE_ID *id); virtual ht_search_result *search(ht_search_request *search, FileOfs start, FileOfs end);};/* * CLASS ht_linear_sub */class ht_linear_sub: public ht_sub {protected: FileOfs fofs; FileOfs fsize;public: void init(File *file, FileOfs offset, FileOfs size);/* overwritten */ virtual void handlemsg(htmsg *msg); virtual ht_search_result *search(ht_search_request *search, FileOfs start, FileOfs end);};/* * CLASS ht_hex_sub */class ht_hex_sub: public ht_linear_sub {protected: uint disp; uint line_length; uint uid;public: void init(File *file, FileOfs ofs, FileOfs size, uint line_length, uint uid, int disp=-1); int get_line_length(); void set_line_length(uint line_length); int get_disp(); void set_disp(uint disp); /* overwritten */ virtual bool convert_ofs_to_id(const FileOfs offset, LINE_ID *line_id); virtual bool convert_id_to_ofs(const LINE_ID line_id, FileOfs *offset); virtual void first_line_id(LINE_ID *line_id); virtual bool getline(char *line, int maxlen, const LINE_ID line_id); virtual void last_line_id(LINE_ID *line_id); virtual int next_line_id(LINE_ID *line_id, int n); virtual int prev_line_id(LINE_ID *line_id, int n);};/* * CLASS ht_mask_sub */struct ht_mask_ptable { const char *desc; const char *fields;}; class ht_mask_sub: public ht_sub {protected: Array masks; uint uid;public: ht_mask_sub(): masks(true) {} void init(File *file, uint uid);/* overwritten */ virtual void first_line_id(LINE_ID *line_id); virtual bool getline(char *line, int maxlen, const LINE_ID line_id); virtual void last_line_id(LINE_ID *line_id); virtual int next_line_id(LINE_ID *line_id, int n); virtual int prev_line_id(LINE_ID *line_id, int n);/* new */ virtual void add_mask(const char *tagstr); virtual void add_mask_table(char **tagstr); virtual void add_staticmask(const char *statictag_str, FileOfs reloc, bool std_bigendian); virtual void add_staticmask_table(char **statictag_table, FileOfs reloc, bool std_bigendian); virtual void add_staticmask_ptable(ht_mask_ptable *statictag_ptable, FileOfs reloc, bool std_bigendian);};/* * CLASS ht_layer_sub */class ht_layer_sub: public ht_sub {protected: ht_sub *sub; bool own_sub;public: void init(File *file, ht_sub *sub, bool own_sub = true); virtual void done();/* overwritten */ virtual bool convert_ofs_to_id(const FileOfs offset, LINE_ID *line_id); virtual bool convert_id_to_ofs(const LINE_ID line_id, FileOfs *offset); virtual bool closest_line_id(LINE_ID *line_id); virtual void first_line_id(LINE_ID *line_id); virtual bool getline(char *line, int maxlen, const LINE_ID line_id); virtual void handlemsg(htmsg *msg); virtual void last_line_id(LINE_ID *line_id); virtual int next_line_id(LINE_ID *line_id, int n); virtual int prev_line_id(LINE_ID *line_id, int n); virtual bool ref(LINE_ID *id); virtual ht_search_result *search(ht_search_request *search, FileOfs start, FileOfs end);};/* * CLASS ht_collapsable_sub */class ht_collapsable_sub: public ht_layer_sub {protected: char *nodestring; bool collapsed; LINE_ID fid; LINE_ID myfid;public: void init(File *file, ht_sub *sub, bool own_sub, const char *nodename, bool collapsed); virtual void done();/* new */ virtual bool convert_ofs_to_id(const FileOfs offset, LINE_ID *line_id); virtual bool convert_id_to_ofs(const LINE_ID line_id, FileOfs *offset); virtual void first_line_id(LINE_ID *line_id); virtual bool getline(char *line, int maxlen, const LINE_ID line_id); virtual void last_line_id(LINE_ID *line_id); virtual int next_line_id(LINE_ID *line_id, int n); virtual int prev_line_id(LINE_ID *line_id, int n); virtual bool ref(LINE_ID *id); virtual ht_search_result *search(ht_search_request *search, FileOfs start, FileOfs end);};/* * CLASS ht_group_sub */class ht_group_sub: public ht_sub {protected: Container *subs;public: void init(File *file); virtual void done();/* overwritten */ virtual bool convert_ofs_to_id(const FileOfs offset, LINE_ID *line_id); virtual bool convert_id_to_ofs(const LINE_ID line_id, FileOfs *offset); virtual void first_line_id(LINE_ID *line_id); virtual bool getline(char *line, int maxlen, const LINE_ID line_id); virtual void handlemsg(htmsg *msg); virtual void last_line_id(LINE_ID *line_id); virtual int next_line_id(LINE_ID *line_id, int n); virtual int prev_line_id(LINE_ID *line_id, int n); virtual bool ref(LINE_ID *id); virtual ht_search_result *search(ht_search_request *search, FileOfs start, FileOfs end);/* new */ void insertsub(ht_sub *sub);};ht_search_result *linear_expr_search(ht_search_request *search, FileOfs start, FileOfs end, ht_sub *sub, ht_uformat_viewer *ufv, FileOfs fofs, FileOfs fsize);ht_search_result *linear_bin_search(ht_search_request *search, FileOfs start, FileOfs end, File *file, FileOfs fofs, FileOfs fsize);void clear_line_id(LINE_ID *l);bool compeq_line_id(const LINE_ID &a, const LINE_ID &b);#endif /* __HTFORMAT_H__ */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -