diff --git a/xfa/src/fxbarcode/BC_BinaryBitmap.cpp b/xfa/src/fxbarcode/BC_BinaryBitmap.cpp
index 1880670..50a8712 100644
--- a/xfa/src/fxbarcode/BC_BinaryBitmap.cpp
+++ b/xfa/src/fxbarcode/BC_BinaryBitmap.cpp
@@ -47,12 +47,6 @@
   }
   return m_matrix;
 }
-FX_BOOL CBC_BinaryBitmap::IsCropSupported() {
-  return m_binarizer->GetLuminanceSource()->IsCropSupported();
-}
-FX_BOOL CBC_BinaryBitmap::IsRotateSupported() {
-  return m_binarizer->GetLuminanceSource()->IsRotateSupported();
-}
 CBC_CommonBitArray* CBC_BinaryBitmap::GetBlackRow(int32_t y,
                                                   CBC_CommonBitArray* row,
                                                   int32_t& e) {
diff --git a/xfa/src/fxbarcode/BC_BinaryBitmap.h b/xfa/src/fxbarcode/BC_BinaryBitmap.h
index 4d79fa7..2e7feb9 100644
--- a/xfa/src/fxbarcode/BC_BinaryBitmap.h
+++ b/xfa/src/fxbarcode/BC_BinaryBitmap.h
@@ -21,8 +21,6 @@
                                   CBC_CommonBitArray* row,
                                   int32_t& e);
   CBC_CommonBitMatrix* GetBlackMatrix(int32_t& e);
-  FX_BOOL IsCropSupported();
-  FX_BOOL IsRotateSupported();
 
  private:
   CBC_Binarizer* m_binarizer;
diff --git a/xfa/src/fxbarcode/BC_BufferedImageLuminanceSource.cpp b/xfa/src/fxbarcode/BC_BufferedImageLuminanceSource.cpp
index 01c4f6c..d6a83c2 100644
--- a/xfa/src/fxbarcode/BC_BufferedImageLuminanceSource.cpp
+++ b/xfa/src/fxbarcode/BC_BufferedImageLuminanceSource.cpp
@@ -167,21 +167,3 @@
   }
   return matirx;
 }
-FX_BOOL CBC_BufferedImageLuminanceSource::IsCropSupported() {
-  return TRUE;
-}
-FX_BOOL CBC_BufferedImageLuminanceSource::IsRotateSupported() {
-  return TRUE;
-}
-CBC_LuminanceSource* CBC_BufferedImageLuminanceSource::Crop(int32_t left,
-                                                            int32_t top,
-                                                            int32_t width,
-                                                            int32_t height) {
-  return NULL;
-}
-CBC_LuminanceSource* CBC_BufferedImageLuminanceSource::RotateCounterClockwise(
-    int32_t& e) {
-  if (!IsRotateSupported())
-    e = BCExceptionRotateNotSupported;
-  return NULL;
-}
diff --git a/xfa/src/fxbarcode/BC_BufferedImageLuminanceSource.h b/xfa/src/fxbarcode/BC_BufferedImageLuminanceSource.h
index 2799df5..fe9d5c8 100644
--- a/xfa/src/fxbarcode/BC_BufferedImageLuminanceSource.h
+++ b/xfa/src/fxbarcode/BC_BufferedImageLuminanceSource.h
@@ -10,19 +10,12 @@
 class CBC_BufferedImageLuminanceSource;
 class CBC_BufferedImageLuminanceSource : public CBC_LuminanceSource {
  public:
-  CBC_BufferedImageLuminanceSource(const CFX_WideString& filename);
-  CBC_BufferedImageLuminanceSource(CFX_DIBitmap* pBitmap);
+  explicit CBC_BufferedImageLuminanceSource(const CFX_WideString& filename);
+  explicit CBC_BufferedImageLuminanceSource(CFX_DIBitmap* pBitmap);
   virtual ~CBC_BufferedImageLuminanceSource();
-  CBC_LuminanceSource* RotateCounterClockwise(int32_t& e);
-  CBC_LuminanceSource* Crop(int32_t left,
-                            int32_t top,
-                            int32_t width,
-                            int32_t height);
 
   CFX_ByteArray* GetRow(int32_t y, CFX_ByteArray& row, int32_t& e);
   CFX_ByteArray* GetMatrix();
-  FX_BOOL IsCropSupported();
-  FX_BOOL IsRotateSupported();
   virtual void Init(int32_t& e);
 
  private:
diff --git a/xfa/src/fxbarcode/BC_LuminanceSource.h b/xfa/src/fxbarcode/BC_LuminanceSource.h
index abf2d23..87c7d3d 100644
--- a/xfa/src/fxbarcode/BC_LuminanceSource.h
+++ b/xfa/src/fxbarcode/BC_LuminanceSource.h
@@ -16,10 +16,6 @@
 
   virtual CFX_ByteArray* GetRow(int32_t y, CFX_ByteArray& row, int32_t& e) = 0;
   virtual CFX_ByteArray* GetMatrix() = 0;
-  virtual FX_BOOL IsCropSupported() { return FALSE; }
-  virtual FX_BOOL IsRotateSupported() { return FALSE; }
-
-  virtual CBC_LuminanceSource* RotateCounterClockwise(int32_t& e) = 0;
 
  protected:
   int32_t m_width;
