亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? jcapistd.cpp

?? Windows 圖形編程 書籍
?? CPP
字號:
//-------------------------------------------------------------------------//
//          Windows Graphics Programming: Win32 GDI and DirectDraw         //
//                        ISBN  0-13-086985-6                              //
//                                                                         //
//  Modified by: Yuan, Feng                             www.fengyuan.com   //
//  Changes    : C++, exception, in-memory source, BGR byte order          //
//  Version    : 1.00.000, May 31, 2000                                    //
//-------------------------------------------------------------------------//

/*
 * jcapistd.c
 *
 * Copyright (C) 1994-1996, Thomas G. Lane.
 * This file is part of the Independent JPEG Group's software.
 * For conditions of distribution and use, see the accompanying README file.
 *
 * This file contains application interface code for the compression half
 * of the JPEG library.  These are the "standard" API routines that are
 * used in the normal full-compression case.  They are not used by a
 * transcoding-only application.  Note that if an application links in
 * jpeg_start_compress, it will end up linking in the entire compressor.
 * We thus must separate this file from jcapimin.c to avoid linking the
 * whole compression library into a transcoder.
 */

#define JPEG_INTERNALS
#include "jinclude.h"
#include "jpeglib.h"


/*
 * Compression initialization.
 * Before calling this, all parameters and a data destination must be set up.
 *
 * We require a write_all_tables parameter as a failsafe check when writing
 * multiple datastreams from the same compression object.  Since prior runs
 * will have left all the tables marked sent_table=TRUE, a subsequent run
 * would emit an abbreviated stream (no tables) by default.  This may be what
 * is wanted, but for safety's sake it should not be the default behavior:
 * programmers should have to make a deliberate choice to emit abbreviated
 * images.  Therefore the documentation and examples should encourage people
 * to pass write_all_tables=TRUE; then it will take active thought to do the
 * wrong thing.
 */

GLOBAL(void)
jpeg_start_compress (j_compress_ptr cinfo, boolean write_all_tables)
{
  if (cinfo->global_state != CSTATE_START)
    cinfo->ERREXIT1(JERR_BAD_STATE, cinfo->global_state);

  if (write_all_tables)
    jpeg_suppress_tables(cinfo, FALSE);	/* mark all tables to be written */

  /* (Re)initialize error mgr and destination modules */
  cinfo->err->reset_error_mgr ();
  (*cinfo->dest->init_destination) (cinfo);
  /* Perform master selection of active modules */
  jinit_compress_master(cinfo);
  /* Set up for the first pass */
  (*cinfo->master->prepare_for_pass) (cinfo);
  /* Ready for application to drive first pass through jpeg_write_scanlines
   * or jpeg_write_raw_data.
   */
  cinfo->next_scanline = 0;
  cinfo->global_state = (cinfo->raw_data_in ? CSTATE_RAW_OK : CSTATE_SCANNING);
}


/*
 * Write some scanlines of data to the JPEG compressor.
 *
 * The return value will be the number of lines actually written.
 * This should be less than the supplied num_lines only in case that
 * the data destination module has requested suspension of the compressor,
 * or if more than image_height scanlines are passed in.
 *
 * Note: we warn about excess calls to jpeg_write_scanlines() since
 * this likely signals an application programmer error.  However,
 * excess scanlines passed in the last valid call are *silently* ignored,
 * so that the application need not adjust num_lines for end-of-image
 * when using a multiple-scanline buffer.
 */

GLOBAL(JDIMENSION)
jpeg_write_scanlines (j_compress_ptr cinfo, JSAMPARRAY scanlines,
		      JDIMENSION num_lines)
{
  JDIMENSION row_ctr, rows_left;

  if (cinfo->global_state != CSTATE_SCANNING)
    cinfo->ERREXIT1(JERR_BAD_STATE, cinfo->global_state);
  if (cinfo->next_scanline >= cinfo->image_height)
    cinfo->WARNMS(JWRN_TOO_MUCH_DATA);

  /* Call progress monitor hook if present */
  if (cinfo->progress != NULL) {
    cinfo->progress->pass_counter = (long) cinfo->next_scanline;
    cinfo->progress->pass_limit = (long) cinfo->image_height;
    cinfo->progress->progress_monitor(cinfo);
  }

  /* Give master control module another chance if this is first call to
   * jpeg_write_scanlines.  This lets output of the frame/scan headers be
   * delayed so that application can write COM, etc, markers between
   * jpeg_start_compress and jpeg_write_scanlines.
   */
  if (cinfo->master->call_pass_startup)
    (*cinfo->master->pass_startup) (cinfo);

  /* Ignore any extra scanlines at bottom of image. */
  rows_left = cinfo->image_height - cinfo->next_scanline;
  if (num_lines > rows_left)
    num_lines = rows_left;

  row_ctr = 0;
  (*cinfo->main->process_data) (cinfo, scanlines, &row_ctr, num_lines);
  cinfo->next_scanline += row_ctr;
  return row_ctr;
}


