| 255 | } |
| 256 | |
| 257 | void ScreenshotCommandHandler::CropImage(HWND content_window_handle, |
| 258 | LocationInfo element_location) { |
| 259 | RECT viewport_rect; |
| 260 | ::GetWindowRect(content_window_handle, &viewport_rect); |
| 261 | ::OffsetRect(&viewport_rect, |
| 262 | -1 * viewport_rect.left, |
| 263 | -1 * viewport_rect.top); |
| 264 | |
| 265 | POINT element_rect_origin; |
| 266 | element_rect_origin.x = element_location.x; |
| 267 | element_rect_origin.y = element_location.y; |
| 268 | |
| 269 | RECT element_rect = { element_rect_origin.x, |
| 270 | element_rect_origin.y, |
| 271 | element_rect_origin.x + element_location.width, |
| 272 | element_rect_origin.y + element_location.height }; |
| 273 | |
| 274 | RECT screenshot_rect; |
| 275 | ::IntersectRect(&screenshot_rect, &viewport_rect, &element_rect); |
| 276 | |
| 277 | long width = screenshot_rect.right - screenshot_rect.left; |
| 278 | long height = screenshot_rect.bottom - screenshot_rect.top; |
| 279 | |
| 280 | RECT destination_rect = { 0, 0, width, height }; |
| 281 | |
| 282 | CImage* image = new CImage(); |
| 283 | image->Create(width, height, 32); |
| 284 | HDC device_context = image->GetDC(); |
| 285 | this->image_->Draw(device_context, destination_rect, screenshot_rect); |
| 286 | image->ReleaseDC(); |
| 287 | |
| 288 | this->ClearImage(); |
| 289 | this->image_ = new CImage(); |
| 290 | this->image_->Create(width, height, 32); |
| 291 | HDC dc = this->image_->GetDC(); |
| 292 | image->BitBlt(dc, 0, 0); |
| 293 | this->image_->ReleaseDC(); |
| 294 | image->Destroy(); |
| 295 | delete image; |
| 296 | } |
| 297 | |
| 298 | } // namespace webdriver |
no test coverage detected