Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(100)

Unified Diff: ui/gfx/color_analysis.cc

Issue 649203003: Type conversion fixes, ui/gfx/ edition. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Fix compile Created 6 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: ui/gfx/color_analysis.cc
diff --git a/ui/gfx/color_analysis.cc b/ui/gfx/color_analysis.cc
index f23da853e43f119bf7ebb7e38d95db9f62f5b22d..354ca84bdabee492c8309c3d7262b2e718985eed 100644
--- a/ui/gfx/color_analysis.cc
+++ b/ui/gfx/color_analysis.cc
@@ -40,26 +40,26 @@ class KMeanCluster {
}
void Reset() {
- centroid[0] = centroid[1] = centroid[2] = 0;
- aggregate[0] = aggregate[1] = aggregate[2] = 0;
- counter = 0;
- weight = 0;
+ centroid_[0] = centroid_[1] = centroid_[2] = 0;
+ aggregate_[0] = aggregate_[1] = aggregate_[2] = 0;
+ counter_ = 0;
+ weight_ = 0;
}
inline void SetCentroid(uint8_t r, uint8_t g, uint8_t b) {
- centroid[0] = r;
- centroid[1] = g;
- centroid[2] = b;
+ centroid_[0] = r;
+ centroid_[1] = g;
+ centroid_[2] = b;
}
inline void GetCentroid(uint8_t* r, uint8_t* g, uint8_t* b) {
- *r = centroid[0];
- *g = centroid[1];
- *b = centroid[2];
+ *r = centroid_[0];
+ *g = centroid_[1];
+ *b = centroid_[2];
}
inline bool IsAtCentroid(uint8_t r, uint8_t g, uint8_t b) {
- return r == centroid[0] && g == centroid[1] && b == centroid[2];
+ return r == centroid_[0] && g == centroid_[1] && b == centroid_[2];
}
// Recomputes the centroid of the cluster based on the aggregate data. The
@@ -67,30 +67,30 @@ class KMeanCluster {
// purposes. The aggregate and counter are then cleared to be ready for the
// next iteration.
inline void RecomputeCentroid() {
- if (counter > 0) {
- centroid[0] = aggregate[0] / counter;
- centroid[1] = aggregate[1] / counter;
- centroid[2] = aggregate[2] / counter;
-
- aggregate[0] = aggregate[1] = aggregate[2] = 0;
- weight = counter;
- counter = 0;
+ if (counter_ > 0) {
+ centroid_[0] = static_cast<uint8_t>(aggregate_[0] / counter_);
+ centroid_[1] = static_cast<uint8_t>(aggregate_[1] / counter_);
+ centroid_[2] = static_cast<uint8_t>(aggregate_[2] / counter_);
+
+ aggregate_[0] = aggregate_[1] = aggregate_[2] = 0;
+ weight_ = counter_;
+ counter_ = 0;
}
}
inline void AddPoint(uint8_t r, uint8_t g, uint8_t b) {
- aggregate[0] += r;
- aggregate[1] += g;
- aggregate[2] += b;
- ++counter;
+ aggregate_[0] += r;
+ aggregate_[1] += g;
+ aggregate_[2] += b;
+ ++counter_;
}
// Just returns the distance^2. Since we are comparing relative distances
// there is no need to perform the expensive sqrt() operation.
inline uint32_t GetDistanceSqr(uint8_t r, uint8_t g, uint8_t b) {
- return (r - centroid[0]) * (r - centroid[0]) +
- (g - centroid[1]) * (g - centroid[1]) +
- (b - centroid[2]) * (b - centroid[2]);
+ return (r - centroid_[0]) * (r - centroid_[0]) +
+ (g - centroid_[1]) * (g - centroid_[1]) +
+ (b - centroid_[2]) * (b - centroid_[2]);
}
// In order to determine if we have hit convergence or not we need to see
@@ -98,18 +98,18 @@ class KMeanCluster {
// not the centroid is the same as the aggregate sum of points that will be
// used to generate the next centroid.
inline bool CompareCentroidWithAggregate() {
- if (counter == 0)
+ if (counter_ == 0)
return false;
- return aggregate[0] / counter == centroid[0] &&
- aggregate[1] / counter == centroid[1] &&
- aggregate[2] / counter == centroid[2];
+ return aggregate_[0] / counter_ == centroid_[0] &&
+ aggregate_[1] / counter_ == centroid_[1] &&
+ aggregate_[2] / counter_ == centroid_[2];
}
// Returns the previous counter, which is used to determine the weight
// of the cluster for sorting.
inline uint32_t GetWeight() const {
- return weight;
+ return weight_;
}
static bool SortKMeanClusterByWeight(const KMeanCluster& a,
@@ -118,16 +118,16 @@ class KMeanCluster {
}
private:
- uint8_t centroid[3];
+ uint8_t centroid_[3];
// Holds the sum of all the points that make up this cluster. Used to
// generate the next centroid as well as to check for convergence.
- uint32_t aggregate[3];
- uint32_t counter;
+ uint32_t aggregate_[3];
+ uint32_t counter_;
// The weight of the cluster, determined by how many points were used
// to generate the previous centroid.
- uint32_t weight;
+ uint32_t weight_;
};
// Un-premultiplies each pixel in |bitmap| into an output |buffer|.
@@ -468,24 +468,33 @@ gfx::Matrix3F ComputeColorCovariance(const SkBitmap& bitmap) {
// of R, G and B channels with (R, G, B)
int pixel_n = bitmap.width() * bitmap.height();
covariance.set(
- (static_cast<double>(rr_sum) / pixel_n -
- static_cast<double>(r_sum * r_sum) / pixel_n / pixel_n),
- (static_cast<double>(rg_sum) / pixel_n -
- static_cast<double>(r_sum * g_sum) / pixel_n / pixel_n),
- (static_cast<double>(rb_sum) / pixel_n -
- static_cast<double>(r_sum * b_sum) / pixel_n / pixel_n),
- (static_cast<double>(rg_sum) / pixel_n -
- static_cast<double>(r_sum * g_sum) / pixel_n / pixel_n),
- (static_cast<double>(gg_sum) / pixel_n -
- static_cast<double>(g_sum * g_sum) / pixel_n / pixel_n),
- (static_cast<double>(gb_sum) / pixel_n -
- static_cast<double>(g_sum * b_sum) / pixel_n / pixel_n),
- (static_cast<double>(rb_sum) / pixel_n -
- static_cast<double>(r_sum * b_sum) / pixel_n / pixel_n),
- (static_cast<double>(gb_sum) / pixel_n -
- static_cast<double>(g_sum * b_sum) / pixel_n / pixel_n),
- (static_cast<double>(bb_sum) / pixel_n -
- static_cast<double>(b_sum * b_sum) / pixel_n / pixel_n));
+ static_cast<float>(
+ static_cast<double>(rr_sum) / pixel_n -
+ static_cast<double>(r_sum * r_sum) / pixel_n / pixel_n),
+ static_cast<float>(
+ static_cast<double>(rg_sum) / pixel_n -
+ static_cast<double>(r_sum * g_sum) / pixel_n / pixel_n),
+ static_cast<float>(
+ static_cast<double>(rb_sum) / pixel_n -
+ static_cast<double>(r_sum * b_sum) / pixel_n / pixel_n),
+ static_cast<float>(
+ static_cast<double>(rg_sum) / pixel_n -
+ static_cast<double>(r_sum * g_sum) / pixel_n / pixel_n),
+ static_cast<float>(
+ static_cast<double>(gg_sum) / pixel_n -
+ static_cast<double>(g_sum * g_sum) / pixel_n / pixel_n),
+ static_cast<float>(
+ static_cast<double>(gb_sum) / pixel_n -
+ static_cast<double>(g_sum * b_sum) / pixel_n / pixel_n),
+ static_cast<float>(
+ static_cast<double>(rb_sum) / pixel_n -
+ static_cast<double>(r_sum * b_sum) / pixel_n / pixel_n),
+ static_cast<float>(
+ static_cast<double>(gb_sum) / pixel_n -
+ static_cast<double>(g_sum * b_sum) / pixel_n / pixel_n),
+ static_cast<float>(
+ static_cast<double>(bb_sum) / pixel_n -
+ static_cast<double>(b_sum * b_sum) / pixel_n / pixel_n));
return covariance;
}
@@ -529,9 +538,9 @@ bool ApplyColorReduction(const SkBitmap& source_bitmap,
else
c = source_color_row[x];
- float r = SkColorGetR(c);
- float g = SkColorGetG(c);
- float b = SkColorGetB(c);
+ uint8_t r = SkColorGetR(c);
+ uint8_t g = SkColorGetG(c);
+ uint8_t b = SkColorGetB(c);
float gray_level = tr * r + tg * g + tb * b;
max_val = std::max(max_val, gray_level);
min_val = std::min(min_val, gray_level);
@@ -542,7 +551,7 @@ bool ApplyColorReduction(const SkBitmap& source_bitmap,
float scale = 0.0;
t0 = -min_val;
if (max_val > min_val)
- scale = 255.0 / (max_val - min_val);
+ scale = 255.0f / (max_val - min_val);
t0 *= scale;
tr *= scale;
tg *= scale;
@@ -561,9 +570,9 @@ bool ApplyColorReduction(const SkBitmap& source_bitmap,
else
c = source_color_row[x];
- float r = SkColorGetR(c);
- float g = SkColorGetG(c);
- float b = SkColorGetB(c);
+ uint8_t r = SkColorGetR(c);
+ uint8_t g = SkColorGetG(c);
+ uint8_t b = SkColorGetB(c);
float gl = t0 + tr * r + tg * g + tb * b;
if (gl < 0)

Powered by Google App Engine
This is Rietveld 408576698