/*
 * Alternate entry point to write raw data.
 * Processes exactly one iMCU row per call, unless suspended.
 */

GLOBAL(JDIMENSION)
jpeg_write_raw_data (j_compress_ptr cinfo, JSAMPIMAGE data,
		     JDIMENSION num_lines)
{
  JDIMENSION lines_per_iMCU_row;

  if (cinfo->global_state != CSTATE_RAW_OK)
    cinfo->ERREXIT1(JERR_BAD_STATE, cinfo->global_state);
  if (cinfo->next_scanline >= cinfo->image_height) {
    cinfo->WARNMS(JWRN_TOO_MUCH_DATA);
    return 0;
  }

  /* Call progress monitor hook if present */
  if (cinfo->progress != NULL) {
    cinfo->progress->pass_counter = (long) cinfo->next_scanline;
    cinfo->progress->pass_limit = (long) cinfo->image_height;
    cinfo->progress->progress_monitor(cinfo);
  }

  /* Give master control module another chance if this is first call to
   * jpeg_write_raw_data.  This lets output of the frame/scan headers be
   * delayed so that application can write COM, etc, markers between
   * jpeg_start_compress and jpeg_write_raw_data.
   */
  if (cinfo->master->call_pass_startup)
    (*cinfo->master->pass_startup) (cinfo);

  /* Verify that at least one iMCU row has been passed. */
  lines_per_iMCU_row = cinfo->max_v_samp_factor * DCTSIZE;
  if (num_lines < lines_per_iMCU_row)
    cinfo->ERREXIT(JERR_BUFFER_SIZE);

  /* Directly compress the row. */
  if (! (*cinfo->coef->compress_data) (cinfo, data)) {
    /* If compressor did not consume the whole row, suspend processing. */
    return 0;
  }

  /* OK, we processed one iMCU row. */
  cinfo->next_scanline += lines_per_iMCU_row;
  return lines_per_iMCU_row;
}

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
色哟哟精品一区| 青青青爽久久午夜综合久久午夜| 国产精品一区免费视频| 精品久久久久av影院| 国产综合成人久久大片91| 欧美白人最猛性xxxxx69交| 韩国女主播一区二区三区| 久久精品一区二区| 成人国产精品免费| 亚洲综合视频网| 在线成人小视频| 国产麻豆成人精品| 亚洲欧洲三级电影| 欧美性受xxxx黑人xyx性爽| 日韩不卡在线观看日韩不卡视频| 欧美一区二区不卡视频| 国内国产精品久久| 亚洲女同女同女同女同女同69| 欧美日韩视频在线观看一区二区三区| 麻豆免费看一区二区三区| 久久精品人人做人人综合| 一本一本久久a久久精品综合麻豆| 亚洲国产一区二区在线播放| 日韩视频免费观看高清在线视频| 激情文学综合插| 亚洲精品乱码久久久久| 91精品国产综合久久精品app| 国产在线一区二区综合免费视频| 国产精品久久午夜| 在线综合+亚洲+欧美中文字幕| 国产精品一区二区在线观看网站| 亚洲色图色小说| 51精品国自产在线| 成人av在线资源网站| 日韩激情一二三区| 国产精品女主播av| 日韩精品一区二区三区视频播放| 不卡视频免费播放| 久久国产综合精品| 亚洲一区二区三区影院| 国产亚洲一本大道中文在线| 欧美日韩在线三区| www.激情成人| 久久国产精品区| 一个色在线综合| 精品少妇一区二区| 欧美日韩国产一区| 99精品视频在线观看免费| 美女在线视频一区| 亚洲二区在线视频| 亚洲女同女同女同女同女同69| 久久你懂得1024| 日韩天堂在线观看| 欧美写真视频网站| av在线综合网| 国产91色综合久久免费分享| 激情综合色综合久久综合| 婷婷国产在线综合| 一区二区三区日韩欧美精品| 国产精品三级视频| 久久久久国产精品人| 日韩一区二区免费高清| 欧美伊人久久大香线蕉综合69| 成人aaaa免费全部观看| 国产福利一区二区| 激情五月激情综合网| 看电视剧不卡顿的网站| 日韩av电影天堂| 香蕉久久一区二区不卡无毒影院 | 日韩美女精品在线| 久久久精品黄色| 精品免费国产一区二区三区四区| 欧洲精品一区二区三区在线观看| 北条麻妃国产九九精品视频| 懂色av中文一区二区三区 | 国产女主播一区| 欧美精品一区二区久久久 | 日韩一区二区三区观看| 欧美日本一道本| 欧美日韩美女一区二区| 欧美日韩大陆一区二区| 欧美精品1区2区3区| 欧美精品黑人性xxxx| 91精品在线一区二区| 91精品国产综合久久香蕉的特点| 777色狠狠一区二区三区| 日韩一区二区在线免费观看| 精品久久人人做人人爰| 欧美精品一区二| 国产欧美日韩卡一| 亚洲人成亚洲人成在线观看图片| 亚洲视频免费在线| 亚洲一区二区三区三| 午夜视黄欧洲亚洲| 青青草原综合久久大伊人精品| 久久精品国产99久久6| 高清国产午夜精品久久久久久| 99视频热这里只有精品免费| 91国内精品野花午夜精品| 在线不卡欧美精品一区二区三区| 欧美一区二区日韩| 久久久久久久综合狠狠综合| 国产精品每日更新| 亚洲综合在线第一页| 全部av―极品视觉盛宴亚洲| 在线观看亚洲精品| 欧美日韩一区二区三区高清 | 欧美影片第一页| 欧美一区二区在线视频| 久久久久久久久伊人| 亚洲伦理在线免费看| 久久精品久久久精品美女| 成人性生交大合| 欧美自拍丝袜亚洲| 久久蜜臀中文字幕| 亚洲人成电影网站色mp4| 日本免费新一区视频| 国产成人啪午夜精品网站男同| 色综合久久88色综合天天免费| 欧美高清视频www夜色资源网| 国产亚洲精品中文字幕| 亚洲线精品一区二区三区八戒| 国产在线一区观看| 欧美日韩专区在线| 亚洲国产精品成人综合| 日韩电影一区二区三区四区| 从欧美一区二区三区| 91精品国模一区二区三区| 自拍偷拍亚洲综合| 国产原创一区二区三区| 在线不卡中文字幕| 亚洲色图在线看| 国产成人在线影院| 欧美一区二区三区在线电影| 亚洲欧美日韩国产成人精品影院| 精品一区二区综合| 欧美性生交片4| 中日韩av电影| 精品一区二区三区在线观看| 欧美日韩国产不卡| 中文字幕在线一区免费| 国产一区二区三区在线观看免费| 欧美色图天堂网| 国产精品传媒入口麻豆| 久久草av在线| 91麻豆精品国产91久久久久久久久| 中文字幕在线观看不卡视频| 国产精品一级在线| 日韩欧美在线观看一区二区三区| 夜夜精品视频一区二区| www.在线成人| 亚洲国产精品成人久久综合一区| 韩日av一区二区| 精品国产乱码久久久久久久久| 亚洲成人免费av| 欧美亚洲自拍偷拍| 亚洲欧美影音先锋| 不卡视频一二三四| 国产精品久久久久久妇女6080 | 欧美一区二区三区免费大片| 亚洲一区二区三区四区在线| 91福利视频网站| 亚洲青青青在线视频| 99久久精品免费观看| 国产精品区一区二区三| 成人午夜视频免费看| 国产欧美一区二区精品性色超碰| 国产在线精品不卡| 久久蜜桃av一区二区天堂 | 青青草伊人久久| 日韩三级免费观看| 激情欧美一区二区| 2020国产精品久久精品美国| 国产米奇在线777精品观看| 欧美精品一区二区三区一线天视频| 九九在线精品视频| 久久久综合精品| 成人午夜av电影| 亚洲欧洲日本在线| 色视频欧美一区二区三区| 亚洲大片一区二区三区| 91精品午夜视频| 久草这里只有精品视频| 国产女主播视频一区二区| av电影天堂一区二区在线| 亚洲最大色网站| 欧美日本国产视频| 狠狠网亚洲精品| 18成人在线视频| 欧美三级中文字幕在线观看| 日本不卡在线视频| 久久久av毛片精品| 97精品久久久午夜一区二区三区 | 欧美哺乳videos| 国产91精品精华液一区二区三区 | 成人国产精品免费观看视频| 亚洲国产精品久久一线不卡| 日韩一区二区三区精品视频| 国产成人精品免费| 亚洲一二三区在线观看|