00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00018
00019 #ifndef NET_INSTAWEB_REWRITER_PUBLIC_CSS_IMAGE_REWRITER_H_
00020 #define NET_INSTAWEB_REWRITER_PUBLIC_CSS_IMAGE_REWRITER_H_
00021
00022 #include <cstddef>
00023
00024 #include "net/instaweb/rewriter/public/css_filter.h"
00025 #include "net/instaweb/util/public/basictypes.h"
00026
00027 namespace Css {
00028
00029 class Values;
00030
00031 }
00032
00033 namespace net_instaweb {
00034
00035 class CacheExtender;
00036 class CssHierarchy;
00037 class GoogleUrl;
00038 class ImageCombineFilter;
00039 class ImageRewriteFilter;
00040 class MessageHandler;
00041 class RewriteContext;
00042 class RewriteDriver;
00043 class Statistics;
00044
00045 class CssImageRewriter {
00046 public:
00047 CssImageRewriter(CssFilter::Context* context,
00048 CssFilter* filter,
00049 RewriteDriver* driver,
00050 CacheExtender* cache_extender,
00051 ImageRewriteFilter* image_rewriter,
00052 ImageCombineFilter* image_combiner);
00053 ~CssImageRewriter();
00054
00055 static void Initialize(Statistics* statistics);
00056
00061 bool RewriteCss(int64 image_inline_max_bytes,
00062 RewriteContext* parent,
00063 CssHierarchy* hierarchy,
00064 MessageHandler* handler);
00065
00067 bool FlatteningEnabled() const;
00068
00070 bool RewritesEnabled(int64 image_inline_max_bytes) const;
00071
00072 private:
00073 void RewriteImport(RewriteContext* parent,
00074 CssHierarchy* hierarchy);
00075
00076 void RewriteImage(int64 image_inline_max_bytes,
00077 const GoogleUrl& trim_url,
00078 const GoogleUrl& original_url,
00079 RewriteContext* parent,
00080 Css::Values* values, size_t value_index,
00081 MessageHandler* handler);
00082
00084 CssFilter* filter_;
00085
00087 RewriteDriver* driver_;
00088
00090 CssFilter::Context* context_;
00091
00095 CacheExtender* cache_extender_;
00096 ImageCombineFilter* image_combiner_;
00097 ImageRewriteFilter* image_rewriter_;
00098
00099 DISALLOW_COPY_AND_ASSIGN(CssImageRewriter);
00100 };
00101
00102 }
00103
00104 #endif ///< NET_INSTAWEB_REWRITER_PUBLIC_CSS_IMAGE_REWRITER_H_