40 virtual std::string get_name()
const=0;
42 virtual int get_num_extensions()
const;
43 virtual std::string get_extension(
int n)
const;
44 MAKE_SEQ(get_extensions, get_num_extensions, get_extension);
45 virtual std::string get_suggested_extension()
const;
47 MAKE_PROPERTY(name, get_name);
48 MAKE_SEQ_PROPERTY(extensions, get_num_extensions, get_extension);
49 MAKE_PROPERTY(suggested_extension, get_suggested_extension);
52 virtual bool has_magic_number()
const;
53 virtual bool matches_magic_number(
const std::string &magic_number)
const;
55 virtual PNMReader *make_reader(std::istream *file,
bool owns_file =
true,
56 const std::string &magic_number = std::string());
57 virtual PNMWriter *make_writer(std::ostream *file,
bool owns_file =
true);
60 static void init_pnm();
63 static bool _did_init_pnm;
68 static void register_with_read_factory();
78 static void init_type() {
79 TypedWritable::init_type();
81 TypedWritable::get_class_type());
84 return get_class_type();
86 virtual TypeHandle force_init_type() {init_type();
return get_class_type();